diff options
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/gallium/drivers/panfrost/pan_cmdstream.c | 12 | ||||
-rw-r--r-- | src/panfrost/lib/pan_format.c | 44 |
3 files changed, 33 insertions, 25 deletions
diff --git a/.pick_status.json b/.pick_status.json index 393d433dd29..8fe1d748157 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2774,7 +2774,7 @@ "description": "panfrost: use RGB1 component ordering for R5G6B5 pixel formats", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 52bacb01b31..35b82c6ef7b 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -47,6 +47,7 @@ #include "pan_cmdstream.h" #include "pan_context.h" #include "pan_csf.h" +#include "pan_format.h" #include "pan_indirect_dispatch.h" #include "pan_jm.h" #include "pan_job.h" @@ -387,6 +388,17 @@ panfrost_emit_blend(struct panfrost_batch *batch, void *rts, panfrost_dithered_format_from_pipe_format)(format, dithered); cfg.fixed_function.rt = i; +#if PAN_ARCH >= 7 + if (cfg.mode == MALI_BLEND_MODE_FIXED_FUNCTION && + (cfg.fixed_function.conversion.memory_format & 0xff) == + MALI_RGB_COMPONENT_ORDER_RGB1) { + /* fixed function does not like RGB1 as the component order */ + /* force this field to be the default 0 (RGBA) */ + cfg.fixed_function.conversion.memory_format &= ~0xff; + cfg.fixed_function.conversion.memory_format |= + MALI_RGB_COMPONENT_ORDER_RGBA; + } +#endif #if PAN_ARCH <= 7 if (!info.opaque) { cfg.fixed_function.alpha_zero_nop = info.alpha_zero_nop; diff --git a/src/panfrost/lib/pan_format.c b/src/panfrost/lib/pan_format.c index c5cccee8993..20513c65990 100644 --- a/src/panfrost/lib/pan_format.c +++ b/src/panfrost/lib/pan_format.c @@ -30,18 +30,26 @@ /* Convenience */ -#define MALI_BLEND_AU_R8G8B8A8 (MALI_RGBA8_TB << 12) -#define MALI_BLEND_PU_R8G8B8A8 (MALI_RGBA8_TB << 12) -#define MALI_BLEND_AU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) -#define MALI_BLEND_PU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) -#define MALI_BLEND_AU_R8G8B8A2 (MALI_RGB8_A2_AU << 12) -#define MALI_BLEND_PU_R8G8B8A2 (MALI_RGB8_A2_PU << 12) -#define MALI_BLEND_AU_R4G4B4A4 (MALI_RGBA4_AU << 12) -#define MALI_BLEND_PU_R4G4B4A4 (MALI_RGBA4_PU << 12) -#define MALI_BLEND_AU_R5G6B5A0 (MALI_R5G6B5_AU << 12) -#define MALI_BLEND_PU_R5G6B5A0 (MALI_R5G6B5_PU << 12) -#define MALI_BLEND_AU_R5G5B5A1 (MALI_RGB5_A1_AU << 12) -#define MALI_BLEND_PU_R5G5B5A1 (MALI_RGB5_A1_PU << 12) +#if PAN_ARCH == 6 +#define MALI_RGBA_SWIZZLE PAN_V6_SWIZZLE(R, G, B, A) +#define MALI_RGB1_SWIZZLE PAN_V6_SWIZZLE(R, G, B, A) +#else +#define MALI_RGBA_SWIZZLE MALI_RGB_COMPONENT_ORDER_RGBA +#define MALI_RGB1_SWIZZLE MALI_RGB_COMPONENT_ORDER_RGB1 +#endif + +#define MALI_BLEND_AU_R8G8B8A8 (MALI_RGBA8_TB << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_PU_R8G8B8A8 (MALI_RGBA8_TB << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_AU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_PU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_AU_R8G8B8A2 (MALI_RGB8_A2_AU << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_PU_R8G8B8A2 (MALI_RGB8_A2_PU << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_AU_R4G4B4A4 (MALI_RGBA4_AU << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_PU_R4G4B4A4 (MALI_RGBA4_PU << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_AU_R5G6B5A0 (MALI_R5G6B5_AU << 12) | MALI_RGB1_SWIZZLE +#define MALI_BLEND_PU_R5G6B5A0 (MALI_R5G6B5_PU << 12) | MALI_RGB1_SWIZZLE +#define MALI_BLEND_AU_R5G5B5A1 (MALI_RGB5_A1_AU << 12) | MALI_RGBA_SWIZZLE +#define MALI_BLEND_PU_R5G5B5A1 (MALI_RGB5_A1_PU << 12) | MALI_RGBA_SWIZZLE #if PAN_ARCH <= 5 #define BFMT2(pipe, internal, writeback, srgb) \ @@ -50,18 +58,6 @@ MALI_COLOR_FORMAT_##writeback, \ { 0, 0 }, \ } -#elif PAN_ARCH == 6 -#define BFMT2(pipe, internal, writeback, srgb) \ - [PIPE_FORMAT_##pipe] = { \ - MALI_COLOR_BUFFER_INTERNAL_FORMAT_##internal, \ - MALI_COLOR_FORMAT_##writeback, \ - { \ - MALI_BLEND_PU_##internal | (srgb ? (1 << 20) : 0) | \ - PAN_V6_SWIZZLE(R, G, B, A), \ - MALI_BLEND_AU_##internal | (srgb ? (1 << 20) : 0) | \ - PAN_V6_SWIZZLE(R, G, B, A), \ - }, \ - } #else #define BFMT2(pipe, internal, writeback, srgb) \ [PIPE_FORMAT_##pipe] = { \ |