Mesa (main): panfrost: Add dither state to the clear colour tests

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 19 00:45:19 UTC 2021


Module: Mesa
Branch: main
Commit: 1b710d4a961982b3764f296dbd50013188a28fc2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1b710d4a961982b3764f296dbd50013188a28fc2

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Wed Aug 18 16:21:55 2021 +0000

panfrost: Add dither state to the clear colour tests

There is a dependence on dithering state about which I was previously
unaware. All these test cases were with dithering enabled, so mark that
down.

Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12460>

---

 src/panfrost/lib/tests/test-clear.c | 71 ++++++++++++++++++++-----------------
 1 file changed, 38 insertions(+), 33 deletions(-)

diff --git a/src/panfrost/lib/tests/test-clear.c b/src/panfrost/lib/tests/test-clear.c
index 671b07758ec..5a4a235dc7b 100644
--- a/src/panfrost/lib/tests/test-clear.c
+++ b/src/panfrost/lib/tests/test-clear.c
@@ -23,9 +23,12 @@
 
 #include "pan_util.h"
 
-/* A test consists of a render target format, clear colour, and translated form */
+/* A test consists of a render target format, clear colour, dither state, and
+ * translated form. Dither state matters when the tilebuffer format is more
+ * precise than the final format. */
 struct test {
    enum pipe_format format;
+   bool dithered;
    union pipe_color_union colour;
    uint32_t packed[4];
 };
@@ -34,61 +37,63 @@ struct test {
 #define RGRG(r, g) { r, g, r, g }
 #define F(r, g, b, a) { .f = { r, g, b, a } }
 #define UI(r, g, b, a) { .ui = { r, g, b, a } }
+#define D (true)
+#define _ (false)
 
 static const struct test clear_tests[] = {
    /* Basic tests */
-   { PIPE_FORMAT_R8G8B8A8_UNORM,    F(0.0,   0.0, 0.0, 0.0),   RRRR(0x00000000) },
-   { PIPE_FORMAT_R8G8B8A8_UNORM,    F(1.0,   0.0, 0.0, 1.0),   RRRR(0xFF0000FF) },
-   { PIPE_FORMAT_B8G8R8A8_UNORM,    F(1.0,   0.0, 0.0, 1.0),   RRRR(0xFF0000FF) },
-   { PIPE_FORMAT_R8G8B8A8_UNORM,    F(0.664, 0.0, 0.0, 0.0),   RRRR(0x000000A9) },
-   { PIPE_FORMAT_R4G4B4A4_UNORM,    F(0.664, 0.0, 0.0, 0.0),   RRRR(0x0000009F) },
+   { PIPE_FORMAT_R8G8B8A8_UNORM,    D, F(0.0,   0.0, 0.0, 0.0),   RRRR(0x00000000) },
+   { PIPE_FORMAT_R8G8B8A8_UNORM,    D, F(1.0,   0.0, 0.0, 1.0),   RRRR(0xFF0000FF) },
+   { PIPE_FORMAT_B8G8R8A8_UNORM,    D, F(1.0,   0.0, 0.0, 1.0),   RRRR(0xFF0000FF) },
+   { PIPE_FORMAT_R8G8B8A8_UNORM,    D, F(0.664, 0.0, 0.0, 0.0),   RRRR(0x000000A9) },
+   { PIPE_FORMAT_R4G4B4A4_UNORM,    D, F(0.664, 0.0, 0.0, 0.0),   RRRR(0x0000009F) },
 
    /* Test rounding to nearest even. The values are cherrypicked to multiply
     * out to a fractional part of 0.5. The first test should round down and
     * second test should round up. */
 
-   { PIPE_FORMAT_R4G4B4A4_UNORM,    F(0.41875, 0.0, 0.0, 1.0), RRRR(0xF0000064) },
-   { PIPE_FORMAT_R4G4B4A4_UNORM,    F(0.40625, 0.0, 0.0, 1.0), RRRR(0xF0000062) },
+   { PIPE_FORMAT_R4G4B4A4_UNORM,    D, F(0.41875, 0.0, 0.0, 1.0), RRRR(0xF0000064) },
+   { PIPE_FORMAT_R4G4B4A4_UNORM,    D, F(0.40625, 0.0, 0.0, 1.0), RRRR(0xF0000062) },
 
    /* Check all the special formats with different edge cases */
 
-   { PIPE_FORMAT_R4G4B4A4_UNORM,    F(0.127, 2.4, -1.0, 0.5), RRRR(0x7800F01E) },
-   { PIPE_FORMAT_R5G5B5A1_UNORM,    F(0.127, 2.4, -1.0, 0.5), RRRR(0x400F807E) },
-   { PIPE_FORMAT_R5G6B5_UNORM,      F(0.127, 2.4, -1.0, 0.5), RRRR(0x000FC07E) },
-   { PIPE_FORMAT_R10G10B10A2_UNORM, F(0.127, 2.4, -1.0, 0.5), RRRR(0x800FFC82) },
-   { PIPE_FORMAT_R8G8B8A8_SRGB,     F(0.127, 2.4, -1.0, 0.5), RRRR(0x8000FF64) },
+   { PIPE_FORMAT_R4G4B4A4_UNORM,    D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x7800F01E) },
+   { PIPE_FORMAT_R5G5B5A1_UNORM,    D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x400F807E) },
+   { PIPE_FORMAT_R5G6B5_UNORM,      D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x000FC07E) },
+   { PIPE_FORMAT_R10G10B10A2_UNORM, D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x800FFC82) },
+   { PIPE_FORMAT_R8G8B8A8_SRGB,     D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x8000FF64) },
 
-   { PIPE_FORMAT_R4G4B4A4_UNORM,    F(0.718, 0.18, 1.0, 2.0), RRRR(0xF0F02BAC) },
-   { PIPE_FORMAT_R5G6B5_UNORM,      F(0.718, 0.18, 1.0, 2.0), RRRR(0x3E02D6C8) },
-   { PIPE_FORMAT_R5G5B5A1_UNORM,    F(0.718, 0.18, 1.0, 2.0), RRRR(0xBE02CEC8) },
-   { PIPE_FORMAT_R10G10B10A2_UNORM, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFF2E2DF) },
-   { PIPE_FORMAT_R8G8B8A8_SRGB,     F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFFF76DC) },
+   { PIPE_FORMAT_R4G4B4A4_UNORM,    D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xF0F02BAC) },
+   { PIPE_FORMAT_R5G6B5_UNORM,      D, F(0.718, 0.18, 1.0, 2.0), RRRR(0x3E02D6C8) },
+   { PIPE_FORMAT_R5G5B5A1_UNORM,    D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xBE02CEC8) },
+   { PIPE_FORMAT_R10G10B10A2_UNORM, D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFF2E2DF) },
+   { PIPE_FORMAT_R8G8B8A8_SRGB,     D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFFF76DC) },
 
    /* Check that blendable tilebuffer values are invariant under swizzling */
 
-   { PIPE_FORMAT_B4G4R4A4_UNORM,    F(0.127, 2.4, -1.0, 0.5), RRRR(0x7800F01E) },
-   { PIPE_FORMAT_B5G5R5A1_UNORM,    F(0.127, 2.4, -1.0, 0.5), RRRR(0x400F807E) },
-   { PIPE_FORMAT_B5G6R5_UNORM,      F(0.127, 2.4, -1.0, 0.5), RRRR(0x000FC07E) },
-   { PIPE_FORMAT_B10G10R10A2_UNORM, F(0.127, 2.4, -1.0, 0.5), RRRR(0x800FFC82) },
-   { PIPE_FORMAT_B8G8R8A8_SRGB,     F(0.127, 2.4, -1.0, 0.5), RRRR(0x8000FF64) },
+   { PIPE_FORMAT_B4G4R4A4_UNORM,    D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x7800F01E) },
+   { PIPE_FORMAT_B5G5R5A1_UNORM,    D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x400F807E) },
+   { PIPE_FORMAT_B5G6R5_UNORM,      D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x000FC07E) },
+   { PIPE_FORMAT_B10G10R10A2_UNORM, D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x800FFC82) },
+   { PIPE_FORMAT_B8G8R8A8_SRGB,     D, F(0.127, 2.4, -1.0, 0.5), RRRR(0x8000FF64) },
 
-   { PIPE_FORMAT_B4G4R4A4_UNORM,    F(0.718, 0.18, 1.0, 2.0), RRRR(0xF0F02BAC) },
-   { PIPE_FORMAT_B5G6R5_UNORM,      F(0.718, 0.18, 1.0, 2.0), RRRR(0x3E02D6C8) },
-   { PIPE_FORMAT_B5G5R5A1_UNORM,    F(0.718, 0.18, 1.0, 2.0), RRRR(0xBE02CEC8) },
-   { PIPE_FORMAT_B10G10R10A2_UNORM, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFF2E2DF) },
-   { PIPE_FORMAT_B8G8R8A8_SRGB,     F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFFF76DC) },
+   { PIPE_FORMAT_B4G4R4A4_UNORM,    D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xF0F02BAC) },
+   { PIPE_FORMAT_B5G6R5_UNORM,      D, F(0.718, 0.18, 1.0, 2.0), RRRR(0x3E02D6C8) },
+   { PIPE_FORMAT_B5G5R5A1_UNORM,    D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xBE02CEC8) },
+   { PIPE_FORMAT_B10G10R10A2_UNORM, D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFF2E2DF) },
+   { PIPE_FORMAT_B8G8R8A8_SRGB,     D, F(0.718, 0.18, 1.0, 2.0), RRRR(0xFFFF76DC) },
 
    /* Check raw formats, which are not invariant under swizzling */
 
-   { PIPE_FORMAT_R8G8B8A8_UINT,   UI(0xCA, 0xFE, 0xBA, 0xBE), RRRR(0xBEBAFECA) },
-   { PIPE_FORMAT_B8G8R8A8_UINT,   UI(0xCA, 0xFE, 0xBA, 0xBE), RRRR(0xBECAFEBA) },
+   { PIPE_FORMAT_R8G8B8A8_UINT,   D, UI(0xCA, 0xFE, 0xBA, 0xBE), RRRR(0xBEBAFECA) },
+   { PIPE_FORMAT_B8G8R8A8_UINT,   D, UI(0xCA, 0xFE, 0xBA, 0xBE), RRRR(0xBECAFEBA) },
 
    /* Check that larger raw formats are replicated correctly */
 
-   { PIPE_FORMAT_R16G16B16A16_UINT,   UI(0xCAFE, 0xBABE, 0xABAD, 0x1DEA),
-                                      RGRG(0xBABECAFE, 0x1DEAABAD) },
+   { PIPE_FORMAT_R16G16B16A16_UINT, D, UI(0xCAFE, 0xBABE, 0xABAD, 0x1DEA),
+                                       RGRG(0xBABECAFE, 0x1DEAABAD) },
 
-   { PIPE_FORMAT_R32G32B32A32_UINT,
+   { PIPE_FORMAT_R32G32B32A32_UINT, D,
       UI(0xCAFEBABE, 0xABAD1DEA, 0xDEADBEEF, 0xABCDEF01),
       { 0xCAFEBABE, 0xABAD1DEA, 0xDEADBEEF, 0xABCDEF01 } },
 };



More information about the mesa-commit mailing list