# 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/ @jekstrand

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


#############
# 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
/include/HaikuGL/ @kallisti5
/src/egl/drivers/haiku/ @kallisti5
/src/gallium/frontends/hgl/ @kallisti5
/src/gallium/targets/haiku-softpipe/ @kallisti5
/src/gallium/winsys/sw/hgl/ @kallisti5
/src/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
/src/imagination/ @CreativeCylon @frankbinns
/src/imagination/rogue/ @simon-perretta-img

# Intel
/include/drm-uapi/i915_drm.h @kwg @llandwerlin @jekstrand @idr
/include/pci_ids/i*_pci_ids.h @kwg @llandwerlin @jekstrand @idr
/src/intel/ @kwg @llandwerlin @jekstrand @idr
/src/gallium/winsys/iris/ @kwg @llandwerlin @jekstrand @idr
/src/gallium/drivers/iris/ @kwg @llandwerlin @jekstrand @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
