[Piglit] [PATCH 01/24] tex3d: assorted clean-ups

Brian Paul brianp at vmware.com
Tue Apr 29 12:58:27 PDT 2014


On 04/29/2014 12:05 PM, Jose Fonseca wrote:
>
>
> ----- Original Message -----
>> Don't call piglit_report_result() - return result from piglit_display().
>> Use default window size and fix "row wrapping" to avoid drawing off the
>> edge of the window.
>> Use bool instead of int.
>> Use piglit_get_gl_enum_name().
>> Use GLubyte instead of unsigned char.
>> Set texture env mode to replace.
>> ---
>>   tests/texturing/tex3d.c |   69
>>   +++++++++++++++++++++++------------------------
>>   1 file changed, 33 insertions(+), 36 deletions(-)
>>
>> diff --git a/tests/texturing/tex3d.c b/tests/texturing/tex3d.c
>> index 05c29a6..0dd72fc 100644
>> --- a/tests/texturing/tex3d.c
>> +++ b/tests/texturing/tex3d.c
>> @@ -32,9 +32,7 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>>
>>   	config.supports_gl_compat_version = 10;
>>
>> -	config.window_width = 128;
>> -	config.window_height = 128;
>> -	config.window_visual = PIGLIT_GL_VISUAL_RGBA;
>> +	config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
>>
>>   PIGLIT_GL_TEST_CONFIG_END
>>
>> @@ -50,17 +48,8 @@ static int nrcomponents(GLenum format)
>>   	}
>>   }
>>
>> -static const char* formatname(GLenum format)
>> -{
>> -	switch(format) {
>> -	case GL_RGBA: return "GL_RGBA";
>> -	case GL_RGB: return "GL_RGB";
>> -	case GL_ALPHA: return "GL_ALPHA";
>> -	default: abort();
>> -	}
>> -}
>> -
>> -static void expected_rgba(GLenum format, const unsigned char* texdata,
>> unsigned char* expected)
>> +static void
>> +expected_rgba(GLenum format, const GLubyte *texdata, GLubyte *expected)
>>   {
>>   	switch(format) {
>>   	case GL_RGBA:
>> @@ -84,13 +73,15 @@ static void expected_rgba(GLenum format, const unsigned
>> char* texdata, unsigned
>>   	}
>>   }
>>
>> -static int render_and_check(int w, int h, int d, GLenum format, float q,
>> unsigned char* data, const char* test)
>> +static bool
>> +render_and_check(int w, int h, int d, GLenum format, float q,
>> +		 const GLubyte *data, const char* test)
>>   {
>>   	int x, y, z;
>>   	int layer;
>> -	unsigned char* readback;
>> -	unsigned char* texp;
>> -	unsigned char* readp;
>> +	GLubyte *readback;
>> +	const GLubyte *texp;
>> +	GLubyte *readp;
>>   	int ncomp = 0;
>>
>>   	glClearColor(0.0, 0.0, 0.0, 0.0);
>> @@ -111,18 +102,18 @@ static int render_and_check(int w, int h, int d, GLenum
>> format, float q, unsigne
>>   			glVertex2f(x, y+h);
>>   		glEnd();
>>   		x += w;
>> -		if (x >= piglit_width) {
>> +		if (x + w >= piglit_width) {
>
> Won't this change the behavior?  At a glance it doesn't look like it will do the same thing.

The test draws a series of quads from left to right.  This conditional 
checks if we're about to draw off the right edge of the window, and if 
so, starts the next row.  The same change was made below for the probing 
code.

Between the original window size and the texture size being tested, I 
don't think the condition was ever actually hit.  The corrected code was 
already present in the tex3d-npot.c test, btw.


> The "use default window size" patches look fine though.

Thanks.

-Brian


>
> Jose
>
>
>>   			y += h;
>>   			x = 0;
>>   		}
>>   	}
>>
>> -	readback = (unsigned char*)malloc(w*h*d*4);
>> +	readback = (GLubyte*)malloc(w*h*d*4);
>>   	x = y = 0;
>>   	for(layer = 0; layer < d; ++layer) {
>>   		glReadPixels(x, y, w, h, GL_RGBA, GL_UNSIGNED_BYTE, readback+layer*w*h*4);
>>   		x += w;
>> -		if (x >= piglit_width) {
>> +		if (x + w >= piglit_width) {
>>   			y += h;
>>   			x = 0;
>>   		}
>> @@ -134,7 +125,7 @@ static int render_and_check(int w, int h, int d, GLenum
>> format, float q, unsigne
>>   	for(z = 0; z < d; ++z) {
>>   		for(y = 0; y < h; ++y) {
>>   			for(x = 0; x < w; ++x, readp += 4, texp += ncomp) {
>> -				unsigned char expected[4];
>> +				GLubyte expected[4];
>>   				int i;
>>   				expected_rgba(format, texp, expected);
>>   				for(i = 0; i < 4; ++i) {
>> @@ -145,7 +136,7 @@ static int render_and_check(int w, int h, int d, GLenum
>> format, float q, unsigne
>>   						fprintf(stderr, " Readback: %i,%i,%i,%i\n",
>>   							readp[0], readp[1], readp[2], readp[3]);
>>   						free(readback);
>> -						return 0;
>> +						return false;
>>   					}
>>   				}
>>   			}
>> @@ -155,7 +146,7 @@ static int render_and_check(int w, int h, int d, GLenum
>> format, float q, unsigne
>>
>>   	piglit_present_results();
>>
>> -	return 1;
>> +	return true;
>>   }
>>
>>
>> @@ -163,12 +154,13 @@ static int render_and_check(int w, int h, int d, GLenum
>> format, float q, unsigne
>>    * Load non-mipmapped 3D texture of the given size
>>    * and check whether it is rendered correctly.
>>    */
>> -static void test_simple(int w, int h, int d, GLenum format)
>> +static bool
>> +test_simple(int w, int h, int d, GLenum format)
>>   {
>>   	int size;
>> -	unsigned char *data;
>> +	GLubyte *data;
>>   	int i;
>> -	int success = 1;
>> +	bool success = true;
>>
>>   	assert(1 <= w && w <= 16);
>>   	assert(1 <= h && h <= 16);
>> @@ -176,7 +168,7 @@ static void test_simple(int w, int h, int d, GLenum
>> format)
>>   	assert(format == GL_RGBA || format == GL_RGB || format == GL_ALPHA);
>>
>>   	size = w*h*d*nrcomponents(format);
>> -	data = (unsigned char*)malloc(size);
>> +	data = (GLubyte*)malloc(size);
>>
>>   	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
>>
>> @@ -194,17 +186,20 @@ static void test_simple(int w, int h, int d, GLenum
>> format)
>>   	free(data);
>>
>>   	if (!success) {
>> -		fprintf(stderr, "Failure with texture size %ix%ix%i, format = %s\n",
>> -			w, h, d, formatname(format));
>> -		piglit_report_result(PIGLIT_FAIL);
>> +		fprintf(stderr,
>> +			"Failure with texture size %ix%ix%i, format = %s\n",
>> +			w, h, d, piglit_get_gl_enum_name(format));
>>   	}
>> +
>> +        return success;
>>   }
>>
>>   enum piglit_result
>>   piglit_display(void)
>>   {
>> -	GLenum formats[] = { GL_RGBA, GL_RGB, GL_ALPHA };
>> +	static const GLenum formats[] = { GL_RGBA, GL_RGB, GL_ALPHA };
>>   	int w, h, d, fmt;
>> +	bool pass = true;
>>
>>   	piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
>>
>> @@ -212,13 +207,16 @@ piglit_display(void)
>>   		for(w = 1; w <= 16; w *= 2) {
>>   			for(h = 1; h <= 16; h *= 2) {
>>   				for(d = 1; d <= 16; d *= 2) {
>> -					test_simple(w, h, d, formats[fmt]);
>> +					pass = test_simple(w, h, d, formats[fmt]);
>> +					if (!pass)
>> +						goto end;
>>   				}
>>   			}
>>   		}
>>   	}
>>
>> -	return PIGLIT_PASS;
>> +end:
>> +	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
>>   }
>>
>>   void
>> @@ -226,10 +224,9 @@ piglit_init(int argc, char **argv)
>>   {
>>   	piglit_require_gl_version(12);
>>
>> -	piglit_automatic = GL_TRUE;
>> -
>>   	glDisable(GL_DITHER);
>>
>>   	glGenTextures(1, &Texture);
>>   	glBindTexture(GL_TEXTURE_3D, Texture);
>> +	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
>>   }
>> --
>> 1.7.10.4
>>
>> _______________________________________________
>> Piglit mailing list
>> Piglit at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/piglit&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=NMr9uy2iTjWVixC0wOcYCWEIYhfo80qKwRgdodpoDzA%3D%0A&m=L38CZQmytNtcKNdGNqkkvBvoL%2BsPDIoGqJg49ARWs6U%3D%0A&s=a3d31f2bf3b38fc3f7ba15b3702af201868f4a059b9115b82563f6efd1c06ce9
>>



More information about the Piglit mailing list