docs/envvars: update RADV_FORCE_FAMILY
[mesa.git] / docs / envvars.html
index 5bb7b1e65bb99a6782939e71c03a488103638951..0bf95a128436aa9b3bae79af81d84b592a475206 100644 (file)
@@ -8,7 +8,7 @@
 <body>
 
 <div class="header">
-  <h1>The Mesa 3D Graphics Library</h1>
+  The Mesa 3D Graphics Library
 </div>
 
 <iframe src="contents.html"></iframe>
@@ -25,78 +25,206 @@ sometimes be useful for debugging end-user issues.
 
 <h2>LibGL environment variables</h2>
 
-<ul>
-<li>LIBGL_DEBUG - If defined debug information will be printed to stderr.
-   If set to 'verbose' additional information will be printed.
-<li>LIBGL_DRIVERS_PATH - colon-separated list of paths to search for DRI drivers
-<li>LIBGL_ALWAYS_INDIRECT - forces an indirect rendering context/connection.
-<li>LIBGL_ALWAYS_SOFTWARE - if set, always use software rendering
-<li>LIBGL_NO_DRAWARRAYS - if set do not use DrawArrays GLX protocol (for debugging)
-<li>LIBGL_SHOW_FPS - print framerate to stdout based on the number of glXSwapBuffers
-    calls per second.
-<li>LIBGL_DRI3_DISABLE - disable DRI3 if set (the value does not matter)
-</ul>
-
-
+<dl>
+<dt><code>LIBGL_DEBUG</code></dt>
+<dd>If defined debug information will be printed to stderr.
+    If set to <code>verbose</code> additional information will be
+    printed.</dd>
+<dt><code>LIBGL_DRIVERS_PATH</code></dt>
+<dd>colon-separated list of paths to search for DRI drivers</dd>
+<dt><code>LIBGL_ALWAYS_INDIRECT</code></dt>
+<dd>if set to <code>true</code>, forces an indirect rendering
+    context/connection.</dd>
+<dt><code>LIBGL_ALWAYS_SOFTWARE</code></dt>
+<dd>if set to <code>true</code>, always use software rendering</dd>
+<dt><code>LIBGL_NO_DRAWARRAYS</code></dt>
+<dd>if set to <code>true</code>, do not use DrawArrays GLX protocol
+    (for debugging)</dd>
+<dt><code>LIBGL_SHOW_FPS</code></dt>
+<dd>print framerate to stdout based on the number of
+    <code>glXSwapBuffers</code> calls per second.</dd>
+<dt><code>LIBGL_DRI3_DISABLE</code></dt>
+<dd>disable DRI3 if set to <code>true</code>.</dd>
+</dl>
 
 <h2>Core Mesa environment variables</h2>
 
+<dl>
+<dt><code>MESA_NO_ASM</code></dt>
+<dd>if set, disables all assembly language optimizations</dd>
+<dt><code>MESA_NO_MMX</code></dt>
+<dd>if set, disables Intel MMX optimizations</dd>
+<dt><code>MESA_NO_3DNOW</code></dt>
+<dd>if set, disables AMD 3DNow! optimizations</dd>
+<dt><code>MESA_NO_SSE</code></dt>
+<dd>if set, disables Intel SSE optimizations</dd>
+<dt><code>MESA_NO_ERROR</code></dt>
+<dd>if set to 1, error checking is disabled as per <code>KHR_no_error</code>.
+    This will result in undefined behaviour for invalid use of the api, but
+    can reduce CPU use for apps that are known to be error free.</dd>
+<dt><code>MESA_DEBUG</code></dt>
+<dd>if set, error messages are printed to stderr.  For example,
+    if the application generates a <code>GL_INVALID_ENUM</code> error, a
+    corresponding error message indicating where the error occurred, and
+    possibly why, will be printed to stderr. For release builds,
+    <code>MESA_DEBUG</code> defaults to off (no debug output).
+    <code>MESA_DEBUG</code> accepts the following comma-separated list of
+    named flags, which adds extra behaviour to just set
+    <code>MESA_DEBUG=1</code>:
+    <dl>
+      <dt><code>silent</code></dt>
+      <dd>turn off debug messages. Only useful for debug builds.</dd>
+      <dt><code>flush</code></dt>
+      <dd>flush after each drawing command</dd>
+      <dt><code>incomplete_tex</code></dt>
+      <dd>extra debug messages when a texture is incomplete</dd>
+      <dt><code>incomplete_fbo</code></dt>
+      <dd>extra debug messages when a fbo is incomplete</dd>
+      <dt><code>context</code></dt>
+      <dd>create a debug context (see <code>GLX_CONTEXT_DEBUG_BIT_ARB</code>)
+          and print error and performance messages to stderr (or
+          <code>MESA_LOG_FILE</code>).</dd>
+    </dl>
+</dd>
+<dt><code>MESA_LOG_FILE</code></dt>
+<dd>specifies a file name for logging all errors, warnings,
+    etc., rather than stderr</dd>
+<dt><code>MESA_TEX_PROG</code></dt>
+<dd>if set, implement conventional texture env modes with
+    fragment programs (intended for developers only)</dd>
+<dt><code>MESA_TNL_PROG</code></dt>
+<dd>if set, implement conventional vertex transformation operations with
+    vertex programs (intended for developers only). Setting this variable
+    automatically sets the <code>MESA_TEX_PROG</code> variable as well.</dd>
+<dt><code>MESA_EXTENSION_OVERRIDE</code></dt>
+<dd>can be used to enable/disable extensions. A value such as
+    <code>GL_EXT_foo -GL_EXT_bar</code> will enable the
+    <code>GL_EXT_foo</code> extension and disable the
+    <code>GL_EXT_bar</code> extension.</dd>
+<dt><code>MESA_EXTENSION_MAX_YEAR</code></dt>
+<dd>The <code>GL_EXTENSIONS</code> string returned by Mesa is sorted by
+    extension year. If this variable is set to year X, only extensions
+    defined on or before year X will be reported. This is to work-around a
+    bug in some games where the extension string is copied into a fixed-size
+    buffer without truncating. If the extension string is too long, the
+    buffer overrun can cause the game to crash. This is a work-around for
+    that.</dd>
+<dt><code>MESA_GL_VERSION_OVERRIDE</code></dt>
+<dd>changes the value returned by
+<code>glGetString(GL_VERSION)</code> and possibly the GL API type.
 <ul>
-<li>MESA_NO_ASM - if set, disables all assembly language optimizations
-<li>MESA_NO_MMX - if set, disables Intel MMX optimizations
-<li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
-<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
-<li>MESA_DEBUG - if set, error messages are printed to stderr.  For example,
-   if the application generates a GL_INVALID_ENUM error, a corresponding error
-   message indicating where the error occurred, and possibly why, will be
-   printed to stderr.<br>
-   If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
-   generate exceptions.
-<li>MESA_LOG_FILE - specifies a file name for logging all errors, warnings,
-etc., rather than stderr
-<li>MESA_TEX_PROG - if set, implement conventional texture env modes with
-fragment programs (intended for developers only)
-<li>MESA_TNL_PROG - if set, implement conventional vertex transformation
-operations with vertex programs (intended for developers only).
-Setting this variable automatically sets the MESA_TEX_PROG variable as well.
-<li>MESA_EXTENSION_OVERRIDE - can be used to enable/disable extensions.
-A value such as "GL_EXT_foo -GL_EXT_bar" will enable the GL_EXT_foo extension
-and disable the GL_EXT_bar extension.
-<li>MESA_EXTENSION_MAX_YEAR - The GL_EXTENSIONS string returned by Mesa is sorted
-by extension year.
-If this variable is set to year X, only extensions defined on or before year
-X will be reported.
-This is to work-around a bug in some games where the extension string is
-copied into a fixed-size buffer without truncating.
-If the extension string is too long, the buffer overrun can cause the game
-to crash.
-This is a work-around for that.
-<li>MESA_GL_VERSION_OVERRIDE - changes the value returned by
-glGetString(GL_VERSION) and possibly the GL API type.
-<ul>
-<li> The format should be MAJOR.MINOR[FC]
-<li> FC is an optional suffix that indicates a forward compatible context.
-This is only valid for versions &gt;= 3.0.
-<li> GL versions &lt; 3.0 are set to a compatibility (non-Core) profile
-<li> GL versions = 3.0, see below
-<li> GL versions &gt; 3.0 are set to a Core profile
-<li> Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
-<ul>
-<li> 2.1 - select a compatibility (non-Core) profile with GL version 2.1
-<li> 3.0 - select a compatibility (non-Core) profile with GL version 3.0
-<li> 3.0FC - select a Core+Forward Compatible profile with GL version 3.0
-<li> 3.1 - select a Core profile with GL version 3.1
-<li> 3.1FC - select a Core+Forward Compatible profile with GL version 3.1
+  <li>The format should be <code>MAJOR.MINOR[FC|COMPAT]</code>
+  <li><code>FC</code> is an optional suffix that indicates a forward
+      compatible context. This is only valid for versions &gt;= 3.0.
+  <li><code>COMPAT</code> is an optional suffix that indicates a
+      compatibility context or <code>GL_ARB_compatibility</code> support.
+      This is only valid for versions &gt;= 3.1.
+  <li>GL versions &lt;= 3.0 are set to a compatibility (non-Core)
+      profile
+  <li>GL versions = 3.1, depending on the driver, it may or may not
+      have the <code>ARB_compatibility</code> extension enabled.
+  <li>GL versions &gt;= 3.2 are set to a Core profile
+  <li>Examples:
+  <dl>
+    <dt><code>2.1</code></dt>
+    <dd>select a compatibility (non-Core) profile with GL version 2.1.</dd>
+    <dt><code>3.0</code></dt>
+    <dd>select a compatibility (non-Core) profile with GL version 3.0.</dd>
+    <dt><code>3.0FC</code></dt>
+    <dd>select a Core+Forward Compatible profile with GL version 3.0.</dd>
+    <dt><code>3.1</code></dt>
+    <dd>select GL version 3.1 with <code>GL_ARB_compatibility</code>
+        enabled per the driver default.</dd>
+    <dt><code>3.1FC</code></dt>
+    <dd>select GL version 3.1 with forward compatibility and
+        <code>GL_ARB_compatibility</code> disabled.</dd>
+    <dt><code>3.1COMPAT</code></dt>
+    <dd>select GL version 3.1 with <code>GL_ARB_compatibility</code>
+        enabled.</dd>
+    <dt><code>X.Y</code></dt>
+    <dd>override GL version to X.Y without changing the profile.</dd>
+    <dt><code>X.YFC</code></dt>
+    <dd>select a Core+Forward Compatible profile with GL version X.Y.</dd>
+    <dt><code>X.YCOMPAT</code></dt>
+    <dd>select a Compatibility profile with GL version X.Y.</dd>
+  </dl>
+  <li>Mesa may not really implement all the features of the given
+      version. (for developers only)
 </ul>
+</dd>
+<dt><code>MESA_GLES_VERSION_OVERRIDE</code></dt>
+<dd>changes the value returned by <code>glGetString(GL_VERSION)</code>
+    for OpenGL ES.
+<ul>
+<li> The format should be <code>MAJOR.MINOR</code>
+<li> Examples: <code>2.0</code>, <code>3.0</code>, <code>3.1</code>
 <li> Mesa may not really implement all the features of the given version.
 (for developers only)
 </ul>
-<li>MESA_GLSL_VERSION_OVERRIDE - changes the value returned by
-glGetString(GL_SHADING_LANGUAGE_VERSION). Valid values are integers, such as
-"130".  Mesa will not really implement all the features of the given language version
-if it's higher than what's normally reported. (for developers only)
-<li>MESA_GLSL - <a href="shading.html#envvars">shading language compiler options</a>
-</ul>
+</dd>
+<dt><code>MESA_GLSL_VERSION_OVERRIDE</code></dt>
+<dd>changes the value returned by
+    <code>glGetString(GL_SHADING_LANGUAGE_VERSION)</code>.
+    Valid values are integers, such as <code>130</code>.  Mesa will not
+    really implement all the features of the given language version if
+    it's higher than what's normally reported. (for developers only)
+</dd>
+<dt><code>MESA_GLSL_CACHE_DISABLE</code></dt>
+<dd>if set to <code>true</code>, disables the GLSL shader cache</dd>
+<dt><code>MESA_GLSL_CACHE_MAX_SIZE</code></dt>
+<dd>if set, determines the maximum size of the on-disk cache of compiled GLSL
+    programs. Should be set to a number optionally followed by <code>K</code>,
+    <code>M</code>, or <code>G</code> to specify a size in kilobytes,
+    megabytes, or gigabytes. By default, gigabytes will be assumed. And if
+    unset, a maximum size of 1GB will be used. Note: A separate cache might
+    be created for each architecture that Mesa is installed for on your
+    system. For example under the default settings you may end up with a 1GB
+    cache for x86_64 and another 1GB cache for i386.</dd>
+<dt><code>MESA_GLSL_CACHE_DIR</code></dt>
+<dd>if set, determines the directory to be used for the on-disk cache of
+    compiled GLSL programs. If this variable is not set, then the cache will
+    be stored in <code>$XDG_CACHE_HOME/mesa_shader_cache</code> (if that
+    variable is set), or else within <code>.cache/mesa_shader_cache</code>
+    within the user's home directory.
+</dd>
+<dt><code>MESA_GLSL</code></dt>
+<dd><a href="shading.html#envvars">shading language compiler options</a></dd>
+<dt><code>MESA_NO_MINMAX_CACHE</code></dt>
+<dd>when set, the minmax index cache is globally disabled.</dd>
+<dt><code>MESA_SHADER_CAPTURE_PATH</code></dt>
+<dd>see <a href="shading.html#capture">Capturing Shaders</a></dd>
+<dt><code>MESA_SHADER_DUMP_PATH</code> and <code>MESA_SHADER_READ_PATH</code></dt>
+<dd>see <a href="shading.html#replacement">Experimenting with Shader Replacements</a></dd>
+<dt><code>MESA_VK_VERSION_OVERRIDE</code></dt>
+<dd>changes the Vulkan physical device version
+    as returned in <code>VkPhysicalDeviceProperties::apiVersion</code>.
+  <ul>
+    <li>The format should be <code>MAJOR.MINOR[.PATCH]</code></li>
+    <li>This will not let you force a version higher than the driver's
+        instance version as advertised by
+        <code>vkEnumerateInstanceVersion</code></li>
+    <li>This can be very useful for debugging but some features may not be
+        implemented correctly. (For developers only)</li>
+  </ul>
+</dd>
+</dl>
+
+
+<h2>NIR passes enviroment variables</h2>
+<p>
+The following are only applicable for drivers that uses NIR, as they
+modify the behaviour for the common NIR_PASS and NIR_PASS_V macros,
+that wrap calls to NIR lowering/optimizations.
+</p>
+
+<dl>
+  <dt><code>NIR_PRINT</code></dt>
+  <dd>If defined, the resulting NIR shader will be printed out at each succesful NIR lowering/optimization call.</dd>
+  <dt><code>NIR_TEST_CLONE</code></dt>
+  <dd>If defined, cloning a NIR shader would be tested at each succesful NIR lowering/optimization call.</dd>
+  <dt><code>NIR_TEST_SERIALIZE</code></dt>
+  <dd>If defined, serialize and deserialize a NIR shader would be tested at each succesful NIR lowering/optimization call.</dd>
+</dl>
 
 
 <h2>Mesa Xlib driver environment variables</h2>
@@ -105,64 +233,139 @@ if it's higher than what's normally reported. (for developers only)
 The following are only applicable to the Mesa Xlib software driver.
 See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
 </p>
-<ul>
-<li>MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode
-<li>MESA_CI_VISUAL - specifies the X visual and depth for CI mode
-<li>MESA_BACK_BUFFER - specifies how to implement the back color buffer,
-    either "pixmap" or "ximage"
-<li>MESA_GAMMA - gamma correction coefficients for red, green, blue channels
-<li>MESA_XSYNC - enable synchronous X behavior (for debugging only)
-<li>MESA_GLX_FORCE_CI - if set, force GLX to treat 8bpp visuals as CI visuals
-<li>MESA_GLX_FORCE_ALPHA - if set, forces RGB windows to have an alpha channel.
-<li>MESA_GLX_DEPTH_BITS - specifies default number of bits for depth buffer.
-<li>MESA_GLX_ALPHA_BITS - specifies default number of bits for alpha channel.
-</ul>
+<dl>
+<dt><code>MESA_RGB_VISUAL</code></dt>
+<dd>specifies the X visual and depth for RGB mode</dd>
+<dt><code>MESA_CI_VISUAL</code></dt>
+<dd>specifies the X visual and depth for CI mode</dd>
+<dt><code>MESA_BACK_BUFFER</code></dt>
+<dd>specifies how to implement the back color buffer, either
+    <code>pixmap</code> or <code>ximage</code></dd>
+<dt><code>MESA_GAMMA</code></dt>
+<dd>gamma correction coefficients for red, green, blue channels</dd>
+<dt><code>MESA_XSYNC</code></dt>
+<dd>enable synchronous X behavior (for debugging only)</dd>
+<dt><code>MESA_GLX_FORCE_CI</code></dt>
+<dd>if set, force GLX to treat 8bpp visuals as CI visuals</dd>
+<dt><code>MESA_GLX_FORCE_ALPHA</code></dt>
+<dd>if set, forces RGB windows to have an alpha channel.</dd>
+<dt><code>MESA_GLX_DEPTH_BITS</code></dt>
+<dd>specifies default number of bits for depth buffer.</dd>
+<dt><code>MESA_GLX_ALPHA_BITS</code></dt>
+<dd>specifies default number of bits for alpha channel.</dd>
+</dl>
 
 
 <h2>i945/i965 driver environment variables (non-Gallium)</h2>
 
-<ul>
-<li>INTEL_NO_HW - if set to 1, prevents batches from being submitted to the hardware.
-   This is useful for debugging hangs, etc.</li>
-<li>INTEL_DEBUG - a comma-separated list of named flags, which do various things:
-<ul>
-   <li>tex - emit messages about textures.</li>
-   <li>state - emit messages about state flag tracking</li>
-   <li>blit - emit messages about blit operations</li>
-   <li>miptree - emit messages about miptrees</li>
-   <li>perf - emit messages about performance issues</li>
-   <li>perfmon - emit messages about AMD_performance_monitor</li>
-   <li>bat - emit batch information</li>
-   <li>pix - emit messages about pixel operations</li>
-   <li>buf - emit messages about buffer objects</li>
-   <li>reg - emit messages about regions</li>
-   <li>fbo - emit messages about framebuffers</li>
-   <li>fs - dump shader assembly for fragment shaders</li>
-   <li>gs - dump shader assembly for geometry shaders</li>
-   <li>sync - emit messages about synchronization</li>
-   <li>prim - emit messages about drawing primitives</li>
-   <li>vert - emit messages about vertex assembly</li>
-   <li>dri - emit messages about the DRI interface</li>
-   <li>sf - emit messages about the strips &amp; fans unit (for old gens, includes the SF program)</li>
-   <li>stats - enable statistics counters. you probably actually want perfmon or intel_gpu_top instead.</li>
-   <li>urb - emit messages about URB setup</li>
-   <li>vs - dump shader assembly for vertex shaders</li>
-   <li>clip - emit messages about the clip unit (for old gens, includes the CLIP program)</li>
-   <li>aub - dump batches into an AUB trace for use with simulation tools</li>
-   <li>shader_time - record how much GPU time is spent in each shader</li>
-   <li>no16 - suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</li>
-   <li>blorp - emit messages about the blorp operations (blits &amp; clears)</li>
-   <li>nodualobj - suppress generation of dual-object geometry shader code</li>
-   <li>optimizer - dump shader assembly to files at each optimization pass and iteration that make progress</li>
-</ul>
-</ul>
+<dl>
+<dt><code>INTEL_NO_HW</code></dt>
+<dd>if set to 1, prevents batches from being submitted to the hardware.
+    This is useful for debugging hangs, etc.</dd>
+<dt><code>INTEL_DEBUG</code></dt>
+<dd>a comma-separated list of named flags, which do various things:
+<dl>
+   <dt><code>ann</code></dt>
+   <dd>annotate IR in assembly dumps</dd>
+   <dt><code>aub</code></dt>
+   <dd>dump batches into an AUB trace for use with simulation tools</dd>
+   <dt><code>bat</code></dt>
+   <dd>emit batch information</dd>
+   <dt><code>blit</code></dt>
+   <dd>emit messages about blit operations</dd>
+   <dt><code>blorp</code></dt>
+   <dd>emit messages about the blorp operations (blits &amp; clears)</dd>
+   <dt><code>buf</code></dt>
+   <dd>emit messages about buffer objects</dd>
+   <dt><code>clip</code></dt>
+   <dd>emit messages about the clip unit (for old gens, includes the CLIP program)</dd>
+   <dt><code>color</code></dt>
+   <dd>use color in output</dd>
+   <dt><code>cs</code></dt>
+   <dd>dump shader assembly for compute shaders</dd>
+   <dt><code>do32</code></dt>
+   <dd>generate compute shader SIMD32 programs even if workgroup size doesn't exceed the SIMD16 limit</dd>
+   <dt><code>dri</code></dt>
+   <dd>emit messages about the DRI interface</dd>
+   <dt><code>fbo</code></dt>
+   <dd>emit messages about framebuffers</dd>
+   <dt><code>fs</code></dt>
+   <dd>dump shader assembly for fragment shaders</dd>
+   <dt><code>gs</code></dt>
+   <dd>dump shader assembly for geometry shaders</dd>
+   <dt><code>hex</code></dt>
+   <dd>print instruction hex dump with the disassembly</dd>
+   <dt><code>l3</code></dt>
+   <dd>emit messages about the new L3 state during transitions</dd>
+   <dt><code>miptree</code></dt>
+   <dd>emit messages about miptrees</dd>
+   <dt><code>no8</code></dt>
+   <dd>don't generate SIMD8 fragment shader</dd>
+   <dt><code>no16</code></dt>
+   <dd>suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</dd>
+   <dt><code>nocompact</code></dt>
+   <dd>disable instruction compaction</dd>
+   <dt><code>nodualobj</code></dt>
+   <dd>suppress generation of dual-object geometry shader code</dd>
+   <dt><code>nofc</code></dt>
+   <dd>disable fast clears</dd>
+   <dt><code>norbc</code></dt>
+   <dd>disable single sampled render buffer compression</dd>
+   <dt><code>optimizer</code></dt>
+   <dd>dump shader assembly to files at each optimization pass and iteration that make progress</dd>
+   <dt><code>perf</code></dt>
+   <dd>emit messages about performance issues</dd>
+   <dt><code>perfmon</code></dt>
+   <dd>emit messages about <code>AMD_performance_monitor</code></dd>
+   <dt><code>pix</code></dt>
+   <dd>emit messages about pixel operations</dd>
+   <dt><code>prim</code></dt>
+   <dd>emit messages about drawing primitives</dd>
+   <dt><code>reemit</code></dt>
+   <dd>mark all state dirty on each draw call</dd>
+   <dt><code>sf</code></dt>
+   <dd>emit messages about the strips &amp; fans unit (for old gens, includes the SF program)</dd>
+   <dt><code>shader_time</code></dt>
+   <dd>record how much GPU time is spent in each shader</dd>
+   <dt><code>spill_fs</code></dt>
+   <dd>force spilling of all registers in the scalar backend (useful to debug spilling code)</dd>
+   <dt><code>spill_vec4</code></dt>
+   <dd>force spilling of all registers in the vec4 backend (useful to debug spilling code)</dd>
+   <dt><code>state</code></dt>
+   <dd>emit messages about state flag tracking</dd>
+   <dt><code>submit</code></dt>
+   <dd>emit batchbuffer usage statistics</dd>
+   <dt><code>sync</code></dt>
+   <dd>after sending each batch, emit a message and wait for that batch to finish rendering</dd>
+   <dt><code>tcs</code></dt>
+   <dd>dump shader assembly for tessellation control shaders</dd>
+   <dt><code>tes</code></dt>
+   <dd>dump shader assembly for tessellation evaluation shaders</dd>
+   <dt><code>tex</code></dt>
+   <dd>emit messages about textures.</dd>
+   <dt><code>urb</code></dt>
+   <dd>emit messages about URB setup</dd>
+   <dt><code>vert</code></dt>
+   <dd>emit messages about vertex assembly</dd>
+   <dt><code>vs</code></dt>
+   <dd>dump shader assembly for vertex shaders</dd>
+</dl>
+</dd>
+<dt><code>INTEL_SCALAR_VS</code> (or <code>TCS</code>, <code>TES</code>,
+    <code>GS</code>)</dt>
+<dd>force scalar/vec4 mode for a shader stage (Gen8-9 only)</dd>
+<dt><code>INTEL_PRECISE_TRIG</code></dt>
+<dd>if set to 1, true or yes, then the driver prefers accuracy over
+    performance in trig functions.</dd>
+</dl>
 
 
 <h2>Radeon driver environment variables (radeon, r200, and r300g)</h2>
 
-<ul>
-<li>RADEON_NO_TCL - if set, disable hardware-accelerated Transform/Clip/Lighting.
-</ul>
+<dl>
+<dt><code>RADEON_NO_TCL</code></dt>
+<dd>if set, disable hardware-accelerated Transform/Clip/Lighting.</dd>
+</dl>
 
 
 <h2>EGL environment variables</h2>
@@ -175,74 +378,403 @@ Mesa EGL supports different sets of environment variables.  See the
 
 <h2>Gallium environment variables</h2>
 
-<ul>
-<li>GALLIUM_HUD - draws various information on the screen, like framerate,
+<dl>
+<dt><code>GALLIUM_HUD</code></dt>
+<dd>draws various information on the screen, like framerate,
     cpu load, driver statistics, performance counters, etc.
-    Set GALLIUM_HUD=help and run e.g. glxgears for more info.
-<li>GALLIUM_HUD_PERIOD - sets the hud update rate in seconds (float). Use zero
-    to update every frame. The default period is 1/2 second.
-<li>GALLIUM_HUD_VISIBLE - control default visibility, defaults to true.
-<li>GALLIUM_HUD_TOGGLE_SIGNAL - toggle visibility via user specified signal.
+    Set <code>GALLIUM_HUD=help</code> and run e.g.
+    <code>glxgears</code> for more info.</dd>
+<dt><code>GALLIUM_HUD_PERIOD</code></dt>
+<dd>sets the hud update rate in seconds (float). Use zero
+    to update every frame. The default period is 1/2 second.</dd>
+<dt><code>GALLIUM_HUD_VISIBLE</code></dt>
+<dd>control default visibility, defaults to true.</dd>
+<dt><code>GALLIUM_HUD_TOGGLE_SIGNAL</code></dt>
+<dd>toggle visibility via user specified signal.
     Especially useful to toggle hud at specific points of application and
     disable for unencumbered viewing the rest of the time. For example, set
-    GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_SIGNAL_TOGGLE to 10 (SIGUSR1).
-    Use kill -10 <pid> to toggle the hud as desired.
-<li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, etc.
-    rather than stderr.
-<li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
-    variables which are used, and their current values.
-<li>GALLIUM_DUMP_CPU - if non-zero, print information about the CPU on start-up
-<li>TGSI_PRINT_SANITY - if set, do extra sanity checking on TGSI shaders and
-    print any errors to stderr.
-<LI>DRAW_FSE - ???
-<LI>DRAW_NO_FSE - ???
-<li>DRAW_USE_LLVM - if set to zero, the draw module will not use LLVM to execute
-    shaders, vertex fetch, etc.
-<li>ST_DEBUG - controls debug output from the Mesa/Gallium state tracker.
-Setting to "tgsi", for example, will print all the TGSI shaders.
-See src/mesa/state_tracker/st_debug.c for other options.
-</ul>
+    <code>GALLIUM_HUD_VISIBLE</code> to <code>false</code> and
+    <code>GALLIUM_HUD_TOGGLE_SIGNAL</code> to <code>10</code>
+    (<code>SIGUSR1</code>).
+    Use <code>kill -10 &lt;pid&gt;</code> to toggle the hud as desired.</dd>
+<dt><code>GALLIUM_HUD_SCALE</code></dt>
+<dd>Scale hud by an integer factor, for high DPI displays. Default is 1.</dd>
+<dt><code>GALLIUM_HUD_DUMP_DIR</code></dt>
+<dd>specifies a directory for writing the displayed hud values into files.</dd>
+<dt><code>GALLIUM_DRIVER</code></dt>
+<dd>useful in combination with <code>LIBGL_ALWAYS_SOFTWARE=true</code> for
+    choosing one of the software renderers <code>softpipe</code>,
+    <code>llvmpipe</code> or <code>swr</code>.</dd>
+<dt><code>GALLIUM_LOG_FILE</code></dt>
+<dd>specifies a file for logging all errors, warnings, etc.
+    rather than stderr.</dd>
+<dt><code>GALLIUM_PRINT_OPTIONS</code></dt>
+<dd>if non-zero, print all the Gallium environment variables which are
+    used, and their current values.</dd>
+<dt><code>GALLIUM_DUMP_CPU</code></dt>
+<dd>if non-zero, print information about the CPU on start-up</dd>
+<dt><code>TGSI_PRINT_SANITY</code></dt>
+<dd>if set, do extra sanity checking on TGSI shaders and
+    print any errors to stderr.</dd>
+<dt><code>DRAW_FSE</code></dt>
+<dd>???</dd>
+<dt><code>DRAW_NO_FSE</code></dt>
+<dd>???</dd>
+<dt><code>DRAW_USE_LLVM</code></dt>
+<dd>if set to zero, the draw module will not use LLVM to execute
+    shaders, vertex fetch, etc.</dd>
+<dt><code>ST_DEBUG</code></dt>
+<dd>controls debug output from the Mesa/Gallium state tracker.
+    Setting to <code>tgsi</code>, for example, will print all the TGSI
+    shaders. See <code>src/mesa/state_tracker/st_debug.c</code> for other
+    options.</dd>
+</dl>
+
+<h3>Clover state tracker environment variables</h3>
+
+<dl>
+<dt><code>CLOVER_EXTRA_BUILD_OPTIONS</code></dt>
+<dd>allows specifying additional compiler and linker
+    options. Specified options are appended after the options set by the OpenCL
+    program in <code>clBuildProgram</code>.</dd>
+<dt><code>CLOVER_EXTRA_COMPILE_OPTIONS</code></dt>
+<dd>allows specifying additional compiler
+    options. Specified options are appended after the options set by the OpenCL
+    program in <code>clCompileProgram</code>.</dd>
+<dt><code>CLOVER_EXTRA_LINK_OPTIONS</code></dt>
+<dd>allows specifying additional linker
+    options. Specified options are appended after the options set by the OpenCL
+    program in <code>clLinkProgram</code>.</dd>
+</dl>
+
 
 <h3>Softpipe driver environment variables</h3>
-<ul>
-<li>SOFTPIPE_DUMP_FS - if set, the softpipe driver will print fragment shaders
-    to stderr
-<li>SOFTPIPE_DUMP_GS - if set, the softpipe driver will print geometry shaders
-    to stderr
-<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd.  For profiling purposes.
-<li>SOFTPIPE_USE_LLVM - if set, the softpipe driver will try to use LLVM JIT for
-    vertex shading processing.
-</ul>
+<dl>
+<dt><code>SOFTPIPE_DUMP_FS</code></dt>
+<dd>if set, the softpipe driver will print fragment shaders to stderr</dd>
+<dt><code>SOFTPIPE_DUMP_GS</code></dt>
+<dd>if set, the softpipe driver will print geometry shaders to stderr</dd>
+<dt><code>SOFTPIPE_NO_RAST</code></dt>
+<dd>if set, rasterization is no-op'd.  For profiling purposes.</dd>
+<dt><code>SOFTPIPE_USE_LLVM</code></dt>
+<dd>if set, the softpipe driver will try to use LLVM JIT for
+    vertex shading processing.</dd>
+</dl>
 
 
 <h3>LLVMpipe driver environment variables</h3>
-<ul>
-<li>LP_NO_RAST - if set LLVMpipe will no-op rasterization
-<li>LP_DEBUG - a comma-separated list of debug options is accepted.  See the
-    source code for details.
-<li>LP_PERF - a comma-separated list of options to selectively no-op various
-    parts of the driver.  See the source code for details.
-<li>LP_NUM_THREADS - an integer indicating how many threads to use for rendering.
-    Zero turns of threading completely.  The default value is the number of CPU
-    cores present.
-</ul>
+<dl>
+<dt><code>LP_NO_RAST</code></dt>
+<dd>if set LLVMpipe will no-op rasterization</dd>
+<dt><code>LP_DEBUG</code></dt>
+<dd>a comma-separated list of debug options is accepted.  See the
+    source code for details.</dd>
+<dt><code>LP_PERF</code></dt>
+<dd>a comma-separated list of options to selectively no-op various
+    parts of the driver.  See the source code for details.</dd>
+<dt><code>LP_NUM_THREADS</code></dt>
+<dd>an integer indicating how many threads to use for rendering.
+    Zero turns off threading completely.  The default value is the number of CPU
+    cores present.</dd>
+</dl>
 
 <h3>VMware SVGA driver environment variables</h3>
-<ul>
-<li>SVGA_FORCE_SWTNL - force use of software vertex transformation
-<li>SVGA_NO_SWTNL - don't allow software vertex transformation fallbacks
-(will often result in incorrect rendering).
-<li>SVGA_DEBUG - for dumping shaders, constant buffers, etc.  See the code
-for details.
-<li>See the driver code for other, lesser-used variables.
-</ul>
-
+<dl>
+<dt><code>SVGA_FORCE_SWTNL</code></dt>
+<dd>force use of software vertex transformation</dd>
+<dt><code>SVGA_NO_SWTNL</code></dt>
+<dd>don't allow software vertex transformation fallbacks (will often result
+    in incorrect rendering).</dd>
+<dt><code>SVGA_DEBUG</code></dt>
+<dd>for dumping shaders, constant buffers, etc.  See the code for
+    details.</dd>
+<dt><code>SVGA_EXTRA_LOGGING</code></dt>
+<dd>if set, enables extra logging to the <code>vmware.log</code> file,
+    such as the OpenGL program's name and command line arguments.</dd>
+<dt><code>SVGA_NO_LOGGING</code></dt>
+<dd>if set, disables logging to the <code>vmware.log</code> file. This is
+    useful when using Valgrind because it otherwise crashes when
+    initializing the host log feature.</dd>
+</dl>
+<p>See the driver code for other, lesser-used variables.</p>
+
+<h3>WGL environment variables</h3>
+<dl>
+<dt><code>WGL_SWAP_INTERVAL</code></dt>
+<dd>to set a swap interval, equivalent to calling
+    <code>wglSwapIntervalEXT()</code> in an application.  If this
+    environment variable is set, application calls to
+    <code>wglSwapIntervalEXT()</code> will have no effect.</dd>
+</dl>
 
 <h3>VA-API state tracker environment variables</h3>
-<ul>
-<li>VAAPI_MPEG4_ENABLED - enable MPEG4 for VA-API, disabled by default.
-</ul>
-
+<dl>
+<dt><code>VAAPI_MPEG4_ENABLED</code></dt>
+<dd>enable MPEG4 for VA-API, disabled by default.</dd>
+</dl>
+
+
+<h3>VC4 driver environment variables</h3>
+<dl>
+<dt><code>VC4_DEBUG</code></dt>
+<dd>a comma-separated list of named flags, which do various things:
+<dl>
+   <dt><code>cl</code></dt>
+   <dd>dump command list during creation</dd>
+   <dt><code>qpu</code></dt>
+   <dd>dump generated QPU instructions</dd>
+   <dt><code>qir</code></dt>
+   <dd>dump QPU IR during program compile</dd>
+   <dt><code>nir</code></dt>
+   <dd>dump NIR during program compile</dd>
+   <dt><code>tgsi</code></dt>
+   <dd>dump TGSI during program compile</dd>
+   <dt><code>shaderdb</code></dt>
+   <dd>dump program compile information for shader-db analysis</dd>
+   <dt><code>perf</code></dt>
+   <dd>print during performance-related events</dd>
+   <dt><code>norast</code></dt>
+   <dd>skip actual hardware execution of commands</dd>
+   <dt><code>always_flush</code></dt>
+   <dd>flush after each draw call</dd>
+   <dt><code>always_sync</code></dt>
+   <dd>wait for finish after each flush</dd>
+   <dt><code>dump</code></dt>
+   <dd>write a GPU command stream trace file (VC4 simulator only)</dd>
+</dl>
+</dd>
+</dl>
+
+
+<h3>RADV driver environment variables</h3>
+<dl>
+<dt><code>RADV_DEBUG</code></dt>
+<dd>a comma-separated list of named flags, which do various things:
+<dl>
+   <dt><code>allbos</code></dt>
+   <dd>force all allocated buffers to be referenced in submissions</dd>
+   <dt><code>allentrypoints</code></dt>
+   <dd>enable all device/instance entrypoints</dd>
+   <dt><code>checkir</code></dt>
+   <dd>validate the LLVM IR before LLVM compiles the shader</dd>
+   <dt><code>errors</code></dt>
+   <dd>display more info about errors</dd>
+   <dt><code>info</code></dt>
+   <dd>show GPU-related information</dd>
+   <dt><code>metashaders</code></dt>
+   <dd>dump internal meta shaders</dd>
+   <dt><code>nobinning</code></dt>
+   <dd>disable primitive binning</dd>
+   <dt><code>nocache</code></dt>
+   <dd>disable shaders cache</dd>
+   <dt><code>nocompute</code></dt>
+   <dd>disable compute queue</dd>
+   <dt><code>nodcc</code></dt>
+   <dd>disable Delta Color Compression (DCC) on images</dd>
+   <dt><code>nodynamicbounds</code></dt>
+   <dd>do not check OOB access for dynamic descriptors</dd>
+   <dt><code>nofastclears</code></dt>
+   <dd>disable fast color/depthstencil clears</dd>
+   <dt><code>nohiz</code></dt>
+   <dd>disable HIZ for depthstencil images</dd>
+   <dt><code>noibs</code></dt>
+   <dd>disable directly recording command buffers in GPU-visible memory</dd>
+   <dt><code>noloadstoreopt</code></dt>
+   <dd>disable LLVM SILoadStoreOptimizer pass</dd>
+   <dt><code>nomemorycache</code></dt>
+   <dd>disable memory shaders cache</dd>
+   <dt><code>nongg</code></dt>
+   <dd>disable NGG for GFX10+</dd>
+   <dt><code>nooutoforder</code></dt>
+   <dd>disable out-of-order rasterization</dd>
+   <dt><code>noshaderballot</code></dt>
+   <dd>disable shader ballot</dd>
+   <dt><code>nothreadllvm</code></dt>
+   <dd>disable LLVM threaded compilation</dd>
+   <dt><code>preoptir</code></dt>
+   <dd>dump LLVM IR before any optimizations</dd>
+   <dt><code>shaders</code></dt>
+   <dd>dump shaders</dd>
+   <dt><code>shaderstats</code></dt>
+   <dd>dump shader statistics</dd>
+   <dt><code>spirv</code></dt>
+   <dd>dump SPIR-V</dd>
+   <dt><code>startup</code></dt>
+   <dd>display info at startup</dd>
+   <dt><code>syncshaders</code></dt>
+   <dd>synchronize shaders after all draws/dispatches</dd>
+   <dt><code>vmfaults</code></dt>
+   <dd>check for VM memory faults via dmesg</dd>
+   <dt><code>zerovram</code></dt>
+   <dd>initialize all memory allocated in VRAM as zero</dd>
+</dl>
+</dd>
+<dt><code>RADV_FORCE_FAMILY</code></dt>
+<dd>create a null device to compile shaders without a AMD GPU (eg. gfx900)</dd>
+<dt><code>RADV_PERFTEST</code></dt>
+<dd>a comma-separated list of named flags, which do various things:
+<dl>
+   <dt><code>aco</code></dt>
+   <dd>enable ACO experimental compiler</dd>
+   <dt><code>bolist</code></dt>
+   <dd>enable the global BO list</dd>
+   <dt><code>cswave32</code></dt>
+   <dd>enable wave32 for compute shaders (GFX10+)</dd>
+   <dt><code>dccmsaa</code></dt>
+   <dd>enable DCC for MSAA images</dd>
+   <dt><code>dfsm</code></dt>
+   <dd>enable dfsm</dd>
+   <dt><code>gewave32</code></dt>
+   <dd>enable wave32 for vertex/tess/geometry shaders (GFX10+)</dd>
+   <dt><code>localbos</code></dt>
+   <dd>enable local BOs</dd>
+   <dt><code>pswave32</code></dt>
+   <dd>enable wave32 for pixel shaders (GFX10+)</dd>
+   <dt><code>shader_ballot</code></dt>
+   <dd>enable shader ballot</dd>
+   <dt><code>tccompatcmask</code></dt>
+   <dd>enable TC-compat cmask for MSAA images</dd>
+</dl>
+</dd>
+<dt><code>RADV_SECURE_COMPILE_THREADS</code></dt>
+<dd>maximum number of secure compile threads (up to 32)</dd>
+<dt><code>RADV_TEX_ANISO</code></dt>
+<dd>force anisotropy filter (up to 16)</dd>
+<dt><code>RADV_TRACE_FILE</code></dt>
+<dd>generate cmdbuffer tracefiles when a GPU hang is detected</dd>
+<dt><code>ACO_DEBUG</code></dt>
+<dd>a comma-separated list of named flags, which do various things:
+<dl>
+   <dt><code>validateir</code></dt>
+   <dd>validate the ACO IR at various points of compilation (enabled by default for debug/debugoptimized builds)</dd>
+   <dt><code>validatera</code></dt>
+   <dd>validate register assignment of ACO IR and catches many RA bugs</dd>
+   <dt><code>perfwarn</code></dt>
+   <dd>abort on some suboptimal code generation</dd>
+</dl>
+</dd>
+</dl>
+
+<h3>radeonsi driver environment variables</h3>
+<dl>
+<dt><code>AMD_DEBUG</code></dt>
+<dd>a comma-separated list of named flags, which do various things:</dd>
+<dl>
+<dd></dd>
+  <h4>Disable features / workaround flags (useful to diagnose an issue):</h4>
+  <dt><code>nodma</code></dt>
+  <dd>Disable SDMA</dd>
+  <dt><code>nodmaclear</code></dt>
+  <dd>Disable SDMA clears</dd>
+  <dt><code>nodmacopyimage</code></dt>
+  <dd>Disable SDMA image copies</dd>
+  <dt><code>zerovram</code></dt>
+  <dd>Clear VRAM allocations.</dd>
+  <dt><code>nodcc</code></dt>
+  <dd>Disable DCC.</dd>
+  <dt><code>nodccclear</code></dt>
+  <dd>Disable DCC fast clear.</dd>
+  <dt><code>nodccfb</code></dt>
+  <dd>Disable separate DCC on the main framebuffer</dd>
+  <dt><code>nodccmsaa</code></dt>
+  <dd>Disable DCC for MSAA</dd>
+  <dt><code>nodpbb</code></dt>
+  <dd>Disable DPBB.</dd>
+  <dt><code>nodfsm</code></dt>
+  <dd>Disable DFSM.</dd>
+  <dt><code>notiling</code></dt>
+  <dd>Disable tiling</dd>
+  <dt><code>nofmask</code></dt>
+  <dd>Disable MSAA compression</dd>
+  <dt><code>nohyperz</code></dt>
+  <dd>Disable Hyper-Z</dd>
+  <dt><code>norbplus</code></dt>
+  <dd>Disable RB+.</dd>
+  <dt><code>no2d</code></dt>
+  <dd>Disable 2D tiling</dd>
+  <h4>Info flags:</h4>
+  <dt><code>info</code></dt>
+  <dd>Print driver information</dd>
+  <dt><code>tex</code></dt>
+  <dd>Print texture info</dd>
+  <dt><code>compute</code></dt>
+  <dd>Print compute info</dd>
+  <dt><code>vm</code></dt>
+  <dd>Print virtual addresses when creating resources</dd>
+  <h4>Print shaders flags:</h4>
+  <dt><code>vs</code></dt>
+  <dd>Print vertex shaders</dd>
+  <dt><code>ps</code></dt>
+  <dd>Print pixel shaders</dd>
+  <dt><code>gs</code></dt>
+  <dd>Print geometry shaders</dd>
+  <dt><code>tcs</code></dt>
+  <dd>Print tessellation control shaders</dd>
+  <dt><code>tes</code></dt>
+  <dd>Print tessellation evaluation shaders</dd>
+  <dt><code>cs</code></dt>
+  <dd>Print compute shaders</dd>
+  <dt><code>noir</code></dt>
+  <dd>Don't print the LLVM IR</dd>
+  <dt><code>nonir</code></dt>
+  <dd>Don't print NIR when printing shaders</dd>
+  <dt><code>noasm</code></dt>
+  <dd>Don't print disassembled shaders</dd>
+  <dt><code>preoptir</code></dt>
+  <dd>Print the LLVM IR before initial optimizations</dd>
+  <h4>Shader compilation tuning flags:</h4>
+  <dt><code>gisel</code></dt>
+  <dd>Enable LLVM global instruction selector.</dd>
+  <dt><code>w32ge</code></dt>
+  <dd>Use Wave32 for vertex, tessellation, and geometry shaders.</dd>
+  <dt><code>w32ps</code></dt>
+  <dd>Use Wave32 for pixel shaders.</dd>
+  <dt><code>w32cs</code></dt>
+  <dd>Use Wave32 for computes shaders.</dd>
+  <dt><code>w64ge</code></dt>
+  <dd>Use Wave64 for vertex, tessellation, and geometry shaders.</dd>
+  <dt><code>w64ps</code></dt>
+  <dd>Use Wave64 for pixel shaders.</dd>
+  <dt><code>w64cs</code></dt>
+  <dd>Use Wave64 for computes shaders.</dd>
+  <dt><code>checkir</code></dt>
+  <dd>Enable additional sanity checks on shader IR</dd>
+  <dt><code>mono</code></dt>
+  <dd>Use old-style monolithic shaders compiled on demand</dd>
+  <dt><code>nooptvariant</code></dt>
+  <dd>Disable compiling optimized shader variants.</dd>
+  <h4>Advanced usage flags:</h4>
+  <dt><code>forcedma</code></dt>
+  <dd>Use SDMA for all operations when possible.</dd>
+  <dt><code>nowc</code></dt>
+  <dd>Disable GTT write combining</dd>
+  <dt><code>check_vm</code></dt>
+  <dd>Check VM faults and dump debug info.</dd>
+  <dt><code>reserve_vmid</code></dt>
+  <dd>Force VMID reservation per context.</dd>
+  <dt><code>nogfx</code></dt>
+  <dd>Disable graphics. Only multimedia compute paths can be used.</dd>
+  <dt><code>nongg</code></dt>
+  <dd>Disable NGG and use the legacy pipeline.</dd>
+  <dt><code>nggc</code></dt>
+  <dd>Always use NGG culling even when it can hurt.</dd>
+  <dt><code>nonggc</code></dt>
+  <dd>Disable NGG culling.</dd>
+  <dt><code>alwayspd</code></dt>
+  <dd>Always enable the primitive discard compute shader.</dd>
+  <dt><code>pd</code></dt>
+  <dd>Enable the primitive discard compute shader for large draw calls.</dd>
+  <dt><code>nopd</code></dt>
+  <dd>Disable the primitive discard compute shader.</dd>
+  <dt><code>switch_on_eop</code></dt>
+  <dd>Program WD/IA to switch on end-of-packet.</dd>
+  <dt><code>nooutoforder</code></dt>
+  <dd>Disable out-of-order rasterization</dd>
+  <dt><code>dpbb</code></dt>
+  <dd>Enable DPBB.</dd>
+  <dt><code>dfsm</code></dt>
+  <dd>Enable DFSM.</dd>
+</dl>
 
 <p>
 Other Gallium drivers have their own environment variables.  These may change