Tested-by: Mark Janes <mark.a.ja...@intel.com> Andres Gomez <ago...@igalia.com> writes:
> Old glsl-deriv-varyings test has been migrated to > shader_runner and, also, splitted in four > different tests: > * glsl-derivs-varyings > * glsl-derivs-sign > * glsl-derivs-abs > * glsl-derivs-abs-sign > > In addition, expectations for the tests involving > the abs operator have been corrected. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87407 > Signed-off-by: Andres Gomez <ago...@igalia.com> > --- > tests/all.py | 1 - > tests/shaders/CMakeLists.gl.txt | 1 - > tests/shaders/glsl-deriv-varyings.c | 375 > ------------------------- > tests/shaders/glsl-derivs-abs-sign.shader_test | 56 ++++ > tests/shaders/glsl-derivs-abs.shader_test | 55 ++++ > tests/shaders/glsl-derivs-sign.shader_test | 27 ++ > tests/shaders/glsl-derivs-varyings.shader_test | 27 ++ > 7 files changed, 165 insertions(+), 377 deletions(-) > delete mode 100644 tests/shaders/glsl-deriv-varyings.c > create mode 100644 tests/shaders/glsl-derivs-abs-sign.shader_test > create mode 100644 tests/shaders/glsl-derivs-abs.shader_test > create mode 100644 tests/shaders/glsl-derivs-sign.shader_test > create mode 100644 tests/shaders/glsl-derivs-varyings.shader_test > > diff --git a/tests/all.py b/tests/all.py > index 18124b7..5ada4d9 100755 > --- a/tests/all.py > +++ b/tests/all.py > @@ -542,7 +542,6 @@ with profile.group_manager(PiglitGLTest, 'shaders') as g: > g(['glsl-vs-statechange-1']) > g(['vp-combined-image-units']) > g(['glsl-derivs']) > - g(['glsl-deriv-varyings']) > g(['glsl-fwidth']) > g(['glsl-lod-bias']) > g(['vp-ignore-input']) > diff --git a/tests/shaders/CMakeLists.gl.txt b/tests/shaders/CMakeLists.gl.txt > index 3efc6bf..35b4c6c 100644 > --- a/tests/shaders/CMakeLists.gl.txt > +++ b/tests/shaders/CMakeLists.gl.txt > @@ -131,7 +131,6 @@ piglit_add_executable (vp-clipdistance-04 > vp-clipdistance-04.c) > piglit_add_executable (vpfp-generic vpfp-generic.cpp) > piglit_add_executable (vp-max-array vp-max-array.c) > piglit_add_executable (glsl-derivs glsl-derivs.c) > -piglit_add_executable (glsl-deriv-varyings glsl-deriv-varyings.c) > piglit_add_executable (glsl-fs-discard-02 glsl-fs-discard-02.c) > piglit_add_executable (glsl-fwidth glsl-fwidth.c) > piglit_add_executable (glsl-lod-bias glsl-lod-bias.c) > diff --git a/tests/shaders/glsl-deriv-varyings.c > b/tests/shaders/glsl-deriv-varyings.c > deleted file mode 100644 > index ca663a5..0000000 > --- a/tests/shaders/glsl-deriv-varyings.c > +++ /dev/null > @@ -1,375 +0,0 @@ > -/* > - * Copyright © 2009 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. > - */ > - > -// author: Ben Holmes > - > -/* > - * This test uses the built-in glsl derivative functions (dFdx and dFdy) > - * on varying values. > - */ > - > -#include "piglit-util-gl.h" > - > -static void compileLinkProg(void); > -static void loadTex(void); > - > -PIGLIT_GL_TEST_CONFIG_BEGIN > - > - config.supports_gl_compat_version = 10; > - > - config.window_width = 600; > - config.window_height = 300; > - config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE; > - > -PIGLIT_GL_TEST_CONFIG_END > - > -static GLuint tex[1]; > -static GLint prog1; > -static GLint vs1; > -static GLint fs1; > -static GLint prog2; > -static GLint fs2; > -static GLint prog3; > -static GLint fs3; > -static GLint prog4; > -static GLint fs4; > -static GLint prog5; > -static GLint fs5; > - > - > -static GLfloat verts[12] = {175.0, 125.0, 0.0, > - 175.0, 225.0, 0.0, > - 125.0, 125.0, 0.0, > - 125.0, 225.0, 0.0}; > - > -static GLfloat texCoords[8] = {1.0, 0.0, > - 1.0, 1.0, > - 0.0, 0.0, > - 0.0, 1.0}; > - > - > -static const char *vertShaderText = > - "attribute vec2 textureCoords;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n" > - " texCoords = textureCoords;\n" > - "} \n"; > - > -static const char *fragShaderText = > - "uniform sampler2D tex2d;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_FragColor = texture2D(tex2d, texCoords);\n" > - "} \n"; > - > -static const char *fragShaderText2 = > - "uniform sampler2D tex2d;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_FragColor = vec4(dFdx(texCoords.x) * 40.0,\n" > - " dFdy(texCoords.y) * 40.0,\n" > - " 0.0, 1.0);\n" > - "} \n"; > - > -static const char *fragShaderText3 = > - "uniform sampler2D tex2d;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_FragColor = vec4(dFdx(-texCoords.x) * -40.0,\n" > - " dFdy(-texCoords.y) * -40.0,\n" > - " 0.0, 1.0);\n" > - "} \n"; > - > -static const char *fragShaderText4 = > - "uniform sampler2D tex2d;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_FragColor = vec4(dFdx(abs(-texCoords.x)) * 40.0,\n" > - " dFdy(abs(-texCoords.y)) * 40.0,\n" > - " 0.0, 1.0);\n" > - "} \n"; > - > -static const char *fragShaderText5 = > - "uniform sampler2D tex2d;\n" > - "varying vec2 texCoords;\n" > - "void main()\n" > - "{ \n" > - " gl_FragColor = vec4(dFdx(-abs(texCoords.x)) * -40.0,\n" > - " dFdy(-abs(texCoords.y)) * -40.0,\n" > - " 0.0, 1.0);\n" > - "} \n"; > - > - > - > -void > -piglit_init(int argc, char **argv) > -{ > - piglit_require_gl_version(20); > - > - compileLinkProg(); > - > - loadTex(); > - > - piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE); > - > - glEnable(GL_TEXTURE_2D); > - glClearColor(0.6, 0.6, 0.6, 1.0); > -} > - > -static void > -compileLinkProg(void) > -{ > - GLint stat; > - > - vs1 = glCreateShader(GL_VERTEX_SHADER); > - fs1 = glCreateShader(GL_FRAGMENT_SHADER); > - > - fs2 = glCreateShader(GL_FRAGMENT_SHADER); > - > - fs3 = glCreateShader(GL_FRAGMENT_SHADER); > - > - fs4 = glCreateShader(GL_FRAGMENT_SHADER); > - > - fs5 = glCreateShader(GL_FRAGMENT_SHADER); > - > - glShaderSource(vs1, 1, (const GLchar **) &vertShaderText, NULL); > - glShaderSource(fs1, 1, (const GLchar **) &fragShaderText, NULL); > - glShaderSource(fs2, 1, (const GLchar **) &fragShaderText2, NULL); > - glShaderSource(fs3, 1, (const GLchar **) &fragShaderText3, NULL); > - glShaderSource(fs4, 1, (const GLchar **) &fragShaderText4, NULL); > - glShaderSource(fs5, 1, (const GLchar **) &fragShaderText5, NULL); > - > - glCompileShader(vs1); > - glGetShaderiv(vs1, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling vertex shader1!\n"); > - exit(1); > - } > - > - glCompileShader(fs1); > - glGetShaderiv(fs1, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling fragment shader1!\n"); > - exit(1); > - } > - > - glCompileShader(fs2); > - glGetShaderiv(fs2, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling fragment shader2!\n"); > - exit(1); > - } > - > - glCompileShader(fs3); > - glGetShaderiv(fs3, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling fragment shader3!\n"); > - exit(1); > - } > - > - glCompileShader(fs4); > - glGetShaderiv(fs4, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling fragment shader4!\n"); > - exit(1); > - } > - > - glCompileShader(fs5); > - glGetShaderiv(fs5, GL_COMPILE_STATUS, &stat); > - if (!stat) { > - printf("error compiling fragment shader5!\n"); > - exit(1); > - } > - > - > - prog1 = glCreateProgram(); > - glAttachShader(prog1, vs1); > - glAttachShader(prog1, fs1); > - glBindAttribLocation(prog1, 1, "textureCoords"); > - glLinkProgram(prog1); > - glUseProgram(prog1); > - > - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), > - verts); > - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), > - texCoords); > - glEnableVertexAttribArray(0); > - glEnableVertexAttribArray(1); > - > - > - prog2 = glCreateProgram(); > - glAttachShader(prog2, vs1); > - glAttachShader(prog2, fs2); > - glBindAttribLocation(prog2, 1, "textureCoords"); > - glLinkProgram(prog2); > - glUseProgram(prog2); > - > - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), > - verts); > - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), > - texCoords); > - glEnableVertexAttribArray(0); > - glEnableVertexAttribArray(1); > - > - > - prog3 = glCreateProgram(); > - glAttachShader(prog3, vs1); > - glAttachShader(prog3, fs3); > - glBindAttribLocation(prog3, 1, "textureCoords"); > - glLinkProgram(prog3); > - glUseProgram(prog3); > - > - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), > - verts); > - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), > - texCoords); > - glEnableVertexAttribArray(0); > - glEnableVertexAttribArray(1); > - > - > - prog4 = glCreateProgram(); > - glAttachShader(prog4, vs1); > - glAttachShader(prog4, fs4); > - glBindAttribLocation(prog4, 1, "textureCoords"); > - glLinkProgram(prog4); > - glUseProgram(prog4); > - > - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), > - verts); > - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), > - texCoords); > - glEnableVertexAttribArray(0); > - glEnableVertexAttribArray(1); > - > - > - prog5 = glCreateProgram(); > - glAttachShader(prog5, vs1); > - glAttachShader(prog5, fs5); > - glBindAttribLocation(prog5, 1, "textureCoords"); > - glLinkProgram(prog5); > - glUseProgram(prog5); > - > - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), > - verts); > - glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), > - texCoords); > - glEnableVertexAttribArray(0); > - glEnableVertexAttribArray(1); > -} > - > -static void > -loadTex(void) > -{ > - #define height 2 > - #define width 2 > - int i, j; > - > - GLfloat texData[width][height][4]; > - for (i=0; i < width; ++i) { > - for (j=0; j < height; ++j) { > - if ((i+j) & 1) { > - texData[i][j][0] = 1; > - texData[i][j][1] = 0; > - texData[i][j][2] = 1; > - texData[i][j][3] = 0; > - } > - else { > - texData[i][j][0] = 0; > - texData[i][j][1] = 1; > - texData[i][j][2] = 0; > - texData[i][j][3] = 1; > - } > - } > - } > - > - glGenTextures(1, tex); > - glActiveTexture(GL_TEXTURE0); > - glBindTexture(GL_TEXTURE_2D, tex[0]); > - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE); > - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); > - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); > - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); > - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); > - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, > - GL_RGBA, GL_FLOAT, texData); > - > - #undef height > - #undef width > -} > - > - > -enum piglit_result > -piglit_display(void) > -{ > - GLboolean pass = GL_TRUE; > - > - float deriv[3] = {0.8, 0.4, 0.0}; > - float green[3] = {0, 1, 0}; > - > - glClear(GL_COLOR_BUFFER_BIT); > - > - glPushMatrix(); > - > - glUseProgram(prog1); > - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); > - > - glTranslatef(75.0, 0.0, 0.0); > - > - glUseProgram(prog2); > - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); > - > - glTranslatef(75.0, 0.0, 0.0); > - > - glUseProgram(prog3); > - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); > - > - glTranslatef(75.0, 0.0, 0.0); > - > - glUseProgram(prog4); > - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); > - > - glTranslatef(75.0, 0.0, 0.0); > - > - glUseProgram(prog5); > - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); > - > - glPopMatrix(); > - > - pass = pass && piglit_probe_pixel_rgb(132, 125, green); > - pass = pass && piglit_probe_pixel_rgb(205, 125, deriv); > - pass = pass && piglit_probe_pixel_rgb(280, 125, deriv); > - pass = pass && piglit_probe_pixel_rgb(355, 125, deriv); > - pass = pass && piglit_probe_pixel_rgb(430, 125, deriv); > - > - glFinish(); > - piglit_present_results(); > - > - return pass ? PIGLIT_PASS : PIGLIT_FAIL; > -} > - > diff --git a/tests/shaders/glsl-derivs-abs-sign.shader_test > b/tests/shaders/glsl-derivs-abs-sign.shader_test > new file mode 100644 > index 0000000..ef6cdbb > --- /dev/null > +++ b/tests/shaders/glsl-derivs-abs-sign.shader_test > @@ -0,0 +1,56 @@ > +[require] > +GLSL >= 1.10 > + > +[vertex shader] > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_Position = gl_Vertex; > + xval = gl_Vertex.x; > + yval = gl_Vertex.y; > +} > + > +[fragment shader] > +uniform vec4 arg0; > +varying float xval; > +varying float yval; > +void main() > +{ > + float xval_sign = sign(xval) == -1.0 ? -1.0 : 1.0; > + float yval_sign = sign(yval) == -1.0 ? -1.0 : 1.0; > + gl_FragColor = vec4(dFdx(abs(-xval)) * xval_sign * 20.0, > + dFdy(abs(-yval)) * yval_sign * 10.0, > + dFdx(-abs(xval)) * -xval_sign * 40.0, > + dFdy(-abs(yval)) * -yval_sign * 30.0); > +} > + > +[test] > +draw rect -1 -1 2 2 > + > +probe rgba 16 16 0.16 0.08 0.32 0.24 > +probe rgba 16 167 0.16 0.08 0.32 0.24 > +probe rgba 167 16 0.16 0.08 0.32 0.24 > +probe rgba 167 167 0.16 0.08 0.32 0.24 > + > +probe rgba 0 0 0.16 0.08 0.32 0.24 > +probe rgba 0 249 0.16 0.08 0.32 0.24 > +probe rgba 249 0 0.16 0.08 0.32 0.24 > +probe rgba 249 249 0.16 0.08 0.32 0.24 > + > +probe rgba 123 123 0.16 0.08 0.32 0.24 > +probe rgba 124 123 0.00 0.08 0.00 0.24 > +probe rgba 125 123 0.00 0.08 0.00 0.24 > +probe rgba 126 123 0.16 0.08 0.32 0.24 > +probe rgba 123 124 0.16 0.00 0.32 0.00 > +probe rgba 124 124 0.00 0.00 0.00 0.00 > +probe rgba 125 124 0.00 0.00 0.00 0.00 > +probe rgba 126 124 0.16 0.00 0.32 0.00 > +probe rgba 123 125 0.16 0.00 0.32 0.00 > +probe rgba 124 125 0.00 0.00 0.00 0.00 > +probe rgba 125 125 0.00 0.00 0.00 0.00 > +probe rgba 126 125 0.16 0.00 0.32 0.00 > +probe rgba 123 126 0.16 0.08 0.32 0.24 > +probe rgba 124 126 0.00 0.08 0.00 0.24 > +probe rgba 125 126 0.00 0.08 0.00 0.24 > +probe rgba 126 126 0.16 0.08 0.32 0.24 > diff --git a/tests/shaders/glsl-derivs-abs.shader_test > b/tests/shaders/glsl-derivs-abs.shader_test > new file mode 100644 > index 0000000..a6db379 > --- /dev/null > +++ b/tests/shaders/glsl-derivs-abs.shader_test > @@ -0,0 +1,55 @@ > +[require] > +GLSL >= 1.10 > + > +[vertex shader] > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_Position = gl_Vertex; > + xval = gl_Vertex.x; > + yval = gl_Vertex.y; > +} > + > +[fragment shader] > +uniform vec4 arg0; > +varying float xval; > +varying float yval; > +void main() > +{ > + float xval_sign = sign(xval) == -1.0 ? -1.0 : 1.0; > + float yval_sign = sign(yval) == -1.0 ? -1.0 : 1.0; > + gl_FragColor = vec4(dFdx(abs(xval)) * xval_sign * 20.0, > + dFdy(abs(yval)) * yval_sign * 10.0, > + 0.0, 1.0); > +} > + > +[test] > +draw rect -1 -1 2 2 > + > +probe rgba 16 16 0.16 0.08 0.00 1.00 > +probe rgba 16 167 0.16 0.08 0.00 1.00 > +probe rgba 167 16 0.16 0.08 0.00 1.00 > +probe rgba 167 167 0.16 0.08 0.00 1.00 > + > +probe rgba 0 0 0.16 0.08 0.00 1.00 > +probe rgba 0 249 0.16 0.08 0.00 1.00 > +probe rgba 249 0 0.16 0.08 0.00 1.00 > +probe rgba 249 249 0.16 0.08 0.00 1.00 > + > +probe rgba 123 123 0.16 0.08 0.00 1.00 > +probe rgba 124 123 0.00 0.08 0.00 1.00 > +probe rgba 125 123 0.00 0.08 0.00 1.00 > +probe rgba 126 123 0.16 0.08 0.00 1.00 > +probe rgba 123 124 0.16 0.00 0.00 1.00 > +probe rgba 124 124 0.00 0.00 0.00 1.00 > +probe rgba 125 124 0.00 0.00 0.00 1.00 > +probe rgba 126 124 0.16 0.00 0.00 1.00 > +probe rgba 123 125 0.16 0.00 0.00 1.00 > +probe rgba 124 125 0.00 0.00 0.00 1.00 > +probe rgba 125 125 0.00 0.00 0.00 1.00 > +probe rgba 126 125 0.16 0.00 0.00 1.00 > +probe rgba 123 126 0.16 0.08 0.00 1.00 > +probe rgba 124 126 0.00 0.08 0.00 1.00 > +probe rgba 125 126 0.00 0.08 0.00 1.00 > +probe rgba 126 126 0.16 0.08 0.00 1.00 > diff --git a/tests/shaders/glsl-derivs-sign.shader_test > b/tests/shaders/glsl-derivs-sign.shader_test > new file mode 100644 > index 0000000..ce8d7b9 > --- /dev/null > +++ b/tests/shaders/glsl-derivs-sign.shader_test > @@ -0,0 +1,27 @@ > +[require] > +GLSL >= 1.10 > + > +[vertex shader] > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_Position = gl_Vertex; > + xval = gl_Vertex.x; > + yval = gl_Vertex.y; > +} > + > +[fragment shader] > +uniform vec4 arg0; > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_FragColor = vec4(dFdx(-xval) * -20.0, > + dFdy(-yval) * -10.0, > + 0.0, 1.0); > +} > + > +[test] > +draw rect -1 -1 2 2 > +probe rgba 16 16 0.16 0.08 0.00 1.00 > diff --git a/tests/shaders/glsl-derivs-varyings.shader_test > b/tests/shaders/glsl-derivs-varyings.shader_test > new file mode 100644 > index 0000000..31b9741 > --- /dev/null > +++ b/tests/shaders/glsl-derivs-varyings.shader_test > @@ -0,0 +1,27 @@ > +[require] > +GLSL >= 1.10 > + > +[vertex shader] > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_Position = gl_Vertex; > + xval = gl_Vertex.x; > + yval = gl_Vertex.y; > +} > + > +[fragment shader] > +uniform vec4 arg0; > +varying float xval; > +varying float yval; > +void main() > +{ > + gl_FragColor = vec4(dFdx(xval) * 20.0, > + dFdy(yval) * 10.0, > + 0.0, 1.0); > +} > + > +[test] > +draw rect -1 -1 2 2 > +probe rgba 16 16 0.16 0.08 0.00 1.00 > -- > 2.1.0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit