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

Author: Erik Faye-Lund <[email protected]>
Date:   Wed Nov  1 15:06:17 2023 +0100

panfrost: allow packing formats outside of pan_format.c

This is useful when we want to avoid looking up a format in the format
table.

Reviewed-by: Boris Brezillon <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25968>

---

 src/panfrost/lib/pan_format.c | 43 +-----------------------------------------
 src/panfrost/lib/pan_format.h | 44 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+), 42 deletions(-)

diff --git a/src/panfrost/lib/pan_format.c b/src/panfrost/lib/pan_format.c
index 37f808bfdfd..54dc0c4ab01 100644
--- a/src/panfrost/lib/pan_format.c
+++ b/src/panfrost/lib/pan_format.c
@@ -123,52 +123,11 @@ const struct pan_blendable_format
 #define FLAGS_VT__ (_V | _T)
 #define FLAGS__T_Z (_T | _Z)
 
-#define SRGB_L (0)
-#define SRGB_S (1)
-
-#if PAN_ARCH <= 6
-#define V6_0000 PAN_V6_SWIZZLE(0, 0, 0, 0)
-#define V6_000R PAN_V6_SWIZZLE(0, 0, 0, R)
-#define V6_0R00 PAN_V6_SWIZZLE(0, R, 0, 0)
-#define V6_0A00 PAN_V6_SWIZZLE(0, A, 0, 0)
-#define V6_AAAA PAN_V6_SWIZZLE(A, A, A, A)
-#define V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1)
-#define V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1)
-#define V6_ABGR PAN_V6_SWIZZLE(A, B, G, R)
-#define V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1)
-#define V6_BGRA PAN_V6_SWIZZLE(B, G, R, A)
-#define V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1)
-#define V6_GBAR PAN_V6_SWIZZLE(G, B, A, R)
-#define V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0)
-#define V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1)
-#define V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1)
-#define V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1)
-#define V6_RGBA PAN_V6_SWIZZLE(R, G, B, A)
-#define V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1)
-#define V6_RRRG PAN_V6_SWIZZLE(R, R, R, G)
-#define V6_RRRR PAN_V6_SWIZZLE(R, R, R, R)
-#define V6_GGGG PAN_V6_SWIZZLE(G, G, G, G)
-
 #define FMT(pipe, mali, swizzle, srgb, flags)                                  
\
    [PIPE_FORMAT_##pipe] = {                                                    
\
-      .hw = (V6_##swizzle) | ((MALI_##mali) << 12) | (((SRGB_##srgb)) << 20),  
\
+      .hw = MALI_PACK_FMT(mali, swizzle, srgb),                                
\
       .bind = FLAGS_##flags,                                                   
\
    }
-#else
-
-#define MALI_RGB_COMPONENT_ORDER_R001 MALI_RGB_COMPONENT_ORDER_RGB1
-#define MALI_RGB_COMPONENT_ORDER_RG01 MALI_RGB_COMPONENT_ORDER_RGB1
-#define MALI_RGB_COMPONENT_ORDER_GBAR MALI_RGB_COMPONENT_ORDER_ARGB
-#define MALI_RGB_COMPONENT_ORDER_GBA1 MALI_RGB_COMPONENT_ORDER_1RGB
-#define MALI_RGB_COMPONENT_ORDER_ABG1 MALI_RGB_COMPONENT_ORDER_1BGR
-
-#define FMT(pipe, mali, swizzle, srgb, flags)                                  
\
-   [PIPE_FORMAT_##pipe] = {                                                    
\
-      .hw = (MALI_RGB_COMPONENT_ORDER_##swizzle) | ((MALI_##mali) << 12) |     
\
-            (((SRGB_##srgb)) << 20),                                           
\
-      .bind = FLAGS_##flags,                                                   
\
-   }
-#endif
 
 #if PAN_ARCH >= 7
 #define YUV_NO_SWAP (0)
diff --git a/src/panfrost/lib/pan_format.h b/src/panfrost/lib/pan_format.h
index afa7ccfd6a7..3f1eb4f2610 100644
--- a/src/panfrost/lib/pan_format.h
+++ b/src/panfrost/lib/pan_format.h
@@ -101,4 +101,48 @@ struct pan_decomposed_swizzle
    GENX(pan_decompose_swizzle)(enum mali_rgb_component_order order);
 #endif
 
+#define MALI_SRGB_L (0)
+#define MALI_SRGB_S (1)
+
+#if PAN_ARCH <= 6
+
+#define MALI_V6_0000 PAN_V6_SWIZZLE(0, 0, 0, 0)
+#define MALI_V6_000R PAN_V6_SWIZZLE(0, 0, 0, R)
+#define MALI_V6_0R00 PAN_V6_SWIZZLE(0, R, 0, 0)
+#define MALI_V6_0A00 PAN_V6_SWIZZLE(0, A, 0, 0)
+#define MALI_V6_AAAA PAN_V6_SWIZZLE(A, A, A, A)
+#define MALI_V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1)
+#define MALI_V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1)
+#define MALI_V6_ABGR PAN_V6_SWIZZLE(A, B, G, R)
+#define MALI_V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1)
+#define MALI_V6_BGRA PAN_V6_SWIZZLE(B, G, R, A)
+#define MALI_V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1)
+#define MALI_V6_GBAR PAN_V6_SWIZZLE(G, B, A, R)
+#define MALI_V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0)
+#define MALI_V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1)
+#define MALI_V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1)
+#define MALI_V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1)
+#define MALI_V6_RGBA PAN_V6_SWIZZLE(R, G, B, A)
+#define MALI_V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1)
+#define MALI_V6_RRRG PAN_V6_SWIZZLE(R, R, R, G)
+#define MALI_V6_RRRR PAN_V6_SWIZZLE(R, R, R, R)
+#define MALI_V6_GGGG PAN_V6_SWIZZLE(G, G, G, G)
+
+#define MALI_PACK_FMT(mali, swizzle, srgb)                                     
\
+   (MALI_V6_##swizzle) | ((MALI_##mali) << 12) | (((MALI_SRGB_##srgb)) << 20)
+
+#else
+
+#define MALI_RGB_COMPONENT_ORDER_R001 MALI_RGB_COMPONENT_ORDER_RGB1
+#define MALI_RGB_COMPONENT_ORDER_RG01 MALI_RGB_COMPONENT_ORDER_RGB1
+#define MALI_RGB_COMPONENT_ORDER_GBAR MALI_RGB_COMPONENT_ORDER_ARGB
+#define MALI_RGB_COMPONENT_ORDER_GBA1 MALI_RGB_COMPONENT_ORDER_1RGB
+#define MALI_RGB_COMPONENT_ORDER_ABG1 MALI_RGB_COMPONENT_ORDER_1BGR
+
+#define MALI_PACK_FMT(mali, swizzle, srgb)                                     
\
+   (MALI_RGB_COMPONENT_ORDER_##swizzle) | ((MALI_##mali) << 12) |              
\
+      (((MALI_SRGB_##srgb)) << 20)
+
+#endif
+
 #endif

Reply via email to