# This file contains the GitLab handle of the maintainers/reviewers for
# a given file:
# https://docs.gitlab.com/ce/user/project/code_owners.html
#
# Consider these as the list of people who want to be involved in MRs
# touching these files/folders, and whom you can ask your questions and
# tag in issues.
#
# As of GitLab 14.3, all features surrounding this file are premium-only,
# which means this file is only read by humans for now.
#
# Paths starting with a `/` are relative to the git root, otherwise they
# can match any substring of the file's path.
# If multiple lines match, only the last one applies; there is no
# accumulation.


##################
# INFRASTRUCTURE #
##################

# Build system - Meson
meson.build @dbaker @eric
/meson_options.txt @dbaker @eric
/docs/meson.rst @dbaker @eric

# Build system - Android
/android/ @roman.stratiienko

# Compatibility headers
/include/c99* @xexaxo
/src/c11/ @eric @lygstate

# Documentation
/docs/ @eric @xexaxo


##########
# COMMON #
##########

# NIR
/src/compiler/nir/ @gfxstrand

# Vulkan
/src/vulkan/ @eric @gfxstrand
/include/vulkan/ @eric @gfxstrand


#############
# PLATFORMS #
#############

# EGL
/src/egl/ @eric @xexaxo
/include/EGL/ @eric @xexaxo

# EGL - Android support
/src/egl/drivers/dri2/platform_android.c @robh @tfiga

# EGL - Device support
/src/egl/drivers/dri2/platform_device.c @xexaxo

# EGL - Wayland support
/src/egl/wayland/ @daniels @eric
/src/egl/drivers/dri2/platform_wayland.c @daniels @eric

# Gallium targets
/src/gallium/targets/ @xexaxo

# GLX
/src/glx/ @ajax
/include/GL/glx* @ajax

# GLVND
/src/egl/main/eglglvnd.c @kbrenneman
/src/egl/main/egldispatchstubs.* @kbrenneman
/src/egl/generate/ @kbrenneman
/src/glx/*glvnd* @kbrenneman

# Haiku
/src/egl/drivers/haiku/ @kallisti5
/src/gallium/frontends/hgl/ @kallisti5
/src/gallium/winsys/sw/hgl/ @kallisti5

# Loader - DRI/classic
/src/loader/ @xexaxo

# Loader - Gallium
/src/gallium/auxiliary/pipe-loader/ @xexaxo
/src/gallium/auxiliary/target-helpers/ @xexaxo

# Vulkan WSI - Display
/src/vulkan/wsi/wsi_common_display.* @keithp
/src/*/vulkan/*_wsi_display.c @keithp


######
# CI #
######

# Broadcom
/src/broadcom/ci/ @jasuarez @chema


###########
# Drivers #
###########

# Asahi
/src/asahi/ @alyssa
/src/gallium/drivers/asahi/ @alyssa

# Broadcom
/src/broadcom/ @itoral @apinheiro
/src/gallium/drivers/v3d/ @itoral @chema @jasuarez
/src/gallium/drivers/vc4/ @itoral @chema @jasuarez

# Freedreno
/src/gallium/drivers/freedreno/ @robclark

# Imagination
/include/drm-uapi/pvr_drm.h @CreativeCylon @frankbinns @MTCoster
/src/imagination/ @CreativeCylon @frankbinns @MTCoster
/src/imagination/rogue/ @simon-perretta-img

# Intel
/include/drm-uapi/i915_drm.h @kwg @llandwerlin @gfxstrand @idr
/include/pci_ids/i*_pci_ids.h @kwg @llandwerlin @gfxstrand @idr
/src/intel/ @kwg @llandwerlin @gfxstrand @idr
/src/gallium/winsys/iris/ @kwg @llandwerlin @gfxstrand @idr
/src/gallium/drivers/iris/ @kwg @llandwerlin @gfxstrand @idr
/src/gallium/drivers/i915/ @anholt

# Microsoft
/src/microsoft/ @jenatali
/src/gallium/drivers/d3d12/ @jenatali

# Panfrost
/src/panfrost/ @alyssa
/src/panfrost/vulkan/ @bbrezillon
/src/gallium/drivers/panfrost/ @alyssa

# VMware
/src/gallium/drivers/svga/ @brianp @charmainel
/src/gallium/winsys/svga/ @thomash @drawat
