From 06e421fe5c219f6b8be967649ba99e1f4f9355e2 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Tue, 2 Feb 2021 12:59:01 +0100 Subject: [PATCH] zink: add a get_spacing-helper Similarly to the previous commit, this makes the code a bit easier to read. Reviewed-By: Mike Blumenkrantz Part-of: --- .../drivers/zink/nir_to_spirv/nir_to_spirv.c | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index 7541eca73ce..56fb381b36b 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -3311,6 +3311,21 @@ get_primitive_mode(uint16_t primitive_mode) } } +static SpvExecutionMode +get_spacing(enum gl_tess_spacing spacing) +{ + switch (spacing) { + case TESS_SPACING_EQUAL: + return SpvExecutionModeSpacingEqual; + case TESS_SPACING_FRACTIONAL_ODD: + return SpvExecutionModeSpacingFractionalOdd; + case TESS_SPACING_FRACTIONAL_EVEN: + return SpvExecutionModeSpacingFractionalEven; + default: + unreachable("unknown tess spacing!"); + } +} + struct spirv_shader * nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, unsigned char *shader_slot_map, unsigned char *shader_slots_reserved) @@ -3473,19 +3488,8 @@ nir_to_spirv(struct nir_shader *s, const struct zink_so_info *so_info, spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeVertexOrderCcw); else spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeVertexOrderCw); - switch (s->info.tess.spacing) { - case TESS_SPACING_EQUAL: - spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeSpacingEqual); - break; - case TESS_SPACING_FRACTIONAL_ODD: - spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeSpacingFractionalOdd); - break; - case TESS_SPACING_FRACTIONAL_EVEN: - spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModeSpacingFractionalEven); - break; - default: - unreachable("unknown tess spacing!"); - } + spirv_builder_emit_exec_mode(&ctx.builder, entry_point, + get_spacing(s->info.tess.spacing)); if (s->info.tess.point_mode) spirv_builder_emit_exec_mode(&ctx.builder, entry_point, SpvExecutionModePointMode); break;