panfrost: Add support for R3G3B2
Tested with texenv from mesa-demos.
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4292>
diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c
index 72156cb..b6f8c64 100644
--- a/src/gallium/drivers/panfrost/pan_screen.c
+++ b/src/gallium/drivers/panfrost/pan_screen.c
@@ -461,7 +461,9 @@
if (format == PIPE_FORMAT_X8Z24_UNORM)
return false;
- if (format == PIPE_FORMAT_A1B5G5R5_UNORM || format == PIPE_FORMAT_X1B5G5R5_UNORM)
+ if (format == PIPE_FORMAT_A1B5G5R5_UNORM ||
+ format == PIPE_FORMAT_X1B5G5R5_UNORM ||
+ format == PIPE_FORMAT_B2G3R3_UNORM)
return false;
/* TODO */
diff --git a/src/panfrost/encoder/pan_format.c b/src/panfrost/encoder/pan_format.c
index 26d3f79..89f4695 100644
--- a/src/panfrost/encoder/pan_format.c
+++ b/src/panfrost/encoder/pan_format.c
@@ -124,6 +124,9 @@
/* Z32F = R32F to the hardware */
return MALI_R32F;
+ case PIPE_FORMAT_R3G3B2_UNORM:
+ return MALI_RGB332_UNORM;
+
case PIPE_FORMAT_B5G6R5_UNORM:
return MALI_RGB565;
diff --git a/src/panfrost/include/panfrost-job.h b/src/panfrost/include/panfrost-job.h
index 355eca9..a409f15 100644
--- a/src/panfrost/include/panfrost-job.h
+++ b/src/panfrost/include/panfrost-job.h
@@ -294,6 +294,8 @@
MALI_RGB10_A2UI = MALI_FORMAT_SPECIAL | 0x7,
MALI_RGB10_A2I = MALI_FORMAT_SPECIAL | 0x9,
+ MALI_RGB332_UNORM = MALI_FORMAT_SPECIAL | 0xb,
+
/* YUV formats */
MALI_NV12 = MALI_FORMAT_SPECIAL | 0xc,
diff --git a/src/panfrost/pandecode/pan_pretty_print.c b/src/panfrost/pandecode/pan_pretty_print.c
index 9f9852a..96ef7d7 100644
--- a/src/panfrost/pandecode/pan_pretty_print.c
+++ b/src/panfrost/pandecode/pan_pretty_print.c
@@ -52,6 +52,7 @@
DEFINE_CASE(RGB10_A2_SNORM);
DEFINE_CASE(RGB10_A2UI);
DEFINE_CASE(RGB10_A2I);
+ DEFINE_CASE(RGB332_UNORM);
DEFINE_CASE(NV12);
DEFINE_CASE(Z32_UNORM);
DEFINE_CASE(R32_FIXED);