[Piglit] [PATCH] texwrap: fix stencil texturing a bit

Brian Paul brianp at vmware.com
Wed Dec 16 07:28:20 PST 2015


On 12/15/2015 09:38 PM, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Previously, the test was actually using all-zeros in the end for the image,
> so unsurprisingly it passed, except when border color was used.
> Add the special stencil case handling in a couple more cases.
> This will still not test depth/stencil textures in stencil texturing mode, and
> furthermore because the spec doesn't seem to say what should happen with all
> the channels make it ignore all errors on non-first channel.
> ---
>   tests/texturing/texwrap.c | 16 +++++++++++++++-
>   1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tests/texturing/texwrap.c b/tests/texturing/texwrap.c
> index ffe5e83..e10e6ec 100644
> --- a/tests/texturing/texwrap.c
> +++ b/tests/texturing/texwrap.c
> @@ -724,6 +724,10 @@ static void sample_nearest(int x, int y, int z,
>   				image[(coords[2]*size_y*size_x +
>   				       coords[1]*size_x + coords[0])];
>   		result[3] = 1;
> +	} else if (format->stencil) {
> +		result[0] = result[1] = result[2] = result[3] =
> +				image[(coords[2]*size_y*size_x +
> +				       coords[1]*size_x + coords[0])];
>   	} else {
>   		memcpy(result,
>   		       &image[(coords[2]*size_y*size_x +
> @@ -1021,6 +1025,16 @@ static GLboolean probe_pixels(const struct format_desc *format, GLboolean npot,
>   			for (j = 0; j < 4; j++) {
>   				deltamax[j] = deltamax_lut[format->intensity];
>   			}
> +		} else if (format->stencil && !format->depth) {
> +			deltamax[0] = deltamax_lut[format->stencil];
> +			/*
> +			 * XXX unless someone can figure out what the hell all
> +			 * those channels should actually return... Right now
> +			 * the test would expect the same value for all channels.
> +			 */
> +			for (j = 1; j < 4; j++) {
> +				deltamax[j] = 255;
> +			}
>   		} else {
>   			if (format->luminance) {
>   				for (j = 0; j < 3; j++) {
> @@ -1427,7 +1441,7 @@ static void init_int_texture(const struct format_desc *format,
>   	black = colors[5];
>
>   	/* Set the colors to match the base format. */
> -	if (format->intensity) {
> +	if (format->intensity || format->stencil) {
>   		for (i = 0; i < 7; i++) {
>   			colors[i][3] = colors[i][2] = colors[i][1] = colors[i][0];
>   		}
>

Reviewed-by: Brian Paul <brianp at vmware.com>




More information about the Piglit mailing list