# For patches touching specific topics, try the topic-specific OWNERS at the
# bottom of the file. For patches that touch multiple areas or if you aren't
# sure, try the more general OWNERS at the top.
#
# Folks listed as unofficial can't do OWNERS approvals but are good people to
# ask for informal reviews.

enne@chromium.org
danakj@chromium.org
vmpstr@chromium.org

# layers / quads / passes
enne@chromium.org
danakj@chromium.org

# ubercompositor
piman@chromium.org
danakj@chromium.org

# mac-specific
ccameron@chromium.org

# scheduling / begin frames
brianderson@chromium.org
skyostil@chromium.org
sunnyps@chromium.org

# texture uploading
brianderson@chromium.org
reveman@chromium.org
skyostil@chromium.org

# tiles, tile management, and raster work
reveman@chromium.org
vmpstr@chromium.org
ericrk@chromium.org

# math / geometry
flackr@chromium.org
vollick@chromium.org

# property trees
ajuma@chromium.org
chrishtr@chromium.org
vollick@chromium.org
weiliangc@chromium.org

# animation
vollick@chromium.org
ajuma@chromium.org
flackr@chromium.org

# images
ericrk@chromium.org
khushalsagar@chromium.org
vmpstr@chromium.org

# we miss you
# jamesr@chromium.org
# nduca@chromium.org
# mithro@mithis.com / tansell@chromium.org

# TEAM: graphics-dev@chromium.org
# COMPONENT: Internals>Compositing
