[Mesa-dev] [PATCH shader-db v2 2/2] run: Mark shaders with only one stage as separable.
Kenneth Graunke
kenneth at whitecape.org
Tue Jul 26 22:38:14 UTC 2016
There are a couple cases where a single shader might happen:
- compute shaders
(only one stage, no inputs and outputs; separable shouldn't matter)
- vertex shaders with transform feedback
(we want to retain outputs, but transform feedback varyings are
specified via the API, not the shader - setting SSO fixes this)
- old shader_test files captured before we started adding "SSO ENABLED".
In any case, it seems harmless or beneficial to enable SSO for all
.shader_test files containing a single shader.
Based on a patch by Marek.
v2: Ignore VP/FP shaders.
---
run.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/run.c b/run.c
index 2fed284..e8bc2c1 100644
--- a/run.c
+++ b/run.c
@@ -633,10 +633,15 @@ main(int argc, char **argv)
}
ctx_is_core = type == TYPE_CORE;
+ /* If there's only one GLSL shader, mark it separable so
+ * inputs and outputs aren't eliminated.
+ */
+ if (num_shaders == 1 && type != TYPE_VP && type != TYPE_FP)
+ use_separate_shader_objects = true;
+
if (use_separate_shader_objects) {
for (unsigned i = 0; i < num_shaders; i++) {
- GLuint prog = glCreateShaderProgramv(shader[i].type, 1,
- &shader[i].text);
+ glCreateShaderProgramv(shader[i].type, 1, &shader[i].text);
}
} else if (type == TYPE_CORE || type == TYPE_COMPAT) {
GLuint prog = glCreateProgram();
--
2.9.0
More information about the mesa-dev
mailing list