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; } /**
