[Piglit] [PATCH v2] es2_compat: run glReleaseShaderCompiler before link and use a builtin
Ilia Mirkin
imirkin at alum.mit.edu
Sun Feb 7 15:09:59 UTC 2016
All that mesa does when releasing the shader compiler is clear its
builtins list. So make sure to use a builtin, and release the compiler
sooner, to trigger a bug in mesa.
This code sequence is hit by some core Android component.
Reported-by: Rob Herring <robh at kernel.org>
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
.../arb_es2_compatibility-releaseshadercompiler.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c b/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c
index b5c476e..e7ce98a 100644
--- a/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c
+++ b/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c
@@ -28,7 +28,9 @@
/** @file arb_es2_compatibility-releasecompiler.c
*
* Tests that compiling a shader works again after doing
- * glReleaseShaderCompiler().
+ * glReleaseShaderCompiler(). Note that it's important that one of the
+ * shaders use builtins, as that tests some of the shader compiler's
+ * innards.
*/
#include "piglit-util-gl.h"
@@ -55,18 +57,20 @@ static const char fs_text[] =
"#version 100\n"
"uniform mediump vec4 color;\n"
"void main () {\n"
- " gl_FragColor = color;\n"
+ " gl_FragColor = clamp(color, vec4(0), vec4(1));\n"
"}\n"
;
void
-draw(const float *color, float x_offset)
+draw(const float *color, float x_offset, bool release)
{
GLuint prog;
GLint color_location;
GLint offset_location;
prog = piglit_build_simple_program(vs_text, fs_text);
+ if (release)
+ glReleaseShaderCompiler();
glBindAttribLocation(prog, 0, "vertex");
glLinkProgram(prog);
@@ -91,9 +95,10 @@ piglit_display(void)
float green[] = {0.0, 1.0, 0.0, 0.0};
float blue[] = {0.0, 0.0, 1.0, 0.0};
- draw(green, 0.0f);
+ draw(green, 0.0f, false);
+ glReleaseShaderCompiler();
+ draw(blue, 1.0f, true);
glReleaseShaderCompiler();
- draw(blue, 1.0f);
pass &= piglit_probe_pixel_rgba(piglit_width / 4, piglit_height / 2,
green);
--
2.4.10
More information about the Piglit
mailing list