# 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 bottom.
#
# Folks listed as unofficial can't do OWNERS approvals but are good people to
# ask for informal reviews.

# layers
enne@chromium.org
danakj@chromium.org

# mac-specific
ccameron@chromium.org

# scheduling / begin frames
sunnyps@chromium.org

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

# texture uploading
sunnyps@chromium.org

# math / geometry
flackr@chromium.org

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

# animation
flackr@chromium.org
smcgruer@chromium.org

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

# surfaces
enne@chromium.org
kylechar@chromium.org
samans@chromium.org

# input, scrolling
bokan@chromium.org

# general
enne@chromium.org
danakj@chromium.org
vmpstr@chromium.org
piman@chromium.org

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