summaryrefslogtreecommitdiff
path: root/tests/spec/arb_es2_compatibility
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2011-02-04 14:10:21 -0800
committerIan Romanick <ian.d.romanick@intel.com>2011-02-04 14:10:21 -0800
commit203e3f897fdd6bf950654f2552c5e87800f28718 (patch)
tree488d9ae7e41a1d50e8dc68679bcbb43a12d6da8d /tests/spec/arb_es2_compatibility
parent8596c106a156a06dc8dae6959288a9cee806e276 (diff)
Modify arb_es2_compatibility-releaseshadercompiler to only use ES2 interfaces
Use #version 100 shaders. Use generic attribute 0 instead of gl_Vertex. Don't use gl_ModelViewProjectionMatrix. Use GL_TRIANGLE_STRIP instead of GL_QUADS. Make sure all the shaders need are actually included. Previously glsl-uniform-color.frag was not in the GIT repo.
Diffstat (limited to 'tests/spec/arb_es2_compatibility')
-rw-r--r--tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c89
1 files changed, 59 insertions, 30 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 b45e69aa0..f48b90e77 100644
--- a/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c
+++ b/tests/spec/arb_es2_compatibility/arb_es2_compatibility-releaseshadercompiler.c
@@ -36,46 +36,64 @@
int piglit_width = 100, piglit_height = 100;
int piglit_window_mode = GLUT_RGB | GLUT_ALPHA | GLUT_DOUBLE;
-enum piglit_result
-piglit_display(void)
-{
#ifdef GL_ARB_ES2_compatibility
- GLboolean pass = GL_TRUE;
- float green[] = {0.0, 1.0, 0.0, 0.0};
- float blue[] = {0.0, 0.0, 1.0, 0.0};
- GLuint vs, fs, prog;
+static const char vs_text[] =
+ "#version 100\n"
+ "uniform vec4 offset;\n"
+ "attribute vec4 vertex;\n"
+ "void main () {\n"
+ " gl_Position = vertex + offset;"
+ "}\n"
+ ;
- static int color_location;
+static const char fs_text[] =
+ "#version 100\n"
+ "uniform mediump vec4 color;\n"
+ "void main () {\n"
+ " gl_FragColor = color;\n"
+ "}\n"
+ ;
- /* Set up projection matrix so we can just draw using window
- * coordinates.
- */
- piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
+void
+draw(const float *color, float x_offset)
+{
+ GLuint vs, fs, prog;
+ GLint color_location;
+ GLint offset_location;
- vs = piglit_compile_shader(GL_VERTEX_SHADER,
- "shaders/glsl-mvp.vert");
- fs = piglit_compile_shader(GL_FRAGMENT_SHADER,
- "shaders/glsl-uniform-color.frag");
+ vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_text);
+ fs = piglit_compile_shader_text(GL_FRAGMENT_SHADER, fs_text);
prog = piglit_link_simple_program(vs, fs);
- glUseProgram(prog);
- color_location = glGetUniformLocation(prog, "color");
- glUniform4fv(color_location, 1, green);
- piglit_draw_rect(0, 0, piglit_width / 2, piglit_height);
- glDeleteProgram(prog);
- glReleaseShaderCompiler();
+ glBindAttribLocation(prog, 0, "vertex");
+ glLinkProgram(prog);
+ piglit_link_check_status(prog);
+
+ glDeleteShader(vs);
+ glDeleteShader(fs);
- vs = piglit_compile_shader(GL_VERTEX_SHADER,
- "shaders/glsl-mvp.vert");
- fs = piglit_compile_shader(GL_FRAGMENT_SHADER,
- "shaders/glsl-uniform-color.frag");
- prog = piglit_link_simple_program(vs, fs);
glUseProgram(prog);
color_location = glGetUniformLocation(prog, "color");
- glUniform4fv(color_location, 1, blue);
- piglit_draw_rect(piglit_width / 2, 0,
- piglit_width / 2 + 1, piglit_height);
+ offset_location = glGetUniformLocation(prog, "offset");
+
+ glUniform4fv(color_location, 1, color);
+ glUniform4f(offset_location, x_offset, 0.0f, 0.0f, 0.0f);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDeleteProgram(prog);
+}
+#endif
+
+enum piglit_result
+piglit_display(void)
+{
+#ifdef GL_ARB_ES2_compatibility
+ GLboolean pass = GL_TRUE;
+ float green[] = {0.0, 1.0, 0.0, 0.0};
+ float blue[] = {0.0, 0.0, 1.0, 0.0};
+
+ draw(green, 0.0f);
+ glReleaseShaderCompiler();
+ draw(blue, 1.0f);
pass &= piglit_probe_pixel_rgba(piglit_width / 4, piglit_height / 2,
green);
@@ -96,6 +114,13 @@ void
piglit_init(int argc, char **argv)
{
#ifdef GL_ARB_ES2_compatibility
+ static const float verts[] = {
+ -1.0, 1.0, 0.0, 1.0,
+ -1.0, -1.0, 0.0, 1.0,
+ +0.0, 1.0, 0.0, 1.0,
+ +0.0, -1.0, 0.0, 1.0,
+ };
+
if (!GLEW_VERSION_2_0) {
printf("Requires OpenGL 2.0\n");
piglit_report_result(PIGLIT_SKIP);
@@ -105,5 +130,9 @@ piglit_init(int argc, char **argv)
printf("Requires ARB_ES2_compatibility\n");
piglit_report_result(PIGLIT_SKIP);
}
+
+ glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(float) * 4,
+ verts);
+ glEnableVertexAttribArray(0);
#endif
}