summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/shaderapi.h
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2014-09-06 20:26:51 -0700
committerKenneth Graunke <[email protected]>2016-06-05 13:48:57 -0700
commitc417c0c9c37f6cdea679e12d84cfc2ab51667cf6 (patch)
tree678a74b6744ff6e4a992dacab4d120c0aac07d11 /src/mesa/main/shaderapi.h
parent092ec3920f7f9a57fcc1c859a477e891752f5c1f (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.h3
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);