17ec681f3SmrgEnvironment Variables
27ec681f3Smrg=====================
37ec681f3Smrg
47ec681f3SmrgNormally, no environment variables need to be set. Most of the
57ec681f3Smrgenvironment variables used by Mesa/Gallium are for debugging purposes,
67ec681f3Smrgbut they can sometimes be useful for debugging end-user issues.
77ec681f3Smrg
87ec681f3SmrgLibGL environment variables
97ec681f3Smrg---------------------------
107ec681f3Smrg
117ec681f3Smrg:envvar:`LIBGL_DEBUG`
127ec681f3Smrg   If defined debug information will be printed to stderr. If set to
137ec681f3Smrg   ``verbose`` additional information will be printed.
147ec681f3Smrg:envvar:`LIBGL_DRIVERS_PATH`
157ec681f3Smrg   colon-separated list of paths to search for DRI drivers
167ec681f3Smrg:envvar:`LIBGL_ALWAYS_INDIRECT`
177ec681f3Smrg   if set to ``true``, forces an indirect rendering context/connection.
187ec681f3Smrg:envvar:`LIBGL_ALWAYS_SOFTWARE`
197ec681f3Smrg   if set to ``true``, always use software rendering
207ec681f3Smrg:envvar:`LIBGL_NO_DRAWARRAYS`
217ec681f3Smrg   if set to ``true``, do not use DrawArrays GLX protocol (for
227ec681f3Smrg   debugging)
237ec681f3Smrg:envvar:`LIBGL_SHOW_FPS`
247ec681f3Smrg   print framerate to stdout based on the number of ``glXSwapBuffers``
257ec681f3Smrg   calls per second.
267ec681f3Smrg:envvar:`LIBGL_DRI2_DISABLE`
277ec681f3Smrg   disable DRI2 if set to ``true``.
287ec681f3Smrg:envvar:`LIBGL_DRI3_DISABLE`
297ec681f3Smrg   disable DRI3 if set to ``true``.
307ec681f3Smrg
317ec681f3SmrgCore Mesa environment variables
327ec681f3Smrg-------------------------------
337ec681f3Smrg
347ec681f3Smrg:envvar:`MESA_NO_ASM`
357ec681f3Smrg   if set, disables all assembly language optimizations
367ec681f3Smrg:envvar:`MESA_NO_MMX`
377ec681f3Smrg   if set, disables Intel MMX optimizations
387ec681f3Smrg:envvar:`MESA_NO_3DNOW`
397ec681f3Smrg   if set, disables AMD 3DNow! optimizations
407ec681f3Smrg:envvar:`MESA_NO_SSE`
417ec681f3Smrg   if set, disables Intel SSE optimizations
427ec681f3Smrg:envvar:`MESA_NO_ERROR`
437ec681f3Smrg   if set to 1, error checking is disabled as per ``KHR_no_error``. This
447ec681f3Smrg   will result in undefined behavior for invalid use of the API, but
457ec681f3Smrg   can reduce CPU use for apps that are known to be error free.
467ec681f3Smrg:envvar:`MESA_DEBUG`
477ec681f3Smrg   if set, error messages are printed to stderr. For example, if the
487ec681f3Smrg   application generates a ``GL_INVALID_ENUM`` error, a corresponding
497ec681f3Smrg   error message indicating where the error occurred, and possibly why,
507ec681f3Smrg   will be printed to stderr. For release builds, :envvar:`MESA_DEBUG`
517ec681f3Smrg   defaults to off (no debug output). :envvar:`MESA_DEBUG` accepts the
527ec681f3Smrg   following comma-separated list of named flags, which adds extra
537ec681f3Smrg   behavior to just set :envvar:`MESA_DEBUG` to ``1``:
547ec681f3Smrg
557ec681f3Smrg   ``silent``
567ec681f3Smrg      turn off debug messages. Only useful for debug builds.
577ec681f3Smrg   ``flush``
587ec681f3Smrg      flush after each drawing command
597ec681f3Smrg   ``incomplete_tex``
607ec681f3Smrg      extra debug messages when a texture is incomplete
617ec681f3Smrg   ``incomplete_fbo``
627ec681f3Smrg      extra debug messages when a FBO is incomplete
637ec681f3Smrg   ``context``
647ec681f3Smrg      create a debug context (see ``GLX_CONTEXT_DEBUG_BIT_ARB``) and
657ec681f3Smrg      print error and performance messages to stderr (or
667ec681f3Smrg      ``MESA_LOG_FILE``).
677ec681f3Smrg
687ec681f3Smrg:envvar:`MESA_LOG_FILE`
697ec681f3Smrg   specifies a file name for logging all errors, warnings, etc., rather
707ec681f3Smrg   than stderr
717ec681f3Smrg:envvar:`MESA_TEX_PROG`
727ec681f3Smrg   if set, implement conventional texture environment modes with fragment
737ec681f3Smrg   programs (intended for developers only)
747ec681f3Smrg:envvar:`MESA_TNL_PROG`
757ec681f3Smrg   if set, implement conventional vertex transformation operations with
767ec681f3Smrg   vertex programs (intended for developers only). Setting this variable
777ec681f3Smrg   automatically sets the :envvar:`MESA_TEX_PROG` variable as well.
787ec681f3Smrg:envvar:`MESA_EXTENSION_OVERRIDE`
797ec681f3Smrg   can be used to enable/disable extensions. A value such as
807ec681f3Smrg   ``GL_EXT_foo -GL_EXT_bar`` will enable the ``GL_EXT_foo`` extension
817ec681f3Smrg   and disable the ``GL_EXT_bar`` extension.
827ec681f3Smrg:envvar:`MESA_EXTENSION_MAX_YEAR`
837ec681f3Smrg   The ``GL_EXTENSIONS`` string returned by Mesa is sorted by extension
847ec681f3Smrg   year. If this variable is set to year X, only extensions defined on
857ec681f3Smrg   or before year X will be reported. This is to work-around a bug in
867ec681f3Smrg   some games where the extension string is copied into a fixed-size
877ec681f3Smrg   buffer without truncating. If the extension string is too long, the
887ec681f3Smrg   buffer overrun can cause the game to crash. This is a work-around for
897ec681f3Smrg   that.
907ec681f3Smrg:envvar:`MESA_GL_VERSION_OVERRIDE`
917ec681f3Smrg   changes the value returned by ``glGetString(GL_VERSION)`` and
927ec681f3Smrg   possibly the GL API type.
937ec681f3Smrg
947ec681f3Smrg   -  The format should be ``MAJOR.MINOR[FC|COMPAT]``
957ec681f3Smrg   -  ``FC`` is an optional suffix that indicates a forward compatible
967ec681f3Smrg      context. This is only valid for versions >= 3.0.
977ec681f3Smrg   -  ``COMPAT`` is an optional suffix that indicates a compatibility
987ec681f3Smrg      context or ``GL_ARB_compatibility`` support. This is only valid
997ec681f3Smrg      for versions >= 3.1.
1007ec681f3Smrg   -  GL versions <= 3.0 are set to a compatibility (non-Core) profile
1017ec681f3Smrg   -  GL versions = 3.1, depending on the driver, it may or may not have
1027ec681f3Smrg      the ``ARB_compatibility`` extension enabled.
1037ec681f3Smrg   -  GL versions >= 3.2 are set to a Core profile
1047ec681f3Smrg   -  Examples:
1057ec681f3Smrg
1067ec681f3Smrg      ``2.1``
1077ec681f3Smrg         select a compatibility (non-Core) profile with GL version 2.1.
1087ec681f3Smrg      ``3.0``
1097ec681f3Smrg         select a compatibility (non-Core) profile with GL version 3.0.
1107ec681f3Smrg      ``3.0FC``
1117ec681f3Smrg         select a Core+Forward Compatible profile with GL version 3.0.
1127ec681f3Smrg      ``3.1``
1137ec681f3Smrg         select GL version 3.1 with ``GL_ARB_compatibility`` enabled per
1147ec681f3Smrg         the driver default.
1157ec681f3Smrg      ``3.1FC``
1167ec681f3Smrg         select GL version 3.1 with forward compatibility and
1177ec681f3Smrg         ``GL_ARB_compatibility`` disabled.
1187ec681f3Smrg      ``3.1COMPAT``
1197ec681f3Smrg         select GL version 3.1 with ``GL_ARB_compatibility`` enabled.
1207ec681f3Smrg      ``X.Y``
1217ec681f3Smrg         override GL version to X.Y without changing the profile.
1227ec681f3Smrg      ``X.YFC``
1237ec681f3Smrg         select a Core+Forward Compatible profile with GL version X.Y.
1247ec681f3Smrg      ``X.YCOMPAT``
1257ec681f3Smrg         select a Compatibility profile with GL version X.Y.
1267ec681f3Smrg
1277ec681f3Smrg   -  Mesa may not really implement all the features of the given
1287ec681f3Smrg      version. (for developers only)
1297ec681f3Smrg
1307ec681f3Smrg:envvar:`MESA_GLES_VERSION_OVERRIDE`
1317ec681f3Smrg   changes the value returned by ``glGetString(GL_VERSION)`` for OpenGL
1327ec681f3Smrg   ES.
1337ec681f3Smrg
1347ec681f3Smrg   -  The format should be ``MAJOR.MINOR``
1357ec681f3Smrg   -  Examples: ``2.0``, ``3.0``, ``3.1``
1367ec681f3Smrg   -  Mesa may not really implement all the features of the given
1377ec681f3Smrg      version. (for developers only)
1387ec681f3Smrg
1397ec681f3Smrg:envvar:`MESA_GLSL_VERSION_OVERRIDE`
1407ec681f3Smrg   changes the value returned by
1417ec681f3Smrg   ``glGetString(GL_SHADING_LANGUAGE_VERSION)``. Valid values are
1427ec681f3Smrg   integers, such as ``130``. Mesa will not really implement all the
1437ec681f3Smrg   features of the given language version if it's higher than what's
1447ec681f3Smrg   normally reported. (for developers only)
1457ec681f3Smrg:envvar:`MESA_GLSL_CACHE_DISABLE`
1467ec681f3Smrg   if set to ``true``, disables the GLSL shader cache. If set to
1477ec681f3Smrg   ``false``, enables the GLSL shader cache when it is disabled by
1487ec681f3Smrg   default.
1497ec681f3Smrg:envvar:`MESA_GLSL_CACHE_MAX_SIZE`
1507ec681f3Smrg   if set, determines the maximum size of the on-disk cache of compiled
1517ec681f3Smrg   GLSL programs. Should be set to a number optionally followed by
1527ec681f3Smrg   ``K``, ``M``, or ``G`` to specify a size in kilobytes, megabytes, or
1537ec681f3Smrg   gigabytes. By default, gigabytes will be assumed. And if unset, a
1547ec681f3Smrg   maximum size of 1GB will be used.
1557ec681f3Smrg
1567ec681f3Smrg   .. note::
1577ec681f3Smrg
1587ec681f3Smrg      A separate cache might be created for each architecture that Mesa is
1597ec681f3Smrg      installed for on your system. For example under the default settings
1607ec681f3Smrg      you may end up with a 1GB cache for x86_64 and another 1GB cache for
1617ec681f3Smrg      i386.
1627ec681f3Smrg
1637ec681f3Smrg:envvar:`MESA_GLSL_CACHE_DIR`
1647ec681f3Smrg   if set, determines the directory to be used for the on-disk cache of
1657ec681f3Smrg   compiled GLSL programs. If this variable is not set, then the cache
1667ec681f3Smrg   will be stored in ``$XDG_CACHE_HOME/mesa_shader_cache`` (if that
1677ec681f3Smrg   variable is set), or else within ``.cache/mesa_shader_cache`` within
1687ec681f3Smrg   the user's home directory.
1697ec681f3Smrg:envvar:`MESA_GLSL`
1707ec681f3Smrg   :ref:`shading language compiler options <envvars>`
1717ec681f3Smrg:envvar:`MESA_NO_MINMAX_CACHE`
1727ec681f3Smrg   when set, the minmax index cache is globally disabled.
1737ec681f3Smrg:envvar:`MESA_SHADER_CAPTURE_PATH`
1747ec681f3Smrg   see :ref:`Capturing Shaders <capture>`
1757ec681f3Smrg:envvar:`MESA_SHADER_DUMP_PATH` and :envvar:`MESA_SHADER_READ_PATH`
1767ec681f3Smrg   see :ref:`Experimenting with Shader
1777ec681f3Smrg   Replacements <replacement>`
1787ec681f3Smrg:envvar:`MESA_VK_VERSION_OVERRIDE`
1797ec681f3Smrg   changes the Vulkan physical device version as returned in
1807ec681f3Smrg   ``VkPhysicalDeviceProperties::apiVersion``.
1817ec681f3Smrg
1827ec681f3Smrg   -  The format should be ``MAJOR.MINOR[.PATCH]``
1837ec681f3Smrg   -  This will not let you force a version higher than the driver's
1847ec681f3Smrg      instance version as advertised by ``vkEnumerateInstanceVersion``
1857ec681f3Smrg   -  This can be very useful for debugging but some features may not be
1867ec681f3Smrg      implemented correctly. (For developers only)
1877ec681f3Smrg:envvar:`MESA_VK_WSI_PRESENT_MODE`
1887ec681f3Smrg   overrides the WSI present mode clients specify in
1897ec681f3Smrg   ``VkSwapchainCreateInfoKHR::presentMode``. Values can be ``fifo``,
1907ec681f3Smrg   ``relaxed``, ``mailbox`` or ``immediate``.
1917ec681f3Smrg:envvar:`MESA_LOADER_DRIVER_OVERRIDE`
1927ec681f3Smrg   chooses a different driver binary such as ``etnaviv`` or ``zink``.
1937ec681f3Smrg
1947ec681f3SmrgNIR passes environment variables
1957ec681f3Smrg--------------------------------
1967ec681f3Smrg
1977ec681f3SmrgThe following are only applicable for drivers that uses NIR, as they
1987ec681f3Smrgmodify the behavior for the common ``NIR_PASS`` and ``NIR_PASS_V`` macros,
1997ec681f3Smrgthat wrap calls to NIR lowering/optimizations.
2007ec681f3Smrg
2017ec681f3Smrg:envvar:`NIR_PRINT`
2027ec681f3Smrg   If defined, the resulting NIR shader will be printed out at each
2037ec681f3Smrg   successful NIR lowering/optimization call.
2047ec681f3Smrg:envvar:`NIR_TEST_CLONE`
2057ec681f3Smrg   If defined, cloning a NIR shader would be tested at each successful
2067ec681f3Smrg   NIR lowering/optimization call.
2077ec681f3Smrg:envvar:`NIR_TEST_SERIALIZE`
2087ec681f3Smrg   If defined, serialize and deserialize a NIR shader would be tested at
2097ec681f3Smrg   each successful NIR lowering/optimization call.
2107ec681f3Smrg
2117ec681f3SmrgMesa Xlib driver environment variables
2127ec681f3Smrg--------------------------------------
2137ec681f3Smrg
2147ec681f3SmrgThe following are only applicable to the Mesa Xlib software driver. See
2157ec681f3Smrgthe :doc:`Xlib software driver page <xlibdriver>` for details.
2167ec681f3Smrg
2177ec681f3Smrg:envvar:`MESA_RGB_VISUAL`
2187ec681f3Smrg   specifies the X visual and depth for RGB mode
2197ec681f3Smrg:envvar:`MESA_BACK_BUFFER`
2207ec681f3Smrg   specifies how to implement the back color buffer, either ``pixmap``
2217ec681f3Smrg   or ``ximage``
2227ec681f3Smrg:envvar:`MESA_GAMMA`
2237ec681f3Smrg   gamma correction coefficients for red, green, blue channels
2247ec681f3Smrg:envvar:`MESA_XSYNC`
2257ec681f3Smrg   enable synchronous X behavior (for debugging only)
2267ec681f3Smrg:envvar:`MESA_GLX_FORCE_CI`
2277ec681f3Smrg   if set, force GLX to treat 8 BPP visuals as CI visuals
2287ec681f3Smrg:envvar:`MESA_GLX_FORCE_ALPHA`
2297ec681f3Smrg   if set, forces RGB windows to have an alpha channel.
2307ec681f3Smrg:envvar:`MESA_GLX_DEPTH_BITS`
2317ec681f3Smrg   specifies default number of bits for depth buffer.
2327ec681f3Smrg:envvar:`MESA_GLX_ALPHA_BITS`
2337ec681f3Smrg   specifies default number of bits for alpha channel.
2347ec681f3Smrg
2357ec681f3SmrgIntel driver environment variables
2367ec681f3Smrg----------------------------------------------------
2377ec681f3Smrg
2387ec681f3Smrg:envvar:`INTEL_BLACKHOLE_DEFAULT`
2397ec681f3Smrg   if set to 1, true or yes, then the OpenGL implementation will
2407ec681f3Smrg   default ``GL_BLACKHOLE_RENDER_INTEL`` to true, thus disabling any
2417ec681f3Smrg   rendering.
2427ec681f3Smrg:envvar:`INTEL_DEBUG`
2437ec681f3Smrg   a comma-separated list of named flags, which do various things:
2447ec681f3Smrg
2457ec681f3Smrg   ``ann``
2467ec681f3Smrg      annotate IR in assembly dumps
2477ec681f3Smrg   ``aub``
2487ec681f3Smrg      dump batches into an AUB trace for use with simulation tools
2497ec681f3Smrg   ``bat``
2507ec681f3Smrg      emit batch information
2517ec681f3Smrg   ``blit``
2527ec681f3Smrg      emit messages about blit operations
2537ec681f3Smrg   ``blorp``
2547ec681f3Smrg      emit messages about the blorp operations (blits & clears)
2557ec681f3Smrg   ``buf``
2567ec681f3Smrg      emit messages about buffer objects
2577ec681f3Smrg   ``clip``
2587ec681f3Smrg      emit messages about the clip unit (for old gens, includes the CLIP
2597ec681f3Smrg      program)
2607ec681f3Smrg   ``color``
2617ec681f3Smrg      use color in output
2627ec681f3Smrg   ``cs``
2637ec681f3Smrg      dump shader assembly for compute shaders
2647ec681f3Smrg   ``do32``
2657ec681f3Smrg      generate compute shader SIMD32 programs even if workgroup size
2667ec681f3Smrg      doesn't exceed the SIMD16 limit
2677ec681f3Smrg   ``dri``
2687ec681f3Smrg      emit messages about the DRI interface
2697ec681f3Smrg   ``fbo``
2707ec681f3Smrg      emit messages about framebuffers
2717ec681f3Smrg   ``fs``
2727ec681f3Smrg      dump shader assembly for fragment shaders
2737ec681f3Smrg   ``gs``
2747ec681f3Smrg      dump shader assembly for geometry shaders
2757ec681f3Smrg   ``hex``
2767ec681f3Smrg      print instruction hex dump with the disassembly
2777ec681f3Smrg   ``l3``
2787ec681f3Smrg      emit messages about the new L3 state during transitions
2797ec681f3Smrg   ``miptree``
2807ec681f3Smrg      emit messages about miptrees
2817ec681f3Smrg   ``no8``
2827ec681f3Smrg      don't generate SIMD8 fragment shader
2837ec681f3Smrg   ``no16``
2847ec681f3Smrg      suppress generation of 16-wide fragment shaders. useful for
2857ec681f3Smrg      debugging broken shaders
2867ec681f3Smrg   ``nocompact``
2877ec681f3Smrg      disable instruction compaction
2887ec681f3Smrg   ``nodualobj``
2897ec681f3Smrg      suppress generation of dual-object geometry shader code
2907ec681f3Smrg   ``nofc``
2917ec681f3Smrg      disable fast clears
2927ec681f3Smrg   ``norbc``
2937ec681f3Smrg      disable single sampled render buffer compression
2947ec681f3Smrg   ``optimizer``
2957ec681f3Smrg      dump shader assembly to files at each optimization pass and
2967ec681f3Smrg      iteration that make progress
2977ec681f3Smrg   ``perf``
2987ec681f3Smrg      emit messages about performance issues
2997ec681f3Smrg   ``perfmon``
3007ec681f3Smrg      emit messages about ``AMD_performance_monitor``
3017ec681f3Smrg   ``pix``
3027ec681f3Smrg      emit messages about pixel operations
3037ec681f3Smrg   ``prim``
3047ec681f3Smrg      emit messages about drawing primitives
3057ec681f3Smrg   ``reemit``
3067ec681f3Smrg      mark all state dirty on each draw call
3077ec681f3Smrg   ``sf``
3087ec681f3Smrg      emit messages about the strips & fans unit (for old gens, includes
3097ec681f3Smrg      the SF program)
3107ec681f3Smrg   ``shader_time``
3117ec681f3Smrg      record how much GPU time is spent in each shader
3127ec681f3Smrg   ``spill_fs``
3137ec681f3Smrg      force spilling of all registers in the scalar backend (useful to
3147ec681f3Smrg      debug spilling code)
3157ec681f3Smrg   ``spill_vec4``
3167ec681f3Smrg      force spilling of all registers in the vec4 backend (useful to
3177ec681f3Smrg      debug spilling code)
3187ec681f3Smrg   ``state``
3197ec681f3Smrg      emit messages about state flag tracking
3207ec681f3Smrg   ``submit``
3217ec681f3Smrg      emit batchbuffer usage statistics
3227ec681f3Smrg   ``sync``
3237ec681f3Smrg      after sending each batch, emit a message and wait for that batch
3247ec681f3Smrg      to finish rendering
3257ec681f3Smrg   ``tcs``
3267ec681f3Smrg      dump shader assembly for tessellation control shaders
3277ec681f3Smrg   ``tes``
3287ec681f3Smrg      dump shader assembly for tessellation evaluation shaders
3297ec681f3Smrg   ``tex``
3307ec681f3Smrg      emit messages about textures.
3317ec681f3Smrg   ``urb``
3327ec681f3Smrg      emit messages about URB setup
3337ec681f3Smrg   ``vert``
3347ec681f3Smrg      emit messages about vertex assembly
3357ec681f3Smrg   ``vs``
3367ec681f3Smrg      dump shader assembly for vertex shaders
3377ec681f3Smrg
3387ec681f3Smrg:envvar:`INTEL_MEASURE`
3397ec681f3Smrg   Collects GPU timestamps over common intervals, and generates a CSV report
3407ec681f3Smrg   to show how long rendering took.  The overhead of collection is limited to
3417ec681f3Smrg   the flushing that is required at the interval boundaries for accurate
3427ec681f3Smrg   timestamps. By default, timing data is sent to ``stderr``.  To direct output
3437ec681f3Smrg   to a file:
3447ec681f3Smrg
3457ec681f3Smrg   ``INTEL_MEASURE=file=/tmp/measure.csv {workload}``
3467ec681f3Smrg
3477ec681f3Smrg   To begin capturing timestamps at a particular frame:
3487ec681f3Smrg
3497ec681f3Smrg   ``INTEL_MEASURE=file=/tmp/measure.csv,start=15 {workload}``
3507ec681f3Smrg
3517ec681f3Smrg   To capture only 23 frames:
3527ec681f3Smrg
3537ec681f3Smrg   ``INTEL_MEASURE=count=23 {workload}``
3547ec681f3Smrg
3557ec681f3Smrg   To capture frames 15-37, stopping before frame 38:
3567ec681f3Smrg
3577ec681f3Smrg   ``INTEL_MEASURE=start=15,count=23 {workload}``
3587ec681f3Smrg
3597ec681f3Smrg   Designate an asynchronous control file with:
3607ec681f3Smrg
3617ec681f3Smrg   ``INTEL_MEASURE=control=path/to/control.fifo {workload}``
3627ec681f3Smrg
3637ec681f3Smrg   As the workload runs, enable capture for 5 frames with:
3647ec681f3Smrg
3657ec681f3Smrg   ``$ echo 5 > path/to/control.fifo``
3667ec681f3Smrg
3677ec681f3Smrg   Enable unbounded capture:
3687ec681f3Smrg
3697ec681f3Smrg   ``$ echo -1 > path/to/control.fifo``
3707ec681f3Smrg
3717ec681f3Smrg   and disable with:
3727ec681f3Smrg
3737ec681f3Smrg   ``$ echo 0 > path/to/control.fifo``
3747ec681f3Smrg
3757ec681f3Smrg   Select the boundaries of each snapshot with:
3767ec681f3Smrg
3777ec681f3Smrg   ``INTEL_MEASURE=draw``
3787ec681f3Smrg      Collects timings for every render (DEFAULT)
3797ec681f3Smrg
3807ec681f3Smrg   ``INTEL_MEASURE=rt``
3817ec681f3Smrg      Collects timings when the render target changes
3827ec681f3Smrg
3837ec681f3Smrg   ``INTEL_MEASURE=batch``
3847ec681f3Smrg      Collects timings when batches are submitted
3857ec681f3Smrg
3867ec681f3Smrg   ``INTEL_MEASURE=frame``
3877ec681f3Smrg      Collects timings at frame boundaries
3887ec681f3Smrg
3897ec681f3Smrg   With ``INTEL_MEASURE=interval=5``, the duration of 5 events will be
3907ec681f3Smrg   combined into a single record in the output.  When possible, a single
3917ec681f3Smrg   start and end event will be submitted to the GPU to minimize
3927ec681f3Smrg   stalling.  Combined events will not span batches, except in
3937ec681f3Smrg   the case of ``INTEL_MEASURE=frame``.
3947ec681f3Smrg:envvar:`INTEL_NO_HW`
3957ec681f3Smrg   if set to 1, true or yes, prevents batches from being submitted to the
3967ec681f3Smrg   hardware. This is useful for debugging hangs, etc.
3977ec681f3Smrg:envvar:`INTEL_PRECISE_TRIG`
3987ec681f3Smrg   if set to 1, true or yes, then the driver prefers accuracy over
3997ec681f3Smrg   performance in trig functions.
4007ec681f3Smrg:envvar:`INTEL_SHADER_ASM_READ_PATH`
4017ec681f3Smrg   if set, determines the directory to be used for overriding shader
4027ec681f3Smrg   assembly. The binaries with custom assembly should be placed in
4037ec681f3Smrg   this folder and have a name formatted as ``sha1_of_assembly.bin``.
4047ec681f3Smrg   The sha1 of a shader assembly is printed when assembly is dumped via
4057ec681f3Smrg   corresponding :envvar:`INTEL_DEBUG` flag (e.g. ``vs`` for vertex shader).
4067ec681f3Smrg   A binary could be generated from a dumped assembly by ``i965_asm``.
4077ec681f3Smrg   For :envvar:`INTEL_SHADER_ASM_READ_PATH` to work it is necessary to enable
4087ec681f3Smrg   dumping of corresponding shader stages via :envvar:`INTEL_DEBUG`.
4097ec681f3Smrg   It is advised to use ``nocompact`` flag of :envvar:`INTEL_DEBUG` when
4107ec681f3Smrg   dumping and overriding shader assemblies.
4117ec681f3Smrg   The success of assembly override would be signified by "Successfully
4127ec681f3Smrg   overrode shader with sha1 <sha1>" in stderr replacing the original
4137ec681f3Smrg   assembly.
4147ec681f3Smrg
4157ec681f3Smrg
4167ec681f3SmrgRadeon driver environment variables (radeon, r200, and r300g)
4177ec681f3Smrg-------------------------------------------------------------
4187ec681f3Smrg
4197ec681f3Smrg:envvar:`RADEON_NO_TCL`
4207ec681f3Smrg   if set, disable hardware-accelerated Transform/Clip/Lighting.
4217ec681f3Smrg
4227ec681f3SmrgDRI environment variables
4237ec681f3Smrg-------------------------
4247ec681f3Smrg
4257ec681f3Smrg:envvar:`DRI_NO_MSAA`
4267ec681f3Smrg   disable MSAA for GLX/EGL MSAA visuals
4277ec681f3Smrg
4287ec681f3Smrg
4297ec681f3SmrgEGL environment variables
4307ec681f3Smrg-------------------------
4317ec681f3Smrg
4327ec681f3SmrgMesa EGL supports different sets of environment variables. See the
4337ec681f3Smrg:doc:`Mesa EGL <egl>` page for the details.
4347ec681f3Smrg
4357ec681f3SmrgGallium environment variables
4367ec681f3Smrg-----------------------------
4377ec681f3Smrg
4387ec681f3Smrg:envvar:`GALLIUM_HUD`
4397ec681f3Smrg   draws various information on the screen, like framerate, CPU load,
4407ec681f3Smrg   driver statistics, performance counters, etc. Set
4417ec681f3Smrg   :envvar:`GALLIUM_HUD` to ``help`` and run e.g. ``glxgears`` for more info.
4427ec681f3Smrg:envvar:`GALLIUM_HUD_PERIOD`
4437ec681f3Smrg   sets the HUD update rate in seconds (float). Use zero to update every
4447ec681f3Smrg   frame. The default period is 1/2 second.
4457ec681f3Smrg:envvar:`GALLIUM_HUD_VISIBLE`
4467ec681f3Smrg   control default visibility, defaults to true.
4477ec681f3Smrg:envvar:`GALLIUM_HUD_TOGGLE_SIGNAL`
4487ec681f3Smrg   toggle visibility via user specified signal. Especially useful to
4497ec681f3Smrg   toggle HUD at specific points of application and disable for
4507ec681f3Smrg   unencumbered viewing the rest of the time. For example, set
4517ec681f3Smrg   :envvar:`GALLIUM_HUD_VISIBLE` to ``false`` and
4527ec681f3Smrg   :envvar:`GALLIUM_HUD_TOGGLE_SIGNAL` to ``10`` (``SIGUSR1``). Use
4537ec681f3Smrg   ``kill -10 <pid>`` to toggle the HUD as desired.
4547ec681f3Smrg:envvar:`GALLIUM_HUD_SCALE`
4557ec681f3Smrg   Scale HUD by an integer factor, for high DPI displays. Default is 1.
4567ec681f3Smrg:envvar:`GALLIUM_HUD_DUMP_DIR`
4577ec681f3Smrg   specifies a directory for writing the displayed HUD values into
4587ec681f3Smrg   files.
4597ec681f3Smrg:envvar:`GALLIUM_DRIVER`
4607ec681f3Smrg   useful in combination with :envvar:`LIBGL_ALWAYS_SOFTWARE`=`true` for
4617ec681f3Smrg   choosing one of the software renderers ``softpipe``, ``llvmpipe`` or
4627ec681f3Smrg   ``swr``.
4637ec681f3Smrg:envvar:`GALLIUM_LOG_FILE`
4647ec681f3Smrg   specifies a file for logging all errors, warnings, etc. rather than
4657ec681f3Smrg   stderr.
4667ec681f3Smrg:envvar:`GALLIUM_PIPE_SEARCH_DIR`
4677ec681f3Smrg   specifies an alternate search directory for pipe-loader which overrides
4687ec681f3Smrg   the compile-time path based on the install location.
4697ec681f3Smrg:envvar:`GALLIUM_PRINT_OPTIONS`
4707ec681f3Smrg   if non-zero, print all the Gallium environment variables which are
4717ec681f3Smrg   used, and their current values.
4727ec681f3Smrg:envvar:`GALLIUM_DUMP_CPU`
4737ec681f3Smrg   if non-zero, print information about the CPU on start-up
4747ec681f3Smrg:envvar:`TGSI_PRINT_SANITY`
4757ec681f3Smrg   if set, do extra sanity checking on TGSI shaders and print any errors
4767ec681f3Smrg   to stderr.
4777ec681f3Smrg:envvar:`DRAW_FSE`
4787ec681f3Smrg   Enable fetch-shade-emit middle-end even though its not correct (e.g.
4797ec681f3Smrg   for softpipe)
4807ec681f3Smrg:envvar:`DRAW_NO_FSE`
4817ec681f3Smrg   Disable fetch-shade-emit middle-end even when it is correct
4827ec681f3Smrg:envvar:`DRAW_USE_LLVM`
4837ec681f3Smrg   if set to zero, the draw module will not use LLVM to execute shaders,
4847ec681f3Smrg   vertex fetch, etc.
4857ec681f3Smrg:envvar:`ST_DEBUG`
4867ec681f3Smrg   controls debug output from the Mesa/Gallium state tracker. Setting to
4877ec681f3Smrg   ``tgsi``, for example, will print all the TGSI shaders. See
4887ec681f3Smrg   :file:`src/mesa/state_tracker/st_debug.c` for other options.
4897ec681f3Smrg
4907ec681f3SmrgClover environment variables
4917ec681f3Smrg----------------------------
4927ec681f3Smrg
4937ec681f3Smrg:envvar:`CLOVER_EXTRA_BUILD_OPTIONS`
4947ec681f3Smrg   allows specifying additional compiler and linker options. Specified
4957ec681f3Smrg   options are appended after the options set by the OpenCL program in
4967ec681f3Smrg   ``clBuildProgram``.
4977ec681f3Smrg:envvar:`CLOVER_EXTRA_COMPILE_OPTIONS`
4987ec681f3Smrg   allows specifying additional compiler options. Specified options are
4997ec681f3Smrg   appended after the options set by the OpenCL program in
5007ec681f3Smrg   ``clCompileProgram``.
5017ec681f3Smrg:envvar:`CLOVER_EXTRA_LINK_OPTIONS`
5027ec681f3Smrg   allows specifying additional linker options. Specified options are
5037ec681f3Smrg   appended after the options set by the OpenCL program in
5047ec681f3Smrg   ``clLinkProgram``.
5057ec681f3Smrg
5067ec681f3SmrgSoftpipe driver environment variables
5077ec681f3Smrg-------------------------------------
5087ec681f3Smrg
5097ec681f3Smrg:envvar:`SOFTPIPE_DEBUG`
5107ec681f3Smrg   a comma-separated list of named flags, which do various things:
5117ec681f3Smrg
5127ec681f3Smrg   ``vs``
5137ec681f3Smrg      Dump vertex shader assembly to stderr
5147ec681f3Smrg   ``fs``
5157ec681f3Smrg      Dump fragment shader assembly to stderr
5167ec681f3Smrg   ``gs``
5177ec681f3Smrg      Dump geometry shader assembly to stderr
5187ec681f3Smrg   ``cs``
5197ec681f3Smrg      Dump compute shader assembly to stderr
5207ec681f3Smrg   ``no_rast``
5217ec681f3Smrg      rasterization is disabled. For profiling purposes.
5227ec681f3Smrg   ``use_llvm``
5237ec681f3Smrg      the softpipe driver will try to use LLVM JIT for vertex
5247ec681f3Smrg      shading processing.
5257ec681f3Smrg   ``use_tgsi``
5267ec681f3Smrg      if set, the softpipe driver will ask to directly consume TGSI, instead
5277ec681f3Smrg      of NIR.
5287ec681f3Smrg
5297ec681f3SmrgLLVMpipe driver environment variables
5307ec681f3Smrg-------------------------------------
5317ec681f3Smrg
5327ec681f3Smrg:envvar:`LP_NO_RAST`
5337ec681f3Smrg   if set LLVMpipe will no-op rasterization
5347ec681f3Smrg:envvar:`LP_DEBUG`
5357ec681f3Smrg   a comma-separated list of debug options is accepted. See the source
5367ec681f3Smrg   code for details.
5377ec681f3Smrg:envvar:`LP_PERF`
5387ec681f3Smrg   a comma-separated list of options to selectively no-op various parts
5397ec681f3Smrg   of the driver. See the source code for details.
5407ec681f3Smrg:envvar:`LP_NUM_THREADS`
5417ec681f3Smrg   an integer indicating how many threads to use for rendering. Zero
5427ec681f3Smrg   turns off threading completely. The default value is the number of
5437ec681f3Smrg   CPU cores present.
5447ec681f3Smrg
5457ec681f3SmrgVMware SVGA driver environment variables
5467ec681f3Smrg----------------------------------------
5477ec681f3Smrg
5487ec681f3Smrg:envvar`SVGA_FORCE_SWTNL`
5497ec681f3Smrg   force use of software vertex transformation
5507ec681f3Smrg:envvar`SVGA_NO_SWTNL`
5517ec681f3Smrg   don't allow software vertex transformation fallbacks (will often
5527ec681f3Smrg   result in incorrect rendering).
5537ec681f3Smrg:envvar`SVGA_DEBUG`
5547ec681f3Smrg   for dumping shaders, constant buffers, etc. See the code for details.
5557ec681f3Smrg:envvar`SVGA_EXTRA_LOGGING`
5567ec681f3Smrg   if set, enables extra logging to the ``vmware.log`` file, such as the
5577ec681f3Smrg   OpenGL program's name and command line arguments.
5587ec681f3Smrg:envvar`SVGA_NO_LOGGING`
5597ec681f3Smrg   if set, disables logging to the ``vmware.log`` file. This is useful
5607ec681f3Smrg   when using Valgrind because it otherwise crashes when initializing
5617ec681f3Smrg   the host log feature.
5627ec681f3Smrg
5637ec681f3SmrgSee the driver code for other, lesser-used variables.
5647ec681f3Smrg
5657ec681f3SmrgWGL environment variables
5667ec681f3Smrg-------------------------
5677ec681f3Smrg
5687ec681f3Smrg:envvar:`WGL_SWAP_INTERVAL`
5697ec681f3Smrg   to set a swap interval, equivalent to calling
5707ec681f3Smrg   ``wglSwapIntervalEXT()`` in an application. If this environment
5717ec681f3Smrg   variable is set, application calls to ``wglSwapIntervalEXT()`` will
5727ec681f3Smrg   have no effect.
5737ec681f3Smrg
5747ec681f3SmrgVA-API environment variables
5757ec681f3Smrg----------------------------
5767ec681f3Smrg
5777ec681f3Smrg:envvar:`VAAPI_MPEG4_ENABLED`
5787ec681f3Smrg   enable MPEG4 for VA-API, disabled by default.
5797ec681f3Smrg
5807ec681f3SmrgVC4 driver environment variables
5817ec681f3Smrg--------------------------------
5827ec681f3Smrg
5837ec681f3Smrg:envvar:`VC4_DEBUG`
5847ec681f3Smrg   a comma-separated list of named flags, which do various things:
5857ec681f3Smrg
5867ec681f3Smrg   ``cl``
5877ec681f3Smrg      dump command list during creation
5887ec681f3Smrg   ``qpu``
5897ec681f3Smrg      dump generated QPU instructions
5907ec681f3Smrg   ``qir``
5917ec681f3Smrg      dump QPU IR during program compile
5927ec681f3Smrg   ``nir``
5937ec681f3Smrg      dump NIR during program compile
5947ec681f3Smrg   ``tgsi``
5957ec681f3Smrg      dump TGSI during program compile
5967ec681f3Smrg   ``shaderdb``
5977ec681f3Smrg      dump program compile information for shader-db analysis
5987ec681f3Smrg   ``perf``
5997ec681f3Smrg      print during performance-related events
6007ec681f3Smrg   ``norast``
6017ec681f3Smrg      skip actual hardware execution of commands
6027ec681f3Smrg   ``always_flush``
6037ec681f3Smrg      flush after each draw call
6047ec681f3Smrg   ``always_sync``
6057ec681f3Smrg      wait for finish after each flush
6067ec681f3Smrg   ``dump``
6077ec681f3Smrg      write a GPU command stream trace file (VC4 simulator only)
6087ec681f3Smrg
6097ec681f3SmrgRADV driver environment variables
6107ec681f3Smrg---------------------------------
6117ec681f3Smrg
6127ec681f3Smrg:envvar:`RADV_DEBUG`
6137ec681f3Smrg   a comma-separated list of named flags, which do various things:
6147ec681f3Smrg
6157ec681f3Smrg   ``llvm``
6167ec681f3Smrg      enable LLVM compiler backend
6177ec681f3Smrg   ``allbos``
6187ec681f3Smrg      force all allocated buffers to be referenced in submissions
6197ec681f3Smrg   ``checkir``
6207ec681f3Smrg      validate the LLVM IR before LLVM compiles the shader
6217ec681f3Smrg   ``forcecompress``
6227ec681f3Smrg      Enables DCC,FMASK,CMASK,HTILE in situations where the driver supports it
6237ec681f3Smrg      but normally does not deem it beneficial.
6247ec681f3Smrg   ``hang``
6257ec681f3Smrg      enable GPU hangs detection and dump a report to
6267ec681f3Smrg      $HOME/radv_dumps_<pid>_<time> if a GPU hang is detected
6277ec681f3Smrg   ``img``
6287ec681f3Smrg      Print image info
6297ec681f3Smrg   ``info``
6307ec681f3Smrg      show GPU-related information
6317ec681f3Smrg   ``invariantgeom``
6327ec681f3Smrg      Mark geometry-affecting outputs as invariant. This works around a common
6337ec681f3Smrg      class of application bugs appearing as flickering.
6347ec681f3Smrg   ``metashaders``
6357ec681f3Smrg      dump internal meta shaders
6367ec681f3Smrg   ``noatocdithering``
6377ec681f3Smrg      disable dithering for alpha to coverage
6387ec681f3Smrg   ``nobinning``
6397ec681f3Smrg      disable primitive binning
6407ec681f3Smrg   ``nocache``
6417ec681f3Smrg      disable shaders cache
6427ec681f3Smrg   ``nocompute``
6437ec681f3Smrg      disable compute queue
6447ec681f3Smrg   ``nodcc``
6457ec681f3Smrg      disable Delta Color Compression (DCC) on images
6467ec681f3Smrg   ``nodisplaydcc``
6477ec681f3Smrg      disable Delta Color Compression (DCC) on displayable images
6487ec681f3Smrg   ``nodynamicbounds``
6497ec681f3Smrg      do not check OOB access for dynamic descriptors
6507ec681f3Smrg   ``nofastclears``
6517ec681f3Smrg      disable fast color/depthstencil clears
6527ec681f3Smrg   ``nohiz``
6537ec681f3Smrg      disable HIZ for depthstencil images
6547ec681f3Smrg   ``noibs``
6557ec681f3Smrg      disable directly recording command buffers in GPU-visible memory
6567ec681f3Smrg   ``nomemorycache``
6577ec681f3Smrg      disable memory shaders cache
6587ec681f3Smrg   ``nongg``
6597ec681f3Smrg      disable NGG for GFX10+
6607ec681f3Smrg   ``nonggc``
6617ec681f3Smrg      disable NGG culling on GPUs where it's enabled by default (GFX10.3+ only).
6627ec681f3Smrg   ``nooutoforder``
6637ec681f3Smrg      disable out-of-order rasterization
6647ec681f3Smrg   ``notccompatcmask``
6657ec681f3Smrg      disable TC-compat CMASK for MSAA surfaces
6667ec681f3Smrg   ``noumr``
6677ec681f3Smrg      disable UMR dumps during GPU hang detection (only with
6687ec681f3Smrg      :envvar:`RADV_DEBUG`=``hang``)
6697ec681f3Smrg   ``novrsflatshading``
6707ec681f3Smrg      disable VRS for flat shading (only on GFX10.3+)
6717ec681f3Smrg   ``preoptir``
6727ec681f3Smrg      dump LLVM IR before any optimizations
6737ec681f3Smrg   ``prologs``
6747ec681f3Smrg      dump vertex shader prologs
6757ec681f3Smrg   ``shaders``
6767ec681f3Smrg      dump shaders
6777ec681f3Smrg   ``shaderstats``
6787ec681f3Smrg      dump shader statistics
6797ec681f3Smrg   ``spirv``
6807ec681f3Smrg      dump SPIR-V
6817ec681f3Smrg   ``startup``
6827ec681f3Smrg      display info at startup
6837ec681f3Smrg   ``syncshaders``
6847ec681f3Smrg      synchronize shaders after all draws/dispatches
6857ec681f3Smrg   ``vmfaults``
6867ec681f3Smrg      check for VM memory faults via dmesg
6877ec681f3Smrg   ``zerovram``
6887ec681f3Smrg      initialize all memory allocated in VRAM as zero
6897ec681f3Smrg
6907ec681f3Smrg:envvar:`RADV_FORCE_FAMILY`
6917ec681f3Smrg   create a null device to compile shaders without a AMD GPU (e.g. vega10)
6927ec681f3Smrg
6937ec681f3Smrg:envvar:`RADV_FORCE_VRS`
6947ec681f3Smrg   allow to force per-pipeline vertex VRS rates on GFX10.3+. This is only
6957ec681f3Smrg   forced for pipelines that don't explicitely use VRS or flat shading.
6967ec681f3Smrg   The supported values are 2x2, 1x2 and 2x1. Only for testing purposes.
6977ec681f3Smrg
6987ec681f3Smrg:envvar:`RADV_PERFTEST`
6997ec681f3Smrg   a comma-separated list of named flags, which do various things:
7007ec681f3Smrg
7017ec681f3Smrg   ``bolist``
7027ec681f3Smrg      enable the global BO list
7037ec681f3Smrg   ``cswave32``
7047ec681f3Smrg      enable wave32 for compute shaders (GFX10+)
7057ec681f3Smrg   ``dccmsaa``
7067ec681f3Smrg      enable DCC for MSAA images
7077ec681f3Smrg   ``force_emulate_rt``
7087ec681f3Smrg      forces ray-tracing to be emulated in software,
7097ec681f3Smrg      even if there is hardware support.
7107ec681f3Smrg   ``gewave32``
7117ec681f3Smrg      enable wave32 for vertex/tess/geometry shaders (GFX10+)
7127ec681f3Smrg   ``localbos``
7137ec681f3Smrg      enable local BOs
7147ec681f3Smrg   ``nosam``
7157ec681f3Smrg      disable optimizations that get enabled when all VRAM is CPU visible.
7167ec681f3Smrg   ``pswave32``
7177ec681f3Smrg      enable wave32 for pixel shaders (GFX10+)
7187ec681f3Smrg   ``nggc``
7197ec681f3Smrg      enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
7207ec681f3Smrg   ``rt``
7217ec681f3Smrg      enable rt extensions whose implementation is still experimental.
7227ec681f3Smrg   ``sam``
7237ec681f3Smrg      enable optimizations to move more driver internal objects to VRAM.
7247ec681f3Smrg
7257ec681f3Smrg:envvar:`RADV_TEX_ANISO`
7267ec681f3Smrg   force anisotropy filter (up to 16)
7277ec681f3Smrg
7287ec681f3Smrg:envvar:`ACO_DEBUG`
7297ec681f3Smrg   a comma-separated list of named flags, which do various things:
7307ec681f3Smrg
7317ec681f3Smrg   ``validateir``
7327ec681f3Smrg      validate the ACO IR at various points of compilation (enabled by
7337ec681f3Smrg      default for debug/debugoptimized builds)
7347ec681f3Smrg   ``validatera``
7357ec681f3Smrg      validate register assignment of ACO IR and catches many RA bugs
7367ec681f3Smrg   ``perfwarn``
7377ec681f3Smrg      abort on some suboptimal code generation
7387ec681f3Smrg   ``force-waitcnt``
7397ec681f3Smrg      force emitting waitcnt states if there is something to wait for
7407ec681f3Smrg   ``novn``
7417ec681f3Smrg      disable value numbering
7427ec681f3Smrg   ``noopt``
7437ec681f3Smrg      disable various optimizations
7447ec681f3Smrg   ``noscheduling``
7457ec681f3Smrg      disable instructions scheduling
7467ec681f3Smrg   ``perfinfo``
7477ec681f3Smrg      print information used to calculate some pipeline statistics
7487ec681f3Smrg   ``liveinfo``
7497ec681f3Smrg      print liveness and register demand information before scheduling
7507ec681f3Smrg
7517ec681f3Smrgradeonsi driver environment variables
7527ec681f3Smrg-------------------------------------
7537ec681f3Smrg
7547ec681f3Smrg:envvar:`AMD_DEBUG`
7557ec681f3Smrg   a comma-separated list of named flags, which do various things:
7567ec681f3Smrg
7577ec681f3Smrg   ``nodcc``
7587ec681f3Smrg      Disable DCC.
7597ec681f3Smrg   ``nodccclear``
7607ec681f3Smrg      Disable DCC fast clear.
7617ec681f3Smrg   ``nodccmsaa``
7627ec681f3Smrg      Disable DCC for MSAA
7637ec681f3Smrg   ``nodpbb``
7647ec681f3Smrg      Disable DPBB.
7657ec681f3Smrg   ``nodfsm``
7667ec681f3Smrg      Disable DFSM.
7677ec681f3Smrg   ``notiling``
7687ec681f3Smrg      Disable tiling
7697ec681f3Smrg   ``nofmask``
7707ec681f3Smrg      Disable MSAA compression
7717ec681f3Smrg   ``nohyperz``
7727ec681f3Smrg      Disable Hyper-Z
7737ec681f3Smrg   ``no2d``
7747ec681f3Smrg      Disable 2D tiling
7757ec681f3Smrg   ``info``
7767ec681f3Smrg      Print driver information
7777ec681f3Smrg   ``tex``
7787ec681f3Smrg      Print texture info
7797ec681f3Smrg   ``compute``
7807ec681f3Smrg      Print compute info
7817ec681f3Smrg   ``vm``
7827ec681f3Smrg      Print virtual addresses when creating resources
7837ec681f3Smrg   ``vs``
7847ec681f3Smrg      Print vertex shaders
7857ec681f3Smrg   ``ps``
7867ec681f3Smrg      Print pixel shaders
7877ec681f3Smrg   ``gs``
7887ec681f3Smrg      Print geometry shaders
7897ec681f3Smrg   ``tcs``
7907ec681f3Smrg      Print tessellation control shaders
7917ec681f3Smrg   ``tes``
7927ec681f3Smrg      Print tessellation evaluation shaders
7937ec681f3Smrg   ``cs``
7947ec681f3Smrg      Print compute shaders
7957ec681f3Smrg   ``noir``
7967ec681f3Smrg      Don't print the LLVM IR
7977ec681f3Smrg   ``nonir``
7987ec681f3Smrg      Don't print NIR when printing shaders
7997ec681f3Smrg   ``noasm``
8007ec681f3Smrg      Don't print disassembled shaders
8017ec681f3Smrg   ``preoptir``
8027ec681f3Smrg      Print the LLVM IR before initial optimizations
8037ec681f3Smrg   ``gisel``
8047ec681f3Smrg      Enable LLVM global instruction selector.
8057ec681f3Smrg   ``w32ge``
8067ec681f3Smrg      Use Wave32 for vertex, tessellation, and geometry shaders.
8077ec681f3Smrg   ``w32ps``
8087ec681f3Smrg      Use Wave32 for pixel shaders.
8097ec681f3Smrg   ``w32cs``
8107ec681f3Smrg      Use Wave32 for computes shaders.
8117ec681f3Smrg   ``w64ge``
8127ec681f3Smrg      Use Wave64 for vertex, tessellation, and geometry shaders.
8137ec681f3Smrg   ``w64ps``
8147ec681f3Smrg      Use Wave64 for pixel shaders.
8157ec681f3Smrg   ``w64cs``
8167ec681f3Smrg      Use Wave64 for computes shaders.
8177ec681f3Smrg   ``checkir``
8187ec681f3Smrg      Enable additional sanity checks on shader IR
8197ec681f3Smrg   ``mono``
8207ec681f3Smrg      Use old-style monolithic shaders compiled on demand
8217ec681f3Smrg   ``nooptvariant``
8227ec681f3Smrg      Disable compiling optimized shader variants.
8237ec681f3Smrg   ``nowc``
8247ec681f3Smrg      Disable GTT write combining
8257ec681f3Smrg   ``check_vm``
8267ec681f3Smrg      Check VM faults and dump debug info.
8277ec681f3Smrg   ``reserve_vmid``
8287ec681f3Smrg      Force VMID reservation per context.
8297ec681f3Smrg   ``nogfx``
8307ec681f3Smrg      Disable graphics. Only multimedia compute paths can be used.
8317ec681f3Smrg   ``nongg``
8327ec681f3Smrg      Disable NGG and use the legacy pipeline.
8337ec681f3Smrg   ``nggc``
8347ec681f3Smrg      Always use NGG culling even when it can hurt.
8357ec681f3Smrg   ``nonggc``
8367ec681f3Smrg      Disable NGG culling.
8377ec681f3Smrg   ``switch_on_eop``
8387ec681f3Smrg      Program WD/IA to switch on end-of-packet.
8397ec681f3Smrg   ``nooutoforder``
8407ec681f3Smrg      Disable out-of-order rasterization
8417ec681f3Smrg   ``dpbb``
8427ec681f3Smrg      Enable DPBB.
8437ec681f3Smrg   ``dfsm``
8447ec681f3Smrg      Enable DFSM.
8457ec681f3Smrg
8467ec681f3Smrgr600 driver environment variables
8477ec681f3Smrg---------------------------------
8487ec681f3Smrg
8497ec681f3Smrg:envvar:`R600_DEBUG`
8507ec681f3Smrg   a comma-separated list of named flags, which do various things:
8517ec681f3Smrg
8527ec681f3Smrg   ``nocpdma``
8537ec681f3Smrg      Disable CP DMA
8547ec681f3Smrg   ``nosb``
8557ec681f3Smrg      Disable sb backend for graphics shaders
8567ec681f3Smrg   ``sbcl``
8577ec681f3Smrg      Enable sb backend for compute shaders
8587ec681f3Smrg   ``sbdry``
8597ec681f3Smrg      Don't use optimized bytecode (just print the dumps)
8607ec681f3Smrg   ``sbstat``
8617ec681f3Smrg      Print optimization statistics for shaders
8627ec681f3Smrg   ``sbdump``
8637ec681f3Smrg      Print IR dumps after some optimization passes
8647ec681f3Smrg   ``sbnofallback``
8657ec681f3Smrg      Abort on errors instead of fallback
8667ec681f3Smrg   ``sbdisasm``
8677ec681f3Smrg      Use sb disassembler for shader dumps
8687ec681f3Smrg   ``sbsafemath``
8697ec681f3Smrg      Disable unsafe math optimizations
8707ec681f3Smrg   ``nirsb``
8717ec681f3Smrg      Enable NIR with SB optimizer
8727ec681f3Smrg   ``tex``
8737ec681f3Smrg      Print texture info
8747ec681f3Smrg   ``nir``
8757ec681f3Smrg      Enable experimental NIR shaders
8767ec681f3Smrg   ``compute``
8777ec681f3Smrg      Print compute info
8787ec681f3Smrg   ``vm``
8797ec681f3Smrg      Print virtual addresses when creating resources
8807ec681f3Smrg   ``info``
8817ec681f3Smrg      Print driver information
8827ec681f3Smrg   ``fs``
8837ec681f3Smrg      Print fetch shaders
8847ec681f3Smrg   ``vs``
8857ec681f3Smrg      Print vertex shaders
8867ec681f3Smrg   ``gs``
8877ec681f3Smrg      Print geometry shaders
8887ec681f3Smrg   ``ps``
8897ec681f3Smrg      Print pixel shaders
8907ec681f3Smrg   ``cs``
8917ec681f3Smrg      Print compute shaders
8927ec681f3Smrg   ``tcs``
8937ec681f3Smrg      Print tessellation control shaders
8947ec681f3Smrg   ``tes``
8957ec681f3Smrg      Print tessellation evaluation shaders
8967ec681f3Smrg   ``noir``
8977ec681f3Smrg      Don't print the LLVM IR
8987ec681f3Smrg   ``notgsi``
8997ec681f3Smrg      Don't print the TGSI
9007ec681f3Smrg   ``noasm``
9017ec681f3Smrg      Don't print disassembled shaders
9027ec681f3Smrg   ``preoptir``
9037ec681f3Smrg      Print the LLVM IR before initial optimizations
9047ec681f3Smrg   ``checkir``
9057ec681f3Smrg      Enable additional sanity checks on shader IR
9067ec681f3Smrg   ``nooptvariant``
9077ec681f3Smrg      Disable compiling optimized shader variants.
9087ec681f3Smrg   ``testdma``
9097ec681f3Smrg      Invoke SDMA tests and exit.
9107ec681f3Smrg   ``testvmfaultcp``
9117ec681f3Smrg      Invoke a CP VM fault test and exit.
9127ec681f3Smrg   ``testvmfaultsdma``
9137ec681f3Smrg      Invoke a SDMA VM fault test and exit.
9147ec681f3Smrg   ``testvmfaultshader``
9157ec681f3Smrg      Invoke a shader VM fault test and exit.
9167ec681f3Smrg   ``nodma``
9177ec681f3Smrg      Disable asynchronous DMA
9187ec681f3Smrg   ``nohyperz``
9197ec681f3Smrg      Disable Hyper-Z
9207ec681f3Smrg   ``noinvalrange``
9217ec681f3Smrg      Disable handling of INVALIDATE_RANGE map flags
9227ec681f3Smrg   ``no2d``
9237ec681f3Smrg      Disable 2D tiling
9247ec681f3Smrg   ``notiling``
9257ec681f3Smrg      Disable tiling
9267ec681f3Smrg   ``switch_on_eop``
9277ec681f3Smrg      Program WD/IA to switch on end-of-packet.
9287ec681f3Smrg   ``forcedma``
9297ec681f3Smrg      Use asynchronous DMA for all operations when possible.
9307ec681f3Smrg   ``precompile``
9317ec681f3Smrg      Compile one shader variant at shader creation.
9327ec681f3Smrg   ``nowc``
9337ec681f3Smrg      Disable GTT write combining
9347ec681f3Smrg   ``check_vm``
9357ec681f3Smrg      Check VM faults and dump debug info.
9367ec681f3Smrg   ``unsafemath``
9377ec681f3Smrg      Enable unsafe math shader optimizations
9387ec681f3Smrg
9397ec681f3Smrg:envvar:`R600_DEBUG_COMPUTE`
9407ec681f3Smrg   if set to ``true``, various compute-related debug information will
9417ec681f3Smrg   be printed to stderr. Defaults to ``false``.
9427ec681f3Smrg:envvar:`R600_DUMP_SHADERS`
9437ec681f3Smrg   if set to ``true``, NIR shaders will be printed to stderr. Defaults
9447ec681f3Smrg   to ``false``.
9457ec681f3Smrg:envvar:`R600_HYPERZ`
9467ec681f3Smrg   If set to ``false``, disables HyperZ optimizations. Defaults to ``true``.
9477ec681f3Smrg:envvar:`R600_NIR_DEBUG`
9487ec681f3Smrg   a comma-separated list of named flags, which do various things:
9497ec681f3Smrg
9507ec681f3Smrg   ``instr``
9517ec681f3Smrg      Log all consumed nir instructions
9527ec681f3Smrg   ``ir``
9537ec681f3Smrg      Log created R600 IR
9547ec681f3Smrg   ``cc``
9557ec681f3Smrg      Log R600 IR to assembly code creation
9567ec681f3Smrg   ``noerr``
9577ec681f3Smrg      Don't log shader conversion errors
9587ec681f3Smrg   ``si``
9597ec681f3Smrg      Log shader info (non-zero values)
9607ec681f3Smrg   ``reg``
9617ec681f3Smrg      Log register allocation and lookup
9627ec681f3Smrg   ``io``
9637ec681f3Smrg      Log shader in and output
9647ec681f3Smrg   ``ass``
9657ec681f3Smrg      Log IR to assembly conversion
9667ec681f3Smrg   ``flow``
9677ec681f3Smrg      Log control flow instructions
9687ec681f3Smrg   ``merge``
9697ec681f3Smrg      Log register merge operations
9707ec681f3Smrg   ``nomerge``
9717ec681f3Smrg      Skip register merge step
9727ec681f3Smrg   ``tex``
9737ec681f3Smrg      Log texture ops
9747ec681f3Smrg   ``trans``
9757ec681f3Smrg      Log generic translation messages
9767ec681f3Smrg
9777ec681f3SmrgOther Gallium drivers have their own environment variables. These may
9787ec681f3Smrgchange frequently so the source code should be consulted for details.
979