From: Eric Anholt Date: Wed, 15 Jan 2020 00:50:41 +0000 (-0800) Subject: gallium/osmesa: Try to fix the test for big-endian. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b064697af1dc8927756986f396c793e0e23c42e9;p=mesa.git gallium/osmesa: Try to fix the test for big-endian. Our packed expected values will be byte-swapped for the (mostly) array formats we're testing. Reviewed-by: Danylo Piliaiev Tested-by: Marge Bot Part-of: --- diff --git a/src/gallium/targets/osmesa/test-render.cpp b/src/gallium/targets/osmesa/test-render.cpp index 55d449c2132..2e5ff962d8e 100644 --- a/src/gallium/targets/osmesa/test-render.cpp +++ b/src/gallium/targets/osmesa/test-render.cpp @@ -8,6 +8,8 @@ #include "GL/osmesa.h" #include "util/macros.h" +#include "util/u_endian.h" +#include "util/u_math.h" typedef struct { unsigned format; @@ -75,6 +77,25 @@ TEST_P(OSMesaRenderTestFixture, Render) uint64_t expected = p.expected; + /* All the formats other than 565 and RGB/byte are array formats, but our + * expected values are packed, so byte swap appropriately. + */ + if (UTIL_ARCH_BIG_ENDIAN) { + switch (p.bpp) { + case 8: + expected = util_bswap64(expected); + break; + + case 4: + expected = util_bswap32(expected); + break; + + case 3: + case 2: + break; + } + } + glClear(GL_COLOR_BUFFER_BIT); glFinish();