In response to Ian's review (which happened after I pushed): - use piglit_draw_rect -- it knows how to set up VAO/VBO/etc - no need to set the sampler, it's always 0 - avoid duplicating the fs string between VS and GS
Signed-off-by: Ilia Mirkin <[email protected]> --- tests/texturing/shaders/textureSamples.c | 82 ++++++++++---------------------- 1 file changed, 25 insertions(+), 57 deletions(-) diff --git a/tests/texturing/shaders/textureSamples.c b/tests/texturing/shaders/textureSamples.c index 053c34d..11b3b88 100644 --- a/tests/texturing/shaders/textureSamples.c +++ b/tests/texturing/shaders/textureSamples.c @@ -65,47 +65,21 @@ PIGLIT_GL_TEST_CONFIG_BEGIN PIGLIT_GL_TEST_CONFIG_END -static int vertex_location; - enum piglit_result piglit_display() { bool pass = true; - static const float verts[] = { - -1, -1, - -1, 1, - 1, 1, - 1, -1, - }; - GLuint vbo; glClearColor(0.5, 0.5, 0.5, 1.0); glClear(GL_COLOR_BUFFER_BIT); - /* For GL core, we need to have a vertex array object bound. - * Otherwise, we don't particularly have to. Always use a - * vertex buffer object, though. - */ - if (piglit_get_gl_version() >= 31) { - GLuint vao; - glGenVertexArrays(1, &vao); - glBindVertexArray(vao); - } - glGenBuffers(1, &vbo); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STREAM_DRAW); - - glVertexAttribPointer(vertex_location, 2, GL_FLOAT, GL_FALSE, 0, 0); - glEnableVertexAttribArray(vertex_location); - float expected_color[4] = {0, 1, 0}; glViewport(0, 0, piglit_width, piglit_height); - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + piglit_draw_rect(-1, -1, 2, 2); pass &= piglit_probe_rect_rgb(0, 0, piglit_width, piglit_height, expected_color); - glDisableVertexAttribArray(vertex_location); piglit_present_results(); return pass ? PIGLIT_PASS : PIGLIT_FAIL; @@ -155,33 +129,23 @@ generate_GLSL(enum shader_target test_stage) "#extension GL_ARB_texture_multisample: enable\n" "#extension GL_ARB_shader_texture_image_samples: enable\n" "uniform %s tex;\n" - "in vec4 vertex;\n" + "in vec4 piglit_vertex;\n" "flat out int samples;\n" "void main()\n" "{\n" " samples = textureSamples(tex);\n" - " gl_Position = vertex;\n" + " gl_Position = piglit_vertex;\n" "}\n", shader_version, sampler.name); - asprintf(&fs_code, - "#version %d\n" - "flat in int samples;\n" - "out vec4 color;\n" - "void main()\n" - "{\n" - " if (samples == %d) color = vec4(0,1,0,1);\n" - " else color = vec4(1,0,0,1);\n" - "}\n", - shader_version, sample_count); break; case GS: asprintf(&vs_code, "#version %d\n" - "in vec4 vertex;\n" + "in vec4 piglit_vertex;\n" "out vec4 pos_to_gs;\n" "void main()\n" "{\n" - " pos_to_gs = vertex;\n" + " pos_to_gs = piglit_vertex;\n" "}\n", shader_version); asprintf(&gs_code, @@ -202,24 +166,14 @@ generate_GLSL(enum shader_target test_stage) " }\n" "}\n", shader_version, sampler.name); - asprintf(&fs_code, - "#version %d\n" - "flat in int samples;\n" - "out vec4 color;\n" - "void main()\n" - "{\n" - " if (samples == %d) color = vec4(0,1,0,1);\n" - " else color = vec4(1,0,0,1);\n" - "}\n", - shader_version, sample_count); break; case FS: asprintf(&vs_code, "#version %d\n" - "in vec4 vertex;\n" + "in vec4 piglit_vertex;\n" "void main()\n" "{\n" - " gl_Position = vertex;\n" + " gl_Position = piglit_vertex;\n" "}\n", shader_version); asprintf(&fs_code, @@ -240,6 +194,24 @@ generate_GLSL(enum shader_target test_stage) break; } + switch (test_stage) { + case VS: + case GS: + asprintf(&fs_code, + "#version %d\n" + "flat in int samples;\n" + "out vec4 color;\n" + "void main()\n" + "{\n" + " if (samples == %d) color = vec4(0,1,0,1);\n" + " else color = vec4(1,0,0,1);\n" + "}\n", + shader_version, sample_count); + break; + default: + break; + } + vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_code); if (gs_code) { gs = piglit_compile_shader_text(GL_GEOMETRY_SHADER, gs_code); @@ -315,7 +287,6 @@ void piglit_init(int argc, char **argv) { int prog; - int tex_location; piglit_require_extension("GL_ARB_shader_texture_image_samples"); require_GL_features(test_stage); @@ -350,10 +321,7 @@ piglit_init(int argc, char **argv) if (!prog) piglit_report_result(PIGLIT_FAIL); - tex_location = glGetUniformLocation(prog, "tex"); - vertex_location = glGetAttribLocation(prog, "vertex"); glUseProgram(prog); - glUniform1i(tex_location, 0); generate_texture(); } -- 2.4.6 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
