1Environment Variables
2=====================
3
4Normally, no environment variables need to be set. Most of the
5environment variables used by Mesa/Gallium are for debugging purposes,
6but they can sometimes be useful for debugging end-user issues.
7
8LibGL environment variables
9---------------------------
10
11``LIBGL_DEBUG``
12   If defined debug information will be printed to stderr. If set to
13   ``verbose`` additional information will be printed.
14``LIBGL_DRIVERS_PATH``
15   colon-separated list of paths to search for DRI drivers
16``LIBGL_ALWAYS_INDIRECT``
17   if set to ``true``, forces an indirect rendering context/connection.
18``LIBGL_ALWAYS_SOFTWARE``
19   if set to ``true``, always use software rendering
20``LIBGL_NO_DRAWARRAYS``
21   if set to ``true``, do not use DrawArrays GLX protocol (for
22   debugging)
23``LIBGL_SHOW_FPS``
24   print framerate to stdout based on the number of ``glXSwapBuffers``
25   calls per second.
26``LIBGL_DRI3_DISABLE``
27   disable DRI3 if set to ``true``.
28
29Core Mesa environment variables
30-------------------------------
31
32``MESA_NO_ASM``
33   if set, disables all assembly language optimizations
34``MESA_NO_MMX``
35   if set, disables Intel MMX optimizations
36``MESA_NO_3DNOW``
37   if set, disables AMD 3DNow! optimizations
38``MESA_NO_SSE``
39   if set, disables Intel SSE optimizations
40``MESA_NO_ERROR``
41   if set to 1, error checking is disabled as per ``KHR_no_error``. This
42   will result in undefined behaviour for invalid use of the api, but
43   can reduce CPU use for apps that are known to be error free.
44``MESA_DEBUG``
45   if set, error messages are printed to stderr. For example, if the
46   application generates a ``GL_INVALID_ENUM`` error, a corresponding
47   error message indicating where the error occurred, and possibly why,
48   will be printed to stderr. For release builds, ``MESA_DEBUG``
49   defaults to off (no debug output). ``MESA_DEBUG`` accepts the
50   following comma-separated list of named flags, which adds extra
51   behaviour to just set ``MESA_DEBUG=1``:
52
53   ``silent``
54      turn off debug messages. Only useful for debug builds.
55   ``flush``
56      flush after each drawing command
57   ``incomplete_tex``
58      extra debug messages when a texture is incomplete
59   ``incomplete_fbo``
60      extra debug messages when a fbo is incomplete
61   ``context``
62      create a debug context (see ``GLX_CONTEXT_DEBUG_BIT_ARB``) and
63      print error and performance messages to stderr (or
64      ``MESA_LOG_FILE``).
65
66``MESA_LOG_FILE``
67   specifies a file name for logging all errors, warnings, etc., rather
68   than stderr
69``MESA_TEX_PROG``
70   if set, implement conventional texture env modes with fragment
71   programs (intended for developers only)
72``MESA_TNL_PROG``
73   if set, implement conventional vertex transformation operations with
74   vertex programs (intended for developers only). Setting this variable
75   automatically sets the ``MESA_TEX_PROG`` variable as well.
76``MESA_EXTENSION_OVERRIDE``
77   can be used to enable/disable extensions. A value such as
78   ``GL_EXT_foo -GL_EXT_bar`` will enable the ``GL_EXT_foo`` extension
79   and disable the ``GL_EXT_bar`` extension.
80``MESA_EXTENSION_MAX_YEAR``
81   The ``GL_EXTENSIONS`` string returned by Mesa is sorted by extension
82   year. If this variable is set to year X, only extensions defined on
83   or before year X will be reported. This is to work-around a bug in
84   some games where the extension string is copied into a fixed-size
85   buffer without truncating. If the extension string is too long, the
86   buffer overrun can cause the game to crash. This is a work-around for
87   that.
88``MESA_GL_VERSION_OVERRIDE``
89   changes the value returned by ``glGetString(GL_VERSION)`` and
90   possibly the GL API type.
91
92   -  The format should be ``MAJOR.MINOR[FC|COMPAT]``
93   -  ``FC`` is an optional suffix that indicates a forward compatible
94      context. This is only valid for versions >= 3.0.
95   -  ``COMPAT`` is an optional suffix that indicates a compatibility
96      context or ``GL_ARB_compatibility`` support. This is only valid
97      for versions >= 3.1.
98   -  GL versions <= 3.0 are set to a compatibility (non-Core) profile
99   -  GL versions = 3.1, depending on the driver, it may or may not have
100      the ``ARB_compatibility`` extension enabled.
101   -  GL versions >= 3.2 are set to a Core profile
102   -  Examples:
103
104      ``2.1``
105         select a compatibility (non-Core) profile with GL version 2.1.
106      ``3.0``
107         select a compatibility (non-Core) profile with GL version 3.0.
108      ``3.0FC``
109         select a Core+Forward Compatible profile with GL version 3.0.
110      ``3.1``
111         select GL version 3.1 with ``GL_ARB_compatibility`` enabled per
112         the driver default.
113      ``3.1FC``
114         select GL version 3.1 with forward compatibility and
115         ``GL_ARB_compatibility`` disabled.
116      ``3.1COMPAT``
117         select GL version 3.1 with ``GL_ARB_compatibility`` enabled.
118      ``X.Y``
119         override GL version to X.Y without changing the profile.
120      ``X.YFC``
121         select a Core+Forward Compatible profile with GL version X.Y.
122      ``X.YCOMPAT``
123         select a Compatibility profile with GL version X.Y.
124
125   -  Mesa may not really implement all the features of the given
126      version. (for developers only)
127
128``MESA_GLES_VERSION_OVERRIDE``
129   changes the value returned by ``glGetString(GL_VERSION)`` for OpenGL
130   ES.
131
132   -  The format should be ``MAJOR.MINOR``
133   -  Examples: ``2.0``, ``3.0``, ``3.1``
134   -  Mesa may not really implement all the features of the given
135      version. (for developers only)
136
137``MESA_GLSL_VERSION_OVERRIDE``
138   changes the value returned by
139   ``glGetString(GL_SHADING_LANGUAGE_VERSION)``. Valid values are
140   integers, such as ``130``. Mesa will not really implement all the
141   features of the given language version if it's higher than what's
142   normally reported. (for developers only)
143``MESA_GLSL_CACHE_DISABLE``
144   if set to ``true``, disables the GLSL shader cache
145``MESA_GLSL_CACHE_MAX_SIZE``
146   if set, determines the maximum size of the on-disk cache of compiled
147   GLSL programs. Should be set to a number optionally followed by
148   ``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
149   gigabytes. By default, gigabytes will be assumed. And if unset, a
150   maximum size of 1GB will be used.
151
152   .. note::
153
154      A separate cache might be created for each architecture that Mesa is
155      installed for on your system. For example under the default settings
156      you may end up with a 1GB cache for x86_64 and another 1GB cache for
157      i386.
158
159``MESA_GLSL_CACHE_DIR``
160   if set, determines the directory to be used for the on-disk cache of
161   compiled GLSL programs. If this variable is not set, then the cache
162   will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that
163   variable is set), or else within ``.cache/mesa_shader_cache`` within
164   the user's home directory.
165``MESA_GLSL``
166   :ref:`shading language compiler options <envvars>`
167``MESA_NO_MINMAX_CACHE``
168   when set, the minmax index cache is globally disabled.
169``MESA_SHADER_CAPTURE_PATH``
170   see :ref:`Capturing Shaders <capture>`
171``MESA_SHADER_DUMP_PATH`` and ``MESA_SHADER_READ_PATH``
172   see :ref:`Experimenting with Shader
173   Replacements <replacement>`
174``MESA_VK_VERSION_OVERRIDE``
175   changes the Vulkan physical device version as returned in
176   ``VkPhysicalDeviceProperties::apiVersion``.
177
178   -  The format should be ``MAJOR.MINOR[.PATCH]``
179   -  This will not let you force a version higher than the driver's
180      instance version as advertised by ``vkEnumerateInstanceVersion``
181   -  This can be very useful for debugging but some features may not be
182      implemented correctly. (For developers only)
183
184NIR passes environment variables
185--------------------------------
186
187The following are only applicable for drivers that uses NIR, as they
188modify the behaviour for the common NIR_PASS and NIR_PASS_V macros, that
189wrap calls to NIR lowering/optimizations.
190
191``NIR_PRINT``
192   If defined, the resulting NIR shader will be printed out at each
193   successful NIR lowering/optimization call.
194``NIR_TEST_CLONE``
195   If defined, cloning a NIR shader would be tested at each successful
196   NIR lowering/optimization call.
197``NIR_TEST_SERIALIZE``
198   If defined, serialize and deserialize a NIR shader would be tested at
199   each successful NIR lowering/optimization call.
200
201Mesa Xlib driver environment variables
202--------------------------------------
203
204The following are only applicable to the Mesa Xlib software driver. See
205the :doc:`Xlib software driver page <xlibdriver>` for details.
206
207``MESA_RGB_VISUAL``
208   specifies the X visual and depth for RGB mode
209``MESA_CI_VISUAL``
210   specifies the X visual and depth for CI mode
211``MESA_BACK_BUFFER``
212   specifies how to implement the back color buffer, either ``pixmap``
213   or ``ximage``
214``MESA_GAMMA``
215   gamma correction coefficients for red, green, blue channels
216``MESA_XSYNC``
217   enable synchronous X behavior (for debugging only)
218``MESA_GLX_FORCE_CI``
219   if set, force GLX to treat 8bpp visuals as CI visuals
220``MESA_GLX_FORCE_ALPHA``
221   if set, forces RGB windows to have an alpha channel.
222``MESA_GLX_DEPTH_BITS``
223   specifies default number of bits for depth buffer.
224``MESA_GLX_ALPHA_BITS``
225   specifies default number of bits for alpha channel.
226
227i945/i965 driver environment variables (non-Gallium)
228----------------------------------------------------
229
230``INTEL_NO_HW``
231   if set to 1, prevents batches from being submitted to the hardware.
232   This is useful for debugging hangs, etc.
233``INTEL_DEBUG``
234   a comma-separated list of named flags, which do various things:
235
236   ``ann``
237      annotate IR in assembly dumps
238   ``aub``
239      dump batches into an AUB trace for use with simulation tools
240   ``bat``
241      emit batch information
242   ``blit``
243      emit messages about blit operations
244   ``blorp``
245      emit messages about the blorp operations (blits & clears)
246   ``buf``
247      emit messages about buffer objects
248   ``clip``
249      emit messages about the clip unit (for old gens, includes the CLIP
250      program)
251   ``color``
252      use color in output
253   ``cs``
254      dump shader assembly for compute shaders
255   ``do32``
256      generate compute shader SIMD32 programs even if workgroup size
257      doesn't exceed the SIMD16 limit
258   ``dri``
259      emit messages about the DRI interface
260   ``fbo``
261      emit messages about framebuffers
262   ``fs``
263      dump shader assembly for fragment shaders
264   ``gs``
265      dump shader assembly for geometry shaders
266   ``hex``
267      print instruction hex dump with the disassembly
268   ``l3``
269      emit messages about the new L3 state during transitions
270   ``miptree``
271      emit messages about miptrees
272   ``no8``
273      don't generate SIMD8 fragment shader
274   ``no16``
275      suppress generation of 16-wide fragment shaders. useful for
276      debugging broken shaders
277   ``nocompact``
278      disable instruction compaction
279   ``nodualobj``
280      suppress generation of dual-object geometry shader code
281   ``nofc``
282      disable fast clears
283   ``norbc``
284      disable single sampled render buffer compression
285   ``optimizer``
286      dump shader assembly to files at each optimization pass and
287      iteration that make progress
288   ``perf``
289      emit messages about performance issues
290   ``perfmon``
291      emit messages about ``AMD_performance_monitor``
292   ``pix``
293      emit messages about pixel operations
294   ``prim``
295      emit messages about drawing primitives
296   ``reemit``
297      mark all state dirty on each draw call
298   ``sf``
299      emit messages about the strips & fans unit (for old gens, includes
300      the SF program)
301   ``shader_time``
302      record how much GPU time is spent in each shader
303   ``spill_fs``
304      force spilling of all registers in the scalar backend (useful to
305      debug spilling code)
306   ``spill_vec4``
307      force spilling of all registers in the vec4 backend (useful to
308      debug spilling code)
309   ``state``
310      emit messages about state flag tracking
311   ``submit``
312      emit batchbuffer usage statistics
313   ``sync``
314      after sending each batch, emit a message and wait for that batch
315      to finish rendering
316   ``tcs``
317      dump shader assembly for tessellation control shaders
318   ``tes``
319      dump shader assembly for tessellation evaluation shaders
320   ``tex``
321      emit messages about textures.
322   ``urb``
323      emit messages about URB setup
324   ``vert``
325      emit messages about vertex assembly
326   ``vs``
327      dump shader assembly for vertex shaders
328
329``INTEL_SCALAR_VS`` (or ``TCS``, ``TES``, ``GS``)
330   force scalar/vec4 mode for a shader stage (Gen8-9 only)
331``INTEL_PRECISE_TRIG``
332   if set to 1, true or yes, then the driver prefers accuracy over
333   performance in trig functions.
334
335Radeon driver environment variables (radeon, r200, and r300g)
336-------------------------------------------------------------
337
338``RADEON_NO_TCL``
339   if set, disable hardware-accelerated Transform/Clip/Lighting.
340
341EGL environment variables
342-------------------------
343
344Mesa EGL supports different sets of environment variables. See the
345:doc:`Mesa EGL <egl>` page for the details.
346
347Gallium environment variables
348-----------------------------
349
350``GALLIUM_HUD``
351   draws various information on the screen, like framerate, cpu load,
352   driver statistics, performance counters, etc. Set
353   ``GALLIUM_HUD=help`` and run e.g. ``glxgears`` for more info.
354``GALLIUM_HUD_PERIOD``
355   sets the hud update rate in seconds (float). Use zero to update every
356   frame. The default period is 1/2 second.
357``GALLIUM_HUD_VISIBLE``
358   control default visibility, defaults to true.
359``GALLIUM_HUD_TOGGLE_SIGNAL``
360   toggle visibility via user specified signal. Especially useful to
361   toggle hud at specific points of application and disable for
362   unencumbered viewing the rest of the time. For example, set
363   ``GALLIUM_HUD_VISIBLE`` to ``false`` and
364   ``GALLIUM_HUD_TOGGLE_SIGNAL`` to ``10`` (``SIGUSR1``). Use
365   ``kill -10 <pid>`` to toggle the hud as desired.
366``GALLIUM_HUD_SCALE``
367   Scale hud by an integer factor, for high DPI displays. Default is 1.
368``GALLIUM_HUD_DUMP_DIR``
369   specifies a directory for writing the displayed hud values into
370   files.
371``GALLIUM_DRIVER``
372   useful in combination with ``LIBGL_ALWAYS_SOFTWARE=true`` for
373   choosing one of the software renderers ``softpipe``, ``llvmpipe`` or
374   ``swr``.
375``GALLIUM_LOG_FILE``
376   specifies a file for logging all errors, warnings, etc. rather than
377   stderr.
378``GALLIUM_PRINT_OPTIONS``
379   if non-zero, print all the Gallium environment variables which are
380   used, and their current values.
381``GALLIUM_DUMP_CPU``
382   if non-zero, print information about the CPU on start-up
383``TGSI_PRINT_SANITY``
384   if set, do extra sanity checking on TGSI shaders and print any errors
385   to stderr.
386``DRAW_FSE``
387   ???
388``DRAW_NO_FSE``
389   ???
390``DRAW_USE_LLVM``
391   if set to zero, the draw module will not use LLVM to execute shaders,
392   vertex fetch, etc.
393``ST_DEBUG``
394   controls debug output from the Mesa/Gallium state tracker. Setting to
395   ``tgsi``, for example, will print all the TGSI shaders. See
396   ``src/mesa/state_tracker/st_debug.c`` for other options.
397
398Clover environment variables
399~~~~~~~~~~~~~~~~~~~~~~~~~~~~
400
401``CLOVER_EXTRA_BUILD_OPTIONS``
402   allows specifying additional compiler and linker options. Specified
403   options are appended after the options set by the OpenCL program in
404   ``clBuildProgram``.
405``CLOVER_EXTRA_COMPILE_OPTIONS``
406   allows specifying additional compiler options. Specified options are
407   appended after the options set by the OpenCL program in
408   ``clCompileProgram``.
409``CLOVER_EXTRA_LINK_OPTIONS``
410   allows specifying additional linker options. Specified options are
411   appended after the options set by the OpenCL program in
412   ``clLinkProgram``.
413
414Softpipe driver environment variables
415~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
416
417``SOFTPIPE_DEBUG``
418   a comma-separated list of named flags, which do various things:
419
420   ``vs``
421      Dump vertex shader assembly to stderr
422   ``fs``
423      Dump fragment shader assembly to stderr
424   ``gs``
425      Dump geometry shader assembly to stderr
426   ``cs``
427      Dump compute shader assembly to stderr
428   ``no_rast``
429      rasterization is no-op'd. For profiling purposes.
430   ``use_llvm``
431      the softpipe driver will try to use LLVM JIT for vertex
432      shading processing.
433
434LLVMpipe driver environment variables
435~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
436
437``LP_NO_RAST``
438   if set LLVMpipe will no-op rasterization
439``LP_DEBUG``
440   a comma-separated list of debug options is accepted. See the source
441   code for details.
442``LP_PERF``
443   a comma-separated list of options to selectively no-op various parts
444   of the driver. See the source code for details.
445``LP_NUM_THREADS``
446   an integer indicating how many threads to use for rendering. Zero
447   turns off threading completely. The default value is the number of
448   CPU cores present.
449
450VMware SVGA driver environment variables
451~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
452
453``SVGA_FORCE_SWTNL``
454   force use of software vertex transformation
455``SVGA_NO_SWTNL``
456   don't allow software vertex transformation fallbacks (will often
457   result in incorrect rendering).
458``SVGA_DEBUG``
459   for dumping shaders, constant buffers, etc. See the code for details.
460``SVGA_EXTRA_LOGGING``
461   if set, enables extra logging to the ``vmware.log`` file, such as the
462   OpenGL program's name and command line arguments.
463``SVGA_NO_LOGGING``
464   if set, disables logging to the ``vmware.log`` file. This is useful
465   when using Valgrind because it otherwise crashes when initializing
466   the host log feature.
467
468See the driver code for other, lesser-used variables.
469
470WGL environment variables
471~~~~~~~~~~~~~~~~~~~~~~~~~
472
473``WGL_SWAP_INTERVAL``
474   to set a swap interval, equivalent to calling
475   ``wglSwapIntervalEXT()`` in an application. If this environment
476   variable is set, application calls to ``wglSwapIntervalEXT()`` will
477   have no effect.
478
479VA-API environment variables
480~~~~~~~~~~~~~~~~~~~~~~~~~~~~
481
482``VAAPI_MPEG4_ENABLED``
483   enable MPEG4 for VA-API, disabled by default.
484
485VC4 driver environment variables
486~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
487
488``VC4_DEBUG``
489   a comma-separated list of named flags, which do various things:
490
491   ``cl``
492      dump command list during creation
493   ``qpu``
494      dump generated QPU instructions
495   ``qir``
496      dump QPU IR during program compile
497   ``nir``
498      dump NIR during program compile
499   ``tgsi``
500      dump TGSI during program compile
501   ``shaderdb``
502      dump program compile information for shader-db analysis
503   ``perf``
504      print during performance-related events
505   ``norast``
506      skip actual hardware execution of commands
507   ``always_flush``
508      flush after each draw call
509   ``always_sync``
510      wait for finish after each flush
511   ``dump``
512      write a GPU command stream trace file (VC4 simulator only)
513
514RADV driver environment variables
515~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
516
517``RADV_DEBUG``
518   a comma-separated list of named flags, which do various things:
519
520   ``llvm``
521      enable LLVM compiler backend
522   ``allbos``
523      force all allocated buffers to be referenced in submissions
524   ``allentrypoints``
525      enable all device/instance entrypoints
526   ``checkir``
527      validate the LLVM IR before LLVM compiles the shader
528   ``errors``
529      display more info about errors
530   ``info``
531      show GPU-related information
532   ``metashaders``
533      dump internal meta shaders
534   ``nobinning``
535      disable primitive binning
536   ``nocache``
537      disable shaders cache
538   ``nocompute``
539      disable compute queue
540   ``nodcc``
541      disable Delta Color Compression (DCC) on images
542   ``nodynamicbounds``
543      do not check OOB access for dynamic descriptors
544   ``nofastclears``
545      disable fast color/depthstencil clears
546   ``nohiz``
547      disable HIZ for depthstencil images
548   ``noibs``
549      disable directly recording command buffers in GPU-visible memory
550   ``nomemorycache``
551      disable memory shaders cache
552   ``nongg``
553      disable NGG for GFX10+
554   ``nooutoforder``
555      disable out-of-order rasterization
556   ``nothreadllvm``
557      disable LLVM threaded compilation
558   ``preoptir``
559      dump LLVM IR before any optimizations
560   ``shaders``
561      dump shaders
562   ``shaderstats``
563      dump shader statistics
564   ``spirv``
565      dump SPIR-V
566   ``startup``
567      display info at startup
568   ``syncshaders``
569      synchronize shaders after all draws/dispatches
570   ``vmfaults``
571      check for VM memory faults via dmesg
572   ``zerovram``
573      initialize all memory allocated in VRAM as zero
574
575``RADV_FORCE_FAMILY``
576   create a null device to compile shaders without a AMD GPU (eg.
577   gfx900)
578``RADV_PERFTEST``
579   a comma-separated list of named flags, which do various things:
580
581   ``bolist``
582      enable the global BO list
583   ``cswave32``
584      enable wave32 for compute shaders (GFX10+)
585   ``dccmsaa``
586      enable DCC for MSAA images
587   ``dfsm``
588      enable dfsm
589   ``gewave32``
590      enable wave32 for vertex/tess/geometry shaders (GFX10+)
591   ``localbos``
592      enable local BOs
593   ``pswave32``
594      enable wave32 for pixel shaders (GFX10+)
595   ``tccompatcmask``
596      enable TC-compat cmask for MSAA images
597
598``RADV_TEX_ANISO``
599   force anisotropy filter (up to 16)
600``RADV_TRACE_FILE``
601   generate cmdbuffer tracefiles when a GPU hang is detected
602``ACO_DEBUG``
603   a comma-separated list of named flags, which do various things:
604
605   ``validateir``
606      validate the ACO IR at various points of compilation (enabled by
607      default for debug/debugoptimized builds)
608   ``validatera``
609      validate register assignment of ACO IR and catches many RA bugs
610   ``perfwarn``
611      abort on some suboptimal code generation
612
613radeonsi driver environment variables
614~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
615
616``AMD_DEBUG``
617   a comma-separated list of named flags, which do various things:
618``nodma``
619   Disable SDMA
620``nodmaclear``
621   Disable SDMA clears
622``nodmacopyimage``
623   Disable SDMA image copies
624``zerovram``
625   Clear VRAM allocations.
626``nodcc``
627   Disable DCC.
628``nodccclear``
629   Disable DCC fast clear.
630``nodccfb``
631   Disable separate DCC on the main framebuffer
632``nodccmsaa``
633   Disable DCC for MSAA
634``nodpbb``
635   Disable DPBB.
636``nodfsm``
637   Disable DFSM.
638``notiling``
639   Disable tiling
640``nofmask``
641   Disable MSAA compression
642``nohyperz``
643   Disable Hyper-Z
644``norbplus``
645   Disable RB+.
646``no2d``
647   Disable 2D tiling
648``info``
649   Print driver information
650``tex``
651   Print texture info
652``compute``
653   Print compute info
654``vm``
655   Print virtual addresses when creating resources
656``vs``
657   Print vertex shaders
658``ps``
659   Print pixel shaders
660``gs``
661   Print geometry shaders
662``tcs``
663   Print tessellation control shaders
664``tes``
665   Print tessellation evaluation shaders
666``cs``
667   Print compute shaders
668``noir``
669   Don't print the LLVM IR
670``nonir``
671   Don't print NIR when printing shaders
672``noasm``
673   Don't print disassembled shaders
674``preoptir``
675   Print the LLVM IR before initial optimizations
676``gisel``
677   Enable LLVM global instruction selector.
678``w32ge``
679   Use Wave32 for vertex, tessellation, and geometry shaders.
680``w32ps``
681   Use Wave32 for pixel shaders.
682``w32cs``
683   Use Wave32 for computes shaders.
684``w64ge``
685   Use Wave64 for vertex, tessellation, and geometry shaders.
686``w64ps``
687   Use Wave64 for pixel shaders.
688``w64cs``
689   Use Wave64 for computes shaders.
690``checkir``
691   Enable additional sanity checks on shader IR
692``mono``
693   Use old-style monolithic shaders compiled on demand
694``nooptvariant``
695   Disable compiling optimized shader variants.
696``forcedma``
697   Use SDMA for all operations when possible.
698``nowc``
699   Disable GTT write combining
700``check_vm``
701   Check VM faults and dump debug info.
702``reserve_vmid``
703   Force VMID reservation per context.
704``nogfx``
705   Disable graphics. Only multimedia compute paths can be used.
706``nongg``
707   Disable NGG and use the legacy pipeline.
708``nggc``
709   Always use NGG culling even when it can hurt.
710``nonggc``
711   Disable NGG culling.
712``alwayspd``
713   Always enable the primitive discard compute shader.
714``pd``
715   Enable the primitive discard compute shader for large draw calls.
716``nopd``
717   Disable the primitive discard compute shader.
718``switch_on_eop``
719   Program WD/IA to switch on end-of-packet.
720``nooutoforder``
721   Disable out-of-order rasterization
722``dpbb``
723   Enable DPBB.
724``dfsm``
725   Enable DFSM.
726
727Other Gallium drivers have their own environment variables. These may
728change frequently so the source code should be consulted for details.
729