# 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
pdr@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
pdr@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

# scroll snap
majidvp@chromium.org

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

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