From: José Fonseca Date: Sat, 6 Mar 2010 12:47:49 +0000 (+0000) Subject: progs/gallium/unit: Skip test cases which cannot be represented in 4ub. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6718f0325827b1d2dde47a48332c6c0471048abe;p=mesa.git progs/gallium/unit: Skip test cases which cannot be represented in 4ub. --- diff --git a/progs/gallium/unit/u_format_test.c b/progs/gallium/unit/u_format_test.c index bdbe443554e..af939347c3a 100644 --- a/progs/gallium/unit/u_format_test.c +++ b/progs/gallium/unit/u_format_test.c @@ -626,13 +626,27 @@ test_format_pack_4f(const struct util_format_test_case *test) } -static void +static boolean convert_4f_to_4ub(uint8_t *dst, const double *src) { unsigned i; + boolean accurate = TRUE; - for (i = 0; i < 4; ++i) - dst[i] = CLAMP(src[i], 0.0, 1.0) * 255.0; + for (i = 0; i < 4; ++i) { + if (src[i] < 0.0) { + accurate = FALSE; + dst[i] = 0; + } + else if (src[i] > 1.0) { + accurate = FALSE; + dst[i] = 255; + } + else { + dst[i] = src[i] * 255.0; + } + } + + return accurate; } @@ -670,7 +684,12 @@ test_format_pack_4ub(const struct util_format_test_case *test) unsigned i; boolean success; - convert_4f_to_4ub(unpacked, test->unpacked); + if (!convert_4f_to_4ub(unpacked, test->unpacked)) { + /* + * Skip test cases which cannot be represented by four unorm bytes. + */ + return TRUE; + } memset(packed, 0, sizeof packed);