summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2012-04-03 22:46:40 -0700
committerKenneth Graunke <kenneth@whitecape.org>2012-04-17 12:21:38 -0700
commiteb6469f63dca0b9c61d214c257c7804882a265be (patch)
treeb9dcaf48fb8f5f243ce445777263b6127ee38922
parent6f9dfdc08e7b1f75c2fea1e140684f00d562dad4 (diff)
Rewrite glsl-fs-texturelod-01 as a shader_runner test.
This is quite a bit simpler. Technically, I don't need to set the min/mag filters here since "texture miptree" does it already, but it's self-documenting to include that in the test itself. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--tests/all.tests1
-rw-r--r--tests/shaders/CMakeLists.gl.txt1
-rw-r--r--tests/shaders/glsl-fs-texturelod-01.c163
-rw-r--r--tests/shaders/glsl-fs-texturelod-01.frag16
-rw-r--r--tests/shaders/glsl-fs-texturelod-01.shader_test53
-rw-r--r--tests/shaders/glsl-fs-texturelod-01.vert13
6 files changed, 53 insertions, 194 deletions
diff --git a/tests/all.tests b/tests/all.tests
index d3c1868da..0d1d66035 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -428,7 +428,6 @@ shaders['glsl-fs-texture2drect-proj3'] = PlainExecTest(['glsl-fs-texture2drect',
'-auto', '-proj3'])
shaders['glsl-fs-texture2drect-proj4'] = PlainExecTest(['glsl-fs-texture2drect',
'-auto', '-proj4'])
-add_plain_test(shaders, 'glsl-fs-texturelod-01')
add_plain_test(shaders, 'glsl-fs-user-varying-ff')
add_plain_test(shaders, 'glsl-mat-attribute')
add_plain_test(shaders, 'glsl-max-varyings')
diff --git a/tests/shaders/CMakeLists.gl.txt b/tests/shaders/CMakeLists.gl.txt
index 7d8b12e32..9efc26aca 100644
--- a/tests/shaders/CMakeLists.gl.txt
+++ b/tests/shaders/CMakeLists.gl.txt
@@ -91,7 +91,6 @@ piglit_add_executable (glsl-fs-texturecube glsl-fs-texturecube.c)
piglit_add_executable (glsl-fs-texturecube-2 glsl-fs-texturecube-2.c)
piglit_add_executable (glsl-fs-textureenvcolor-statechange glsl-fs-textureenvcolor-statechange.c)
piglit_add_executable (glsl-fs-texture2drect glsl-fs-texture2drect.c)
-piglit_add_executable (glsl-fs-texturelod-01 glsl-fs-texturelod-01.c)
piglit_add_executable (glsl-fs-user-varying-ff glsl-fs-user-varying-ff.c)
piglit_add_executable (glsl-vs-arrays glsl-vs-arrays.c)
piglit_add_executable (glsl-vs-mov-after-deref glsl-vs-mov-after-deref.c)
diff --git a/tests/shaders/glsl-fs-texturelod-01.c b/tests/shaders/glsl-fs-texturelod-01.c
deleted file mode 100644
index aa7719c36..000000000
--- a/tests/shaders/glsl-fs-texturelod-01.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include "piglit-util.h"
-
-/// \name GL State
-/// \{
-static GLuint texture_id;
-static const GLuint texture_unit = 0;
-static const int num_lod = 4;
-static GLint lod_uniform;
-/// \}
-
-/// \name Colors
-/// \{
-static const int num_colors = 4;
-static const float color_wheel[4][4] = {
- {1, 0, 0, 1}, // red
- {0, 1, 0, 1}, // green
- {0, 0, 1, 1}, // blue
- {1, 1, 1, 1}, // white
-};
-/// \}
-
-/// \name Piglit State
-/// \{
-int piglit_width = 100;
-int piglit_height = 100;
-int piglit_window_mode = GLUT_RGB | GLUT_DOUBLE;
-/// \}
-
-static void
-setup_mipmap_level(int lod, int width, int height)
-{
- GLfloat *texture_data;
- const float *color;
- int i;
- const GLenum internal_format = GL_RGBA;
-
- texture_data = (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat));
- assert(texture_data != NULL);
-
- color = color_wheel[lod % num_colors];
-
- for (i = 0; i < width * height; ++i) {
- texture_data[4 * i + 0] = color[0];
- texture_data[4 * i + 1] = color[1];
- texture_data[4 * i + 2] = color[2];
- texture_data[4 * i + 3] = color[3];
- }
- glTexImage2D(GL_TEXTURE_2D, lod, internal_format, width, height, 0,
- GL_RGBA, GL_FLOAT, texture_data);
-
- free(texture_data);
-}
-
-static void
-setup_texture()
-{
- int lod;
-
- glGenTextures(1, &texture_id);
- glActiveTexture(GL_TEXTURE0 + texture_unit);
- glBindTexture(GL_TEXTURE_2D, texture_id);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
-
- for (lod = 0; lod < num_lod; ++lod) {
- const int level_size = (2 * num_lod) >> lod;
- printf("Creating level %d at size %d\n", lod, level_size);
- setup_mipmap_level(lod, level_size, level_size);
- }
-
- glEnable(GL_TEXTURE_2D);
-}
-
-enum piglit_result
-piglit_display()
-{
- int lod;
- int x;
- GLboolean pass = GL_TRUE;
-
- glClearColor(0.4, 0.4, 0.4, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- for (lod = 0; lod < num_lod; ++lod) {
- x = 10 + lod * 20;
- glUniform1f(lod_uniform, lod);
- piglit_draw_rect(x, 10, 10, 10);
-
- pass &= piglit_probe_rect_rgba(x, 10, 10, 10,
- color_wheel[lod % num_colors]);
- }
-
- glutSwapBuffers();
-
- return pass ? PIGLIT_PASS : PIGLIT_FAIL;
-}
-
-void
-piglit_init(int argc, char **argv)
-{
- GLint vs, fs, prog, sampler_uniform;
-
- if (piglit_get_gl_version() < 20) {
- printf("Requires OpenGL 2.0\n");
- piglit_report_result(PIGLIT_SKIP);
- }
- if (!piglit_is_extension_supported("GL_ARB_shader_texture_lod")) {
- printf("Requires extension GL_ARB_shader_texture_lod\n");
- piglit_report_result(PIGLIT_SKIP);
- }
-
- piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
-
- setup_texture();
-
- // Compile and use program.
- vs = piglit_compile_shader(GL_VERTEX_SHADER,
- "shaders/glsl-fs-texturelod-01.vert");
- fs = piglit_compile_shader(GL_FRAGMENT_SHADER,
- "shaders/glsl-fs-texturelod-01.frag");
- prog = piglit_link_simple_program(vs, fs);
- glUseProgram(prog);
-
- // Setup uniforms.
- sampler_uniform = glGetUniformLocation(prog, "sampler");
- if (sampler_uniform == -1) {
- printf("error: Unable to get location of uniform 'sampler'\n");
- piglit_report_result(PIGLIT_FAIL);
- return;
- }
- glUniform1i(sampler_uniform, texture_unit);
- lod_uniform = glGetUniformLocation(prog, "lod");
- if (lod_uniform == -1) {
- printf("error: Unable to get location of uniform 'lod'\n");
- piglit_report_result(PIGLIT_FAIL);
- return;
- }
-}
diff --git a/tests/shaders/glsl-fs-texturelod-01.frag b/tests/shaders/glsl-fs-texturelod-01.frag
deleted file mode 100644
index 23d2510b6..000000000
--- a/tests/shaders/glsl-fs-texturelod-01.frag
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * \file glsl-fs-texture-lod-01.frag
- */
-
-#version 120
-#extension GL_ARB_shader_texture_lod: enable
-
-uniform sampler2D sampler;
-uniform float lod;
-
-varying vec2 texcoord;
-
-void main()
-{
- gl_FragColor = texture2DLod(sampler, texcoord, lod);
-}
diff --git a/tests/shaders/glsl-fs-texturelod-01.shader_test b/tests/shaders/glsl-fs-texturelod-01.shader_test
new file mode 100644
index 000000000..f5ea392c0
--- /dev/null
+++ b/tests/shaders/glsl-fs-texturelod-01.shader_test
@@ -0,0 +1,53 @@
+[require]
+GLSL >= 1.20
+require GL_ARB_shader_texture_lod
+
+[vertex shader]
+#version 120
+
+varying vec2 texcoord;
+
+void main()
+{
+ texcoord = (vec2(gl_Vertex) + 1.0) / 2.0;
+ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+}
+
+[fragment shader]
+#version 120
+#extension GL_ARB_shader_texture_lod: enable
+
+uniform sampler2D sampler;
+uniform float lod;
+
+varying vec2 texcoord;
+
+void main()
+{
+ gl_FragColor = texture2DLod(sampler, texcoord, lod);
+}
+
+[test]
+ortho
+clear color 0.4 0.4 0.4 0.0
+clear
+uniform int sampler 0
+texture miptree 0
+texparameter 2D min nearest_mipmap_nearest
+texparameter 2D mag nearest
+
+uniform float lod 0
+draw rect 10 10 10 10
+probe rgb 15 15 1.0 0.0 0.0
+
+uniform float lod 1
+draw rect 30 10 10 10
+probe rgb 35 15 0.0 1.0 0.0
+
+uniform float lod 2
+draw rect 50 10 10 10
+probe rgb 55 15 0.0 0.0 1.0
+
+uniform float lod 3
+draw rect 70 10 10 10
+probe rgb 75 15 1.0 1.0 1.0
diff --git a/tests/shaders/glsl-fs-texturelod-01.vert b/tests/shaders/glsl-fs-texturelod-01.vert
deleted file mode 100644
index 0902f7448..000000000
--- a/tests/shaders/glsl-fs-texturelod-01.vert
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * \file glsl-fs-texture-lod-01.vert
- */
-
-#version 120
-
-varying vec2 texcoord;
-
-void main()
-{
- texcoord = (vec2(gl_Vertex) + 1.0) / 2.0;
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-}