[Piglit] [PATCH] teximage-colors: fix bogus precision assumptions and other issues
Brian Paul
brianp at vmware.com
Mon Oct 13 08:59:30 PDT 2014
On 10/08/2014 06:00 PM, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Some formats had some "implied" precision which relied on the driver picking a
> specific hw format (e.g. RGB5 and RGB5 both relied on driver picking 565).
> These tests will now be skipped (for the exact test).
> Others didn't have any implied precision but relied on driver picking a format
> with at least 8 bits even though the internal format only implied 4.
> Also, the exact tests for srgb8 and srgb8_alpha8 were failing too due to using
> GL_BYTE instead of GL_UNSIGNED_BYTE.
> With these fixes the only tests llvmpipe is failing seem to be the exact
> GL_RGB8_SNORM and GL_RGB16_SNORM ones (1, 2 or 4 channels work and the errors
> seem to be one bit so maybe triggers some conversion somewhere using different
> signed conversion formula).
> ---
> tests/texturing/teximage-colors.c | 43 ++++++++++++++++++++++++++++++++++-----
> 1 file changed, 38 insertions(+), 5 deletions(-)
>
> diff --git a/tests/texturing/teximage-colors.c b/tests/texturing/teximage-colors.c
> index 2bee02f..dcbab65 100644
> --- a/tests/texturing/teximage-colors.c
> +++ b/tests/texturing/teximage-colors.c
> @@ -60,12 +60,12 @@ struct texture_format formats[] = {
>
> FORMAT(GL_RGB, GL_RGB, GL_NONE),
> FORMAT(GL_R3_G3_B2, GL_RGB, GL_UNSIGNED_BYTE_3_3_2),
> - FORMAT(GL_RGB4, GL_RGB, GL_UNSIGNED_SHORT_5_6_5),
> - FORMAT(GL_RGB5, GL_RGB, GL_UNSIGNED_SHORT_5_6_5),
> + FORMAT(GL_RGB4, GL_RGB, GL_NONE),
> + FORMAT(GL_RGB5, GL_RGB, GL_NONE),
> FORMAT(GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE),
> FORMAT(GL_RGB8_SNORM, GL_RGB, GL_BYTE),
> - FORMAT(GL_SRGB8, GL_RGB, GL_BYTE),
> - FORMAT(GL_RGB10, GL_RGB, GL_UNSIGNED_SHORT),
> + FORMAT(GL_SRGB8, GL_RGB, GL_UNSIGNED_BYTE),
> + FORMAT(GL_RGB10, GL_RGB, GL_NONE),
> FORMAT(GL_R11F_G11F_B10F, GL_RGB, GL_NONE),
> FORMAT(GL_RGB12, GL_RGB, GL_NONE),
> FORMAT(GL_RGB9_E5, GL_RGB, GL_NONE),
> @@ -81,7 +81,7 @@ struct texture_format formats[] = {
> FORMAT(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE),
> FORMAT(GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_10_10_10_2),
> FORMAT(GL_RGBA8_SNORM, GL_RGBA, GL_BYTE),
> - FORMAT(GL_SRGB8_ALPHA8, GL_RGBA, GL_BYTE),
> + FORMAT(GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE),
> FORMAT(GL_RGBA12, GL_RGBA, GL_NONE),
> FORMAT(GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT),
> FORMAT(GL_RGBA16_SNORM, GL_RGBA, GL_SHORT),
> @@ -543,6 +543,39 @@ piglit_init(int argc, char **argv)
> tolerance[3] = 0.3;
> break;
> }
> +
> + /* The tolerance lowering above only works for formats which have
> + explicit data types associated with them and even then it's fishy
> + for some.
> + The default sort of assumes at least 7 bits which doesn't make
> + much sense in any case (for the specific formats with more bits).
> + But just fix the cases which cannot pass (unless the driver encodes
> + them with more bits). */
The comment is indented with a mix of spaces and tabs. For block
comments, we usually prefix each line with '*'.
> + switch (format->internal_format) {
> + case GL_RGB4:
> + tolerance[0] = 0.1;
> + tolerance[1] = 0.1;
> + tolerance[2] = 0.1;
> + tolerance[3] = 0.1;
> + break;
> + case GL_RGB5:
> + tolerance[0] = 0.05;
> + tolerance[1] = 0.05;
> + tolerance[2] = 0.05;
> + break;
> + case GL_LUMINANCE4_ALPHA4:
> + tolerance[0] = 0.1;
> + tolerance[1] = 0.1;
> + tolerance[2] = 0.1;
> + tolerance[3] = 0.1;
> + break;
> + case GL_LUMINANCE6_ALPHA2: /* broken but everybody uses 8+8 bits */
> + case GL_LUMINANCE4: /* broken but presumably noone uses just 4 bits */
> + case GL_ALPHA4: /* broken but presumably noone uses just 4 bits */
> + case GL_RGBA2: /* broken (4444) but everybody uses more bits anyway */
Need some tab indents there too.
> + default:
> + break;
> + }
> }
>
> void
>
Looks OK otherwise.
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the Piglit
mailing list