diff options
author | Kenneth Graunke <[email protected]> | 2014-09-06 20:26:51 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2016-06-05 13:48:57 -0700 |
commit | c417c0c9c37f6cdea679e12d84cfc2ab51667cf6 (patch) | |
tree | 678a74b6744ff6e4a992dacab4d120c0aac07d11 /src/mesa/main/shaderapi.h | |
parent | 092ec3920f7f9a57fcc1c859a477e891752f5c1f (diff) |
mesa: Add MESA_SHADER_CAPTURE_PATH for writing .shader_test files.
This writes linked shader programs to .shader_test files to
$MESA_SHADER_CAPTURE_PATH in the format used by shader-db
(http://cgit.freedesktop.org/mesa/shader-db).
It supports both GLSL shaders and ARB programs. All stages that
are linked together are written in a single .shader_test file.
This eliminates the need for shader-db's split-to-files.py, as Mesa
produces the desired format directly. It's much more reliable than
parsing stdout/stderr, as those may contain extraneous messages, or
simply be closed by the application and unavailable.
We have many similar features already, but this is a bit different:
- MESA_GLSL=dump writes to stdout, not files.
- MESA_GLSL=log writes each stage to separate files (rather than
all linked shaders in one file), at draw time (not link time),
with uniform data and state flag info.
- Tapani's shader replacement mechanism (MESA_SHADER_DUMP_PATH and
MESA_SHADER_READ_PATH) also uses separate files per shader stage,
but allows reading in files to replace an app's shader code.
v2: Dump ARB programs too, not just GLSL.
v3: Don't dump bogus 0.shader_test file.
v4: Add "GL_ARB_separate_shader_objects" to the [require] block.
v5: Print "GLSL 4.00" instead of "GLSL 4.0" in the [require] block.
v6: Don't hardcode /tmp/mesa.
v7: Fix memoization of getenv().
v8: Also print "SSO ENABLED" (suggested by Timothy).
v9: Also handle ES shaders (suggested by Ilia).
v10: Guard against MESA_SHADER_CAPTURE_PATH being too long; add
_mesa_warning calls on error handling (suggested by Ben).
v11: Fix crash when variable is unset introduced in v10.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/main/shaderapi.h')
-rw-r--r-- | src/mesa/main/shaderapi.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index d2d7f16ec7c..09b9525e402 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -43,6 +43,9 @@ struct gl_shader_program; extern GLbitfield _mesa_get_shader_flags(void); +extern const char * +_mesa_get_shader_capture_path(void); + extern void _mesa_copy_string(GLchar *dst, GLsizei maxLength, GLsizei *length, const GLchar *src); |