drm-shim CI Reproduction — The Mesa 3D Graphics Library latest documentation

# drm-shim CI Reproduction

## Overview

`drm-shim` is a user-space library that intercepts ioctl calls using `LD_PRELOAD`. It emulates a hardware DRM device node, bypassing the actual kernel driver. This allows drivers (like `radeonsi`, `radv`, `turnip`, or `freedreno`) to initialize as if real hardware is present.

All rendering execution is no-oped (unless using a shim that executes on a simulator), but tests will often run to completion, which is usually enough to reproduce crashes and assertion failures.

The shim libraries are built alongside the corresponding driver when you configure your build with `-Dtools=drm-shim`.

Running these tests must be done inside a `meson devenv` shell. This automatically sets up necessary environment variables like `VK_DRIVER_FILES` to point to your newly built drivers, and adds the `drm-shim` wrapper script (located at `bin/drm-shim.py`) to your `PATH`.

The CI jobs test various GPU targets using the following test suites:

- GL CTS: `-DDEQP_TARGET=surfaceless`

- VK CTS: `-DDEQP_TARGET=vulkan_headless`

- Piglit: Use `PIGLIT_PLATFORM=gbm`

Once inside the `meson devenv` shell, CI jobs can be reproduced using the drm-shim wrapper. For example, to reproduce the `zink-anv-tgl` job:

    drm-shim zink-anv-tgl ./deqp-gles2

## AMD CI Jobs

CI job | Driver maintainers | CI job maintainers | Build Options
--- | --- | --- | ---
Stoney | Marek Olšák (@mareko, mareko) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Raven | Marek Olšák (@mareko, mareko) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Cezanne | Marek Olšák (@mareko, mareko) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Mendocino | Marek Olšák (@mareko, mareko) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Vangogh | Marek Olšák (@mareko, mareko) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Navi21 | Marek Olšák (@mareko, mareko) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
Navi31 | Marek Olšák (@mareko, mareko) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`
GFX1201 | Marek Olšák (@mareko, mareko) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=radeonsi -Dvulkan-drivers=amd -Dtools=drm-shim`

## Intel CI Jobs

CI job | Driver maintainers | CI job maintainers | Build Options
--- | --- | --- | ---
APL (Apollo Lake) | Kenneth Graunke, (@kwg, Kayden), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dtools=drm-shim,intel`
GLK (Gemini Lake) | Kenneth Graunke, (@kwg, Kayden), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dtools=drm-shim,intel`
KBL (Kaby Lake) | Kenneth Graunke, (@kwg, Kayden), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dtools=drm-shim,intel`
JSL (Jasper Lake) | Lionel Landwerlin, (@llandwerlin, dj-death), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dvulkan-drivers=intel -Dtools=drm-shim,intel`
TGL (Tiger Lake) | Lionel Landwerlin, (@llandwerlin, dj-death), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dvulkan-drivers=intel -Dtools=drm-shim,intel`
ADL (Alder Lake) | Lionel Landwerlin, (@llandwerlin, dj-death), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dvulkan-drivers=intel -Dtools=drm-shim,intel`
RPL (Raptor Lake) | Lionel Landwerlin, (@llandwerlin, dj-death), Caio Oliveira, (@cmarcelo, cmarcelo), Ian Romanick (@idr, idr) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=iris -Dvulkan-drivers=intel -Dtools=drm-shim,intel`

## ARM CI Jobs

CI job | Driver maintainers | CI job maintainers | Build Options
--- | --- | --- | ---
lima-mali450 | Your Name Here (gitlab:@username, irc:username) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=lima -Dtools=drm-shim`
panfrost-g52 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=panfrost -Dvulkan-drivers=panfrost -Dtools=drm-shim`
panfrost-g57 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=panfrost -Dtools=drm-shim`
panfrost-g72 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=panfrost -Dtools=drm-shim`
panfrost-g610 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=panfrost -Dvulkan-drivers=panfrost -Dtools=drm-shim`
panfrost-g925 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=panfrost -Dvulkan-drivers=panfrost -Dtools=drm-shim`

## Broadcom CI Jobs

CI job | Driver maintainers | CI job maintainers | Build Options
--- | --- | --- | ---
rpi3 | Your Name Here (gitlab:@username, irc:username) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=vc4 -Dtools=drm-shim`
rpi4 | Your Name Here (gitlab:@username, irc:username) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=v3d -Dvulkan-drivers=broadcom -Dtools=drm-shim`
rpi5 | Your Name Here (gitlab:@username, irc:username) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=v3d -Dvulkan-drivers=broadcom -Dtools=drm-shim`

## Freedreno CI Jobs

CI job | Driver maintainers | CI job maintainers | Build Options
--- | --- | --- | ---
a306 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno -Dtools=drm-shim`
a530 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno -Dtools=drm-shim`
a618 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno -Dtools=drm-shim`
a660 | Your Name Here (gitlab:@username, irc:username) | Sergi Blanch Torne (@sergi, sergi), Valentine Burley (@Valentine, valentine), Daniel Stone (@daniels, daniels) | `-Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno -Dtools=drm-shim`
a750 | Your Name Here (gitlab:@username, irc:username) | Your Name Here (gitlab:@username, irc:username) | `-Dgallium-drivers=freedreno -Dvulkan-drivers=freedreno -Dtools=drm-shim`