From 1b710d4a961982b3764f296dbd50013188a28fc2 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 18 Aug 2021 16:21:55 +0000 Subject: [PATCH] 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 Part-of: --- 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 } }, };