mesa/docs/envvars.html

517 lines
19 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Environment Variables</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
2012-09-18 17:57:02 +01:00
<div class="header">
The Mesa 3D Graphics Library
2012-09-18 17:57:02 +01:00
</div>
<iframe src="contents.html"></iframe>
<div class="content">
<h1>Environment Variables</h1>
<p>
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.
</p>
<h2>LibGL environment variables</h2>
<dl>
<dt>LIBGL_DEBUG</dt>
<dd>If defined debug information will be printed to stderr.
If set to 'verbose' additional information will be printed.</dd>
<dt>LIBGL_DRIVERS_PATH</dt>
<dd>colon-separated list of paths to search for DRI drivers</dd>
<dt>LIBGL_ALWAYS_INDIRECT</dt>
<dd>if set to `true`, forces an indirect rendering context/connection.</dd>
<dt>LIBGL_ALWAYS_SOFTWARE</dt>
<dd>if set to `true`, always use software rendering</dd>
<dt>LIBGL_NO_DRAWARRAYS</dt>
<dd>if set to `true`, do not use DrawArrays GLX protocol (for debugging)</dd>
<dt>LIBGL_SHOW_FPS</dt>
<dd>print framerate to stdout based on the number of glXSwapBuffers
calls per second.</dd>
<dt>LIBGL_DRI3_DISABLE</dt>
<dd>disable DRI3 if set to `true`.</dd>
</dl>
<h2>Core Mesa environment variables</h2>
<dl>
<dt>MESA_NO_ASM</dt>
<dd>if set, disables all assembly language optimizations</dd>
<dt>MESA_NO_MMX</dt>
<dd>if set, disables Intel MMX optimizations</dd>
<dt>MESA_NO_3DNOW</dt>
<dd>if set, disables AMD 3DNow! optimizations</dd>
<dt>MESA_NO_SSE</dt>
<dd>if set, disables Intel SSE optimizations</dd>
<dt>MESA_NO_ERROR</dt>
<dd>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.</dd>
<dt>MESA_DEBUG</dt>
<dd>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:
<dl>
<dt>silent</dt>
<dd>turn off debug messages. Only useful for debug builds.</dd>
<dt>flush</dt>
<dd>flush after each drawing command</dd>
<dt>incomplete_tex</dt>
<dd>extra debug messages when a texture is incomplete</dd>
<dt>incomplete_fbo</dt>
<dd>extra debug messages when a fbo is incomplete</dd>
<dt>context</dt>
<dd>create a debug context (see GLX_CONTEXT_DEBUG_BIT_ARB) and print
error and performance messages to stderr (or MESA_LOG_FILE).</dd>
</dl>
</dd>
<dt>MESA_LOG_FILE</dt>
<dd>specifies a file name for logging all errors, warnings,
etc., rather than stderr</dd>
<dt>MESA_TEX_PROG</dt>
<dd>if set, implement conventional texture env modes with
fragment programs (intended for developers only)</dd>
<dt>MESA_TNL_PROG</dt>
<dd>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.</dd>
<dt>MESA_EXTENSION_OVERRIDE</dt>
<dd>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.</dd>
<dt>MESA_EXTENSION_MAX_YEAR</dt>
<dd>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.
</dd>
<dt>MESA_GL_VERSION_OVERRIDE</dt>
<dd>changes the value returned by
glGetString(GL_VERSION) and possibly the GL API type.
<ul>
<li>The format should be MAJOR.MINOR[FC|COMPAT]
<li>FC is an optional suffix that indicates a forward compatible
context. This is only valid for versions &gt;= 3.0.
<li>COMPAT is an optional suffix that indicates a compatibility
context or GL_ARB_compatibility support. This is only valid for
versions &gt;= 3.1.
<li>GL versions &lt;= 3.0 are set to a compatibility (non-Core)
profile
<li>GL versions = 3.1, depending on the driver, it may or may not
have the ARB_compatibility extension enabled.
<li>GL versions &gt;= 3.2 are set to a Core profile
<li>Examples:
<dl>
<dt>2.1</dt>
<dd>select a compatibility (non-Core) profile with GL version 2.1.</dd>
<dt>3.0</dt>
<dd>select a compatibility (non-Core) profile with GL version 3.0.</dd>
<dt>3.0FC</dt>
<dd>select a Core+Forward Compatible profile with GL version 3.0.</dd>
<dt>3.1</dt>
<dd>select GL version 3.1 with GL_ARB_compatibility enabled per the
driver default.</dd>
<dt>3.1FC</dt>
<dd>select GL version 3.1 with forward compatibility and
GL_ARB_compatibility disabled.</dd>
<dt>3.1COMPAT</dt>
<dd>select GL version 3.1 with GL_ARB_compatibility enabled.</dd>
<dt>X.Y</dt>
<dd>override GL version to X.Y without changing the profile.</dd>
<dt>X.YFC</dt>
<dd>select a Core+Forward Compatible profile with GL version X.Y.</dd>
<dt>X.YCOMPAT</dt>
<dd>select a Compatibility profile with GL version X.Y.</dd>
</dl>
<li>Mesa may not really implement all the features of the given
version. (for developers only)
</ul>
</dd>
<dt>MESA_GLES_VERSION_OVERRIDE</dt>
<dd>changes the value returned by glGetString(GL_VERSION) for OpenGL ES.
<ul>
<li> The format should be MAJOR.MINOR
<li> Examples: 2.0, 3.0, 3.1
<li> Mesa may not really implement all the features of the given version.
(for developers only)
</ul>
</dd>
<dt>MESA_GLSL_VERSION_OVERRIDE</dt>
<dd>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)
</dd>
<dt>MESA_GLSL_CACHE_DISABLE</dt>
<dd>if set to `true`, disables the GLSL shader cache</dd>
<dt>MESA_GLSL_CACHE_MAX_SIZE</dt>
<dd>if set, determines the maximum size of the on-disk cache of compiled GLSL
programs. Should be set to a number optionally followed by '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.</dd>
<dt>MESA_GLSL_CACHE_DIR</dt>
<dd>if set, determines the directory to be used for the on-disk cache of
compiled GLSL programs. If this variable is not set, then the cache will
be stored in $XDG_CACHE_HOME/mesa_shader_cache (if that variable is set),
or else within .cache/mesa_shader_cache within the user's home directory.
</dd>
<dt>MESA_GLSL</dt>
<dd><a href="shading.html#envvars">shading language compiler options</a></dd>
<dt>MESA_NO_MINMAX_CACHE</dt>
<dd>when set, the minmax index cache is globally disabled.</dd>
<dt>MESA_SHADER_CAPTURE_PATH</dt>
<dd>see <a href="shading.html#capture">Capturing Shaders</a></dd>
<dt>MESA_SHADER_DUMP_PATH and MESA_SHADER_READ_PATH</dt>
<dd>see <a href="shading.html#replacement">Experimenting with Shader Replacements</a></dd>
<dt>MESA_VK_VERSION_OVERRIDE</dt>
<dd>changes the Vulkan physical device version
as returned in VkPhysicalDeviceProperties::apiVersion.
<ul>
<li>The format should be MAJOR.MINOR[.PATCH]</li>
<li>This will not let you force a version higher than the driver's
instance versionas advertised by vkEnumerateInstanceVersion</li>
<li>This can be very useful for debugging but some features may not be
implemented correctly. (For developers only)</li>
</ul>
</dd>
</dl>
2004-02-02 22:35:55 +00:00
<h2>Mesa Xlib driver environment variables</h2>
2004-02-02 22:35:55 +00:00
<p>
The following are only applicable to the Mesa Xlib software driver.
See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
2004-02-02 22:35:55 +00:00
</p>
<dl>
<dt>MESA_RGB_VISUAL</dt>
<dd>specifies the X visual and depth for RGB mode</dd>
<dt>MESA_CI_VISUAL</dt>
<dd>specifies the X visual and depth for CI mode</dd>
<dt>MESA_BACK_BUFFER</dt>
<dd>specifies how to implement the back color buffer, either "pixmap" or
"ximage"</dd>
<dt>MESA_GAMMA</dt>
<dd>gamma correction coefficients for red, green, blue channels</dd>
<dt>MESA_XSYNC</dt>
<dd>enable synchronous X behavior (for debugging only)</dd>
<dt>MESA_GLX_FORCE_CI</dt>
<dd>if set, force GLX to treat 8bpp visuals as CI visuals</dd>
<dt>MESA_GLX_FORCE_ALPHA</dt>
<dd>if set, forces RGB windows to have an alpha channel.</dd>
<dt>MESA_GLX_DEPTH_BITS</dt>
<dd>specifies default number of bits for depth buffer.</dd>
<dt>MESA_GLX_ALPHA_BITS</dt>
<dd>specifies default number of bits for alpha channel.</dd>
</dl>
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
<dl>
<dt>INTEL_NO_HW</dt>
<dd>if set to 1, prevents batches from being submitted to the hardware.
This is useful for debugging hangs, etc.</dd>
<dt>INTEL_DEBUG</dt>
<dd>a comma-separated list of named flags, which do various things:
<dl>
<dt>ann</dt>
<dd>annotate IR in assembly dumps</dd>
<dt>aub</dt>
<dd>dump batches into an AUB trace for use with simulation tools</dd>
<dt>bat</dt>
<dd>emit batch information</dd>
<dt>blit</dt>
<dd>emit messages about blit operations</dd>
<dt>blorp</dt>
<dd>emit messages about the blorp operations (blits &amp; clears)</dd>
<dt>buf</dt>
<dd>emit messages about buffer objects</dd>
<dt>clip</dt>
<dd>emit messages about the clip unit (for old gens, includes the CLIP program)</dd>
<dt>color</dt>
<dd>use color in output</dd>
<dt>cs</dt>
<dd>dump shader assembly for compute shaders</dd>
<dt>do32</dt>
<dd>generate compute shader SIMD32 programs even if workgroup size doesn't exceed the SIMD16 limit</dd>
<dt>dri</dt>
<dd>emit messages about the DRI interface</dd>
<dt>fbo</dt>
<dd>emit messages about framebuffers</dd>
<dt>fs</dt>
<dd>dump shader assembly for fragment shaders</dd>
<dt>gs</dt>
<dd>dump shader assembly for geometry shaders</dd>
<dt>hex</dt>
<dd>print instruction hex dump with the disassembly</dd>
<dt>l3</dt>
<dd>emit messages about the new L3 state during transitions</dd>
<dt>miptree</dt>
<dd>emit messages about miptrees</dd>
<dt>no8</dt>
<dd>don't generate SIMD8 fragment shader</dd>
<dt>no16</dt>
<dd>suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</dd>
<dt>nocompact</dt>
<dd>disable instruction compaction</dd>
<dt>nodualobj</dt>
<dd>suppress generation of dual-object geometry shader code</dd>
<dt>norbc</dt>
<dd>disable single sampled render buffer compression</dd>
<dt>optimizer</dt>
<dd>dump shader assembly to files at each optimization pass and iteration that make progress</dd>
<dt>perf</dt>
<dd>emit messages about performance issues</dd>
<dt>perfmon</dt>
<dd>emit messages about AMD_performance_monitor</dd>
<dt>pix</dt>
<dd>emit messages about pixel operations</dd>
<dt>prim</dt>
<dd>emit messages about drawing primitives</dd>
<dt>reemit</dt>
<dd>mark all state dirty on each draw call</dd>
<dt>sf</dt>
<dd>emit messages about the strips &amp; fans unit (for old gens, includes the SF program)</dd>
<dt>shader_time</dt>
<dd>record how much GPU time is spent in each shader</dd>
<dt>spill_fs</dt>
<dd>force spilling of all registers in the scalar backend (useful to debug spilling code)</dd>
<dt>spill_vec4</dt>
<dd>force spilling of all registers in the vec4 backend (useful to debug spilling code)</dd>
<dt>state</dt>
<dd>emit messages about state flag tracking</dd>
<dt>submit</dt>
<dd>emit batchbuffer usage statistics</dd>
<dt>sync</dt>
<dd>after sending each batch, emit a message and wait for that batch to finish rendering</dd>
<dt>tcs</dt>
<dd>dump shader assembly for tessellation control shaders</dd>
<dt>tes</dt>
<dd>dump shader assembly for tessellation evaluation shaders</dd>
<dt>tex</dt>
<dd>emit messages about textures.</dd>
<dt>urb</dt>
<dd>emit messages about URB setup</dd>
<dt>vert</dt>
<dd>emit messages about vertex assembly</dd>
<dt>vs</dt>
<dd>dump shader assembly for vertex shaders</dd>
</dl>
</dd>
<dt>INTEL_SCALAR_VS (or TCS, TES, GS)</dt>
<dd>force scalar/vec4 mode for a shader stage (Gen8-9 only)</dd>
<dt>INTEL_PRECISE_TRIG</dt>
<dd>if set to 1, true or yes, then the driver prefers accuracy over
performance in trig functions.</dd>
</dl>
2010-01-26 16:12:32 +00:00
<h2>Radeon driver environment variables (radeon, r200, and r300g)</h2>
<dl>
<dt>RADEON_NO_TCL</dt>
<dd>if set, disable hardware-accelerated Transform/Clip/Lighting.</dd>
</dl>
2010-01-26 16:12:32 +00:00
<h2>EGL environment variables</h2>
<p>
Mesa EGL supports different sets of environment variables. See the
<a href="egl.html">Mesa EGL</a> page for the details.
</p>
2010-01-26 16:12:32 +00:00
<h2>Gallium environment variables</h2>
<dl>
<dt>GALLIUM_HUD</dt>
<dd>draws various information on the screen, like framerate,
cpu load, driver statistics, performance counters, etc.
Set GALLIUM_HUD=help and run e.g. glxgears for more info.</dd>
<dt>GALLIUM_HUD_PERIOD</dt>
<dd>sets the hud update rate in seconds (float). Use zero
to update every frame. The default period is 1/2 second.</dd>
<dt>GALLIUM_HUD_VISIBLE</dt>
<dd>control default visibility, defaults to true.</dd>
<dt>GALLIUM_HUD_TOGGLE_SIGNAL</dt>
<dd>toggle visibility via user specified signal.
Especially useful to toggle hud at specific points of application and
disable for unencumbered viewing the rest of the time. For example, set
GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_TOGGLE_SIGNAL to 10 (SIGUSR1).
Use kill -10 &lt;pid&gt; to toggle the hud as desired.</dd>
<dt>GALLIUM_HUD_DUMP_DIR</dt>
<dd>specifies a directory for writing the displayed hud values into files.</dd>
<dt>GALLIUM_DRIVER</dt>
<dd>useful in combination with LIBGL_ALWAYS_SOFTWARE=true for choosing one
of the software renderers "softpipe", "llvmpipe" or "swr".</dd>
<dt>GALLIUM_LOG_FILE</dt>
<dd>specifies a file for logging all errors, warnings, etc.
rather than stderr.</dd>
<dt>GALLIUM_PRINT_OPTIONS</dt>
<dd>if non-zero, print all the Gallium environment variables which are
used, and their current values.</dd>
<dt>GALLIUM_DUMP_CPU</dt>
<dd>if non-zero, print information about the CPU on start-up</dd>
<dt>TGSI_PRINT_SANITY</dt>
<dd>if set, do extra sanity checking on TGSI shaders and
print any errors to stderr.</dd>
<dt>DRAW_FSE</dt>
<dd>???</dd>
<dt>DRAW_NO_FSE</dt>
<dd>???</dd>
<dt>DRAW_USE_LLVM</dt>
<dd>if set to zero, the draw module will not use LLVM to execute
shaders, vertex fetch, etc.</dd>
<dt>ST_DEBUG</dt>
<dd>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.</dd>
</dl>
<h3>Clover state tracker environment variables</h3>
<dl>
<dt>CLOVER_EXTRA_BUILD_OPTIONS</dt>
<dd>allows specifying additional compiler and linker
options. Specified options are appended after the options set by the OpenCL
program in clBuildProgram.</dd>
<dt>CLOVER_EXTRA_COMPILE_OPTIONS</dt>
<dd>allows specifying additional compiler
options. Specified options are appended after the options set by the OpenCL
program in clCompileProgram.</dd>
<dt>CLOVER_EXTRA_LINK_OPTIONS</dt>
<dd>allows specifying additional linker
options. Specified options are appended after the options set by the OpenCL
program in clLinkProgram.</dd>
</dl>
<h3>Softpipe driver environment variables</h3>
<dl>
<dt>SOFTPIPE_DUMP_FS</dt>
<dd>if set, the softpipe driver will print fragment shaders to stderr</dd>
<dt>SOFTPIPE_DUMP_GS</dt>
<dd>if set, the softpipe driver will print geometry shaders to stderr</dd>
<dt>SOFTPIPE_NO_RAST</dt>
<dd>if set, rasterization is no-op'd. For profiling purposes.</dd>
<dt>SOFTPIPE_USE_LLVM</dt>
<dd>if set, the softpipe driver will try to use LLVM JIT for
vertex shading processing.</dd>
</dl>
<h3>LLVMpipe driver environment variables</h3>
<dl>
<dt>LP_NO_RAST</dt>
<dd>if set LLVMpipe will no-op rasterization</dd>
<dt>LP_DEBUG</dt>
<dd>a comma-separated list of debug options is accepted. See the
source code for details.</dd>
<dt>LP_PERF</dt>
<dd>a comma-separated list of options to selectively no-op various
parts of the driver. See the source code for details.</dd>
<dt>LP_NUM_THREADS</dt>
<dd>an integer indicating how many threads to use for rendering.
Zero turns off threading completely. The default value is the number of CPU
cores present.</dd>
</dl>
<h3>VMware SVGA driver environment variables</h3>
<dl>
<dt>SVGA_FORCE_SWTNL</dt>
<dd>force use of software vertex transformation</dd>
<dt>SVGA_NO_SWTNL</dt>
<dd>don't allow software vertex transformation fallbacks (will often result
in incorrect rendering).</dd>
<dt>SVGA_DEBUG</dt>
<dd>for dumping shaders, constant buffers, etc. See the code for
details.</dd>
<dt>SVGA_EXTRA_LOGGING</dt>
<dd>if set, enables extra logging to the vmware.log file, such as the
OpenGL program's name and command line arguments.</dd>
<dt>SVGA_NO_LOGGING</dt>
<dd>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.</dd>
</dl>
<p>See the driver code for other, lesser-used variables.</p>
<h3>WGL environment variables</h3>
<dl>
<dt>WGL_SWAP_INTERVAL</dt>
<dd>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.</dd>
</dl>
<h3>VA-API state tracker environment variables</h3>
<dl>
<dt>VAAPI_MPEG4_ENABLED</dt>
<dd>enable MPEG4 for VA-API, disabled by default.</dd>
</dl>
<h3>VC4 driver environment variables</h3>
<dl>
<dt>VC4_DEBUG</dt>
<dd>a comma-separated list of named flags, which do various things:
<dl>
<dt>cl</dt>
<dd>dump command list during creation</dd>
<dt>qpu</dt>
<dd>dump generated QPU instructions</dd>
<dt>qir</dt>
<dd>dump QPU IR during program compile</dd>
<dt>nir</dt>
<dd>dump NIR during program compile</dd>
<dt>tgsi</dt>
<dd>dump TGSI during program compile</dd>
<dt>shaderdb</dt>
<dd>dump program compile information for shader-db analysis</dd>
<dt>perf</dt>
<dd>print during performance-related events</dd>
<dt>norast</dt>
<dd>skip actual hardware execution of commands</dd>
<dt>always_flush</dt>
<dd>flush after each draw call</dd>
<dt>always_sync</dt>
<dd>wait for finish after each flush</dd>
<dt>dump</dt>
<dd>write a GPU command stream trace file (VC4 simulator only)</dd>
</dl>
</dd>
</dl>
<p>
Other Gallium drivers have their own environment variables. These may change
frequently so the source code should be consulted for details.
</p>
2012-09-18 17:57:02 +01:00
</div>
</body>
</html>