[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