ping?

Am 08.01.2018 um 01:20 schrieb srol...@vmware.com:
> From: Roland Scheidegger <srol...@vmware.com>
> 
> -128 and -127 represent exactly the same value (-1.0) for snorm8 values,
> as do -32768/-32767 for snorm16. Therefore it seems quite reasonable that an
> implementation would return the other representation (in particular r600 will
> do this with a blit, and the snorm->float->snorm conversion implied by this
> will never return the -128/-32768 values).
> ---
>  tests/texturing/teximage-colors.c | 39 
> +++++++++++++++++++++++++++++++++++----
>  1 file changed, 35 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/texturing/teximage-colors.c 
> b/tests/texturing/teximage-colors.c
> index de2024644..61a3c5d15 100644
> --- a/tests/texturing/teximage-colors.c
> +++ b/tests/texturing/teximage-colors.c
> @@ -833,10 +833,41 @@ test_exact()
>                     observed);
>       pass &= piglit_check_gl_error(GL_NO_ERROR);
>  
> -     for (i = 0; i < texture_size; ++i)
> -             pass &= memcmp(&data[i * texture_size * Bpp],
> -                            &observed[i * tex_width * Bpp],
> -                            texture_size * Bpp) == 0;
> +     /*
> +      * For snorm formats, -127/-128 and -32767/-32768 represent the exact
> +      * same value (-1.0). Therefore, it is quite reasonable to expect
> +      * an implementation could return the other representation.
> +      * (We'll assume it will happen only one way the other way seems rather
> +      * unlikely.)
> +      */
> +     if (format->data_type == GL_BYTE) {
> +             int j;
> +             for (j = 0; j < texture_size; ++j) {
> +                     for (i = 0; i < tex_width * channels; i++) {
> +                             if (!(data[i] == observed[i] ||
> +                                   (data[i] == 128 && observed[i] == 129))) {
> +                                     pass = GL_FALSE;
> +                             }
> +                     }
> +             }
> +     } else if (format->data_type == GL_SHORT) {
> +             int j;
> +             for (j = 0; j < texture_size; ++j) {
> +                     for (i = 0; i < tex_width * channels; i++) {
> +                             GLshort datas = ((GLshort *)data)[i];
> +                             GLshort obss = ((GLshort *)observed)[i];
> +                             if (!(datas == obss ||
> +                                   (datas == -32768 && obss == -32767))) {
> +                                     pass = GL_FALSE;
> +                             }
> +                     }
> +             }
> +     } else {
> +             for (i = 0; i < texture_size; ++i)
> +                     pass &= memcmp(&data[i * texture_size * Bpp],
> +                             &observed[i * tex_width * Bpp],
> +                             texture_size * Bpp) == 0;
> +     }
>  
>       free(observed);
>       free(tmp_float);
> 

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to