[Piglit] [PATCH] glsl-deriv-varyings: Fixes compilation warnings and adds extra regular subtest

Ian Romanick idr at freedesktop.org
Thu Feb 19 10:39:22 PST 2015


So... where did we end up with this?  I just pushed a patch from the bug
that makes shaders 4 and 5 actually run.  Both fail, but Matt thought
that the fix to Mesa was committed.

Given how crufty this (very old) test is, I'd still like to see it
converted to shader_runner.

On 12/19/2014 05:43 PM, Andres Gomez wrote:
> A new subtest has been introduced for testing the regular expected
> values when using dFdx/dFdy in combination with the negative and abs
> register modifiers.
> ---
>  tests/shaders/glsl-deriv-varyings.c | 62 ++++++++++++++++++++++++++++++-------
>  1 file changed, 50 insertions(+), 12 deletions(-)
> 
> diff --git a/tests/shaders/glsl-deriv-varyings.c b/tests/shaders/glsl-deriv-varyings.c
> index fa72eec..c3492df 100644
> --- a/tests/shaders/glsl-deriv-varyings.c
> +++ b/tests/shaders/glsl-deriv-varyings.c
> @@ -55,6 +55,8 @@ static GLint prog4;
>  static GLint fs4;
>  static GLint prog5;
>  static GLint fs5;
> +static GLint prog6;
> +static GLint fs6;
>  
>  
>  static GLfloat verts[12] = {175.0, 125.0, 0.0,
> @@ -86,7 +88,6 @@ static const char *fragShaderText =
>  	"} \n";
>  
>  static const char *fragShaderText2 =
> -	"uniform sampler2D tex2d;\n"
>  	"varying vec2 texCoords;\n"
>  	"void main()\n"
>  	"{ \n"
> @@ -96,7 +97,6 @@ static const char *fragShaderText2 =
>  	"} \n";
>  
>  static const char *fragShaderText3 =
> -	"uniform sampler2D tex2d;\n"
>  	"varying vec2 texCoords;\n"
>  	"void main()\n"
>  	"{ \n"
> @@ -106,7 +106,6 @@ static const char *fragShaderText3 =
>  	"} \n";
>  
>  static const char *fragShaderText4 =
> -	"uniform sampler2D tex2d;\n"
>  	"varying vec2 texCoords;\n"
>  	"void main()\n"
>  	"{ \n"
> @@ -116,12 +115,20 @@ static const char *fragShaderText4 =
>  	"} \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"
> +	"			    dFdy(-abs(texCoords.y)) * -40.0,\n"
> +	"			    0.0, 1.0);\n"
> +	"} \n";
> +
> +static const char *fragShaderText6 =
> +	"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";
>  
> @@ -158,12 +165,15 @@ compileLinkProg(void)
>  
>  	fs5 = glCreateShader(GL_FRAGMENT_SHADER);
>  
> +	fs6 = 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 **) &fragShaderText3, NULL);
> -	glShaderSource(fs5, 1, (const GLchar **) &fragShaderText3, NULL);
> +	glShaderSource(fs4, 1, (const GLchar **) &fragShaderText4, NULL);
> +	glShaderSource(fs5, 1, (const GLchar **) &fragShaderText5, NULL);
> +	glShaderSource(fs6, 1, (const GLchar **) &fragShaderText6, NULL);
>  
>  	glCompileShader(vs1);
>  	glGetShaderiv(vs1, GL_COMPILE_STATUS, &stat);
> @@ -207,6 +217,13 @@ compileLinkProg(void)
>  		exit(1);
>  	}
>  
> +	glCompileShader(fs6);
> +	glGetShaderiv(fs6, GL_COMPILE_STATUS, &stat);
> +	if (!stat) {
> +		printf("error compiling fragment shader6!\n");
> +		exit(1);
> +	}
> +
>  
>  	prog1 = glCreateProgram();
>  	glAttachShader(prog1, vs1);
> @@ -281,6 +298,21 @@ compileLinkProg(void)
>  				texCoords);
>  	glEnableVertexAttribArray(0);
>  	glEnableVertexAttribArray(1);
> +
> +
> +	prog6 = glCreateProgram();
> +	glAttachShader(prog6, vs1);
> +	glAttachShader(prog6, fs6);
> +	glBindAttribLocation(prog6, 1, "textureCoords");
> +	glLinkProgram(prog6);
> +	glUseProgram(prog6);
> +
> +	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
> @@ -359,13 +391,19 @@ piglit_display(void)
>  	glUseProgram(prog5);
>  	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
>  
> +	glTranslatef(75.0, 0.0, 0.0);
> +
> +	glUseProgram(prog6);
> +	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);
> +	pass = pass && piglit_probe_pixel_rgb(132, 130, green);
> +	pass = pass && piglit_probe_pixel_rgb(205, 130, deriv);
> +	pass = pass && piglit_probe_pixel_rgb(280, 130, deriv);
> +	pass = pass && piglit_probe_pixel_rgb(355, 130, deriv);
> +	pass = pass && piglit_probe_pixel_rgb(430, 130, deriv);
> +	pass = pass && piglit_probe_pixel_rgb(505, 130, deriv);
>  
>  	glFinish();
>  	piglit_present_results();
> 



More information about the Piglit mailing list