mesa/docs/envvars.rst
Erik Faye-Lund bf3f0f7a82 docs: format notes as rst-notes
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4630>
2020-06-13 10:42:00 +00:00

730 lines
24 KiB
ReStructuredText

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