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

Author: Dave Airlie <[email protected]>
Date:   Tue Jul 26 08:33:50 2022 +1000

gallium/iris/crocus: collapse a bunch of conversion functions.

Add some static asserts.

Reviewed-by: Marek Olšák <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17747>

---

 src/gallium/auxiliary/tgsi/tgsi_from_mesa.h | 35 +++++++----------------------
 src/gallium/drivers/crocus/crocus_pipe.h    | 20 ++---------------
 src/gallium/drivers/iris/iris_pipe.h        | 20 ++---------------
 3 files changed, 12 insertions(+), 63 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h 
b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
index e3f1456d88a..c3595b93c5f 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_from_mesa.h
@@ -61,38 +61,19 @@ tgsi_get_interp_mode(enum glsl_interp_mode mode, bool 
color);
 static inline enum pipe_shader_type
 pipe_shader_type_from_mesa(gl_shader_stage stage)
 {
-   switch (stage) {
-   case MESA_SHADER_VERTEX:
-      return PIPE_SHADER_VERTEX;
-   case MESA_SHADER_TESS_CTRL:
-      return PIPE_SHADER_TESS_CTRL;
-   case MESA_SHADER_TESS_EVAL:
-      return PIPE_SHADER_TESS_EVAL;
-   case MESA_SHADER_GEOMETRY:
-      return PIPE_SHADER_GEOMETRY;
-   case MESA_SHADER_FRAGMENT:
-      return PIPE_SHADER_FRAGMENT;
-   case MESA_SHADER_COMPUTE:
-   case MESA_SHADER_KERNEL:
-      return PIPE_SHADER_COMPUTE;
-   default:
-      unreachable("bad shader stage");
-   }
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_VERTEX == 
PIPE_SHADER_VERTEX);
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_FRAGMENT == 
PIPE_SHADER_FRAGMENT);
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_TESS_CTRL == 
PIPE_SHADER_TESS_CTRL);
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_TESS_EVAL == 
PIPE_SHADER_TESS_EVAL);
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_GEOMETRY == 
PIPE_SHADER_GEOMETRY);
+   STATIC_ASSERT((enum pipe_shader_type) MESA_SHADER_COMPUTE == 
PIPE_SHADER_COMPUTE);
+   return (enum pipe_shader_type)stage;
 }
 
 static inline gl_shader_stage
 tgsi_processor_to_shader_stage(unsigned processor)
 {
-   switch (processor) {
-   case PIPE_SHADER_FRAGMENT:  return MESA_SHADER_FRAGMENT;
-   case PIPE_SHADER_VERTEX:    return MESA_SHADER_VERTEX;
-   case PIPE_SHADER_GEOMETRY:  return MESA_SHADER_GEOMETRY;
-   case PIPE_SHADER_TESS_CTRL: return MESA_SHADER_TESS_CTRL;
-   case PIPE_SHADER_TESS_EVAL: return MESA_SHADER_TESS_EVAL;
-   case PIPE_SHADER_COMPUTE:   return MESA_SHADER_COMPUTE;
-   default:
-      unreachable("invalid TGSI processor");
-   }
+   return (gl_shader_stage)processor;
 }
 
 #ifdef __cplusplus
diff --git a/src/gallium/drivers/crocus/crocus_pipe.h 
b/src/gallium/drivers/crocus/crocus_pipe.h
index 71b12d08e16..b1370aa05bf 100644
--- a/src/gallium/drivers/crocus/crocus_pipe.h
+++ b/src/gallium/drivers/crocus/crocus_pipe.h
@@ -29,29 +29,13 @@
 static inline gl_shader_stage
 stage_from_pipe(enum pipe_shader_type pstage)
 {
-   static const gl_shader_stage stages[PIPE_SHADER_TYPES] = {
-      [PIPE_SHADER_VERTEX] = MESA_SHADER_VERTEX,
-      [PIPE_SHADER_TESS_CTRL] = MESA_SHADER_TESS_CTRL,
-      [PIPE_SHADER_TESS_EVAL] = MESA_SHADER_TESS_EVAL,
-      [PIPE_SHADER_GEOMETRY] = MESA_SHADER_GEOMETRY,
-      [PIPE_SHADER_FRAGMENT] = MESA_SHADER_FRAGMENT,
-      [PIPE_SHADER_COMPUTE] = MESA_SHADER_COMPUTE,
-   };
-   return stages[pstage];
+   return (gl_shader_stage)pstage;
 }
 
 static inline enum pipe_shader_type
 stage_to_pipe(gl_shader_stage stage)
 {
-   static const enum pipe_shader_type pstages[MESA_SHADER_STAGES] = {
-      [MESA_SHADER_VERTEX] = PIPE_SHADER_VERTEX,
-      [MESA_SHADER_TESS_CTRL] = PIPE_SHADER_TESS_CTRL,
-      [MESA_SHADER_TESS_EVAL] = PIPE_SHADER_TESS_EVAL,
-      [MESA_SHADER_GEOMETRY] = PIPE_SHADER_GEOMETRY,
-      [MESA_SHADER_FRAGMENT] = PIPE_SHADER_FRAGMENT,
-      [MESA_SHADER_COMPUTE] = PIPE_SHADER_COMPUTE,
-   };
-   return pstages[stage];
+   return (enum pipe_shader_type)stage;
 }
 
 /**
diff --git a/src/gallium/drivers/iris/iris_pipe.h 
b/src/gallium/drivers/iris/iris_pipe.h
index b859e650ffb..573d76261cf 100644
--- a/src/gallium/drivers/iris/iris_pipe.h
+++ b/src/gallium/drivers/iris/iris_pipe.h
@@ -29,29 +29,13 @@
 static inline gl_shader_stage
 stage_from_pipe(enum pipe_shader_type pstage)
 {
-   static const gl_shader_stage stages[PIPE_SHADER_TYPES] = {
-      [PIPE_SHADER_VERTEX] = MESA_SHADER_VERTEX,
-      [PIPE_SHADER_TESS_CTRL] = MESA_SHADER_TESS_CTRL,
-      [PIPE_SHADER_TESS_EVAL] = MESA_SHADER_TESS_EVAL,
-      [PIPE_SHADER_GEOMETRY] = MESA_SHADER_GEOMETRY,
-      [PIPE_SHADER_FRAGMENT] = MESA_SHADER_FRAGMENT,
-      [PIPE_SHADER_COMPUTE] = MESA_SHADER_COMPUTE,
-   };
-   return stages[pstage];
+   return (gl_shader_stage)pstage;
 }
 
 static inline enum pipe_shader_type
 stage_to_pipe(gl_shader_stage stage)
 {
-   static const enum pipe_shader_type pstages[MESA_SHADER_STAGES] = {
-      [MESA_SHADER_VERTEX] = PIPE_SHADER_VERTEX,
-      [MESA_SHADER_TESS_CTRL] = PIPE_SHADER_TESS_CTRL,
-      [MESA_SHADER_TESS_EVAL] = PIPE_SHADER_TESS_EVAL,
-      [MESA_SHADER_GEOMETRY] = PIPE_SHADER_GEOMETRY,
-      [MESA_SHADER_FRAGMENT] = PIPE_SHADER_FRAGMENT,
-      [MESA_SHADER_COMPUTE] = PIPE_SHADER_COMPUTE,
-   };
-   return pstages[stage];
+   return (enum pipe_shader_type)stage;
 }
 
 /**

Reply via email to