From b064697af1dc8927756986f396c793e0e23c42e9 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 14 Jan 2020 16:50:41 -0800 Subject: [PATCH] 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: --- src/gallium/targets/osmesa/test-render.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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(); -- 2.30.2