diff options
Diffstat (limited to 'docs/envvars.rst')
-rw-r--r-- | docs/envvars.rst | 724 |
1 files changed, 724 insertions, 0 deletions
diff --git a/docs/envvars.rst b/docs/envvars.rst new file mode 100644 index 00000000000..59060cf400a --- /dev/null +++ b/docs/envvars.rst @@ -0,0 +1,724 @@ +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. |