From 2ca4a51679b649cd4ee1df3f84d2379d2b0dca68 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 18 Jul 2022 10:21:46 +0200 Subject: [PATCH] v3d,v3dv: add a common v3d_hw_prim_type helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We had this replicated in both drivers. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/common/v3d_util.c | 27 ++++++++++++++++++++++++++ src/broadcom/common/v3d_util.h | 3 +++ src/broadcom/vulkan/v3dvx_cmd_buffer.c | 26 +------------------------ src/gallium/drivers/v3d/v3dx_draw.c | 24 ----------------------- 4 files changed, 31 insertions(+), 49 deletions(-) diff --git a/src/broadcom/common/v3d_util.c b/src/broadcom/common/v3d_util.c index 5fe0336f6ed..b36bff71326 100644 --- a/src/broadcom/common/v3d_util.c +++ b/src/broadcom/common/v3d_util.c @@ -143,3 +143,30 @@ v3d_translate_pipe_swizzle(enum pipe_swizzle swizzle) unreachable("unknown swizzle"); } } + +/* Translates a pipe primitive type to a hw value we can use in the various + * draw packets. + */ +uint32_t +v3d_hw_prim_type(enum pipe_prim_type prim_type) +{ + switch (prim_type) { + case PIPE_PRIM_POINTS: + case PIPE_PRIM_LINES: + case PIPE_PRIM_LINE_LOOP: + case PIPE_PRIM_LINE_STRIP: + case PIPE_PRIM_TRIANGLES: + case PIPE_PRIM_TRIANGLE_STRIP: + case PIPE_PRIM_TRIANGLE_FAN: + return prim_type; + + case PIPE_PRIM_LINES_ADJACENCY: + case PIPE_PRIM_LINE_STRIP_ADJACENCY: + case PIPE_PRIM_TRIANGLES_ADJACENCY: + case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: + return 8 + (prim_type - PIPE_PRIM_LINES_ADJACENCY); + + default: + unreachable("Unsupported primitive type"); + } +} diff --git a/src/broadcom/common/v3d_util.h b/src/broadcom/common/v3d_util.h index d3cca0ce6a5..2392f866415 100644 --- a/src/broadcom/common/v3d_util.h +++ b/src/broadcom/common/v3d_util.h @@ -43,4 +43,7 @@ v3d_choose_tile_size(uint32_t color_attachment_count, uint32_t max_color_bpp, uint32_t v3d_translate_pipe_swizzle(enum pipe_swizzle swizzle); +uint32_t +v3d_hw_prim_type(enum pipe_prim_type prim_type); + #endif diff --git a/src/broadcom/vulkan/v3dvx_cmd_buffer.c b/src/broadcom/vulkan/v3dvx_cmd_buffer.c index 571f7ad5433..a97c81991e9 100644 --- a/src/broadcom/vulkan/v3dvx_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dvx_cmd_buffer.c @@ -23,6 +23,7 @@ #include "v3dv_private.h" #include "broadcom/common/v3d_macros.h" +#include "broadcom/common/v3d_util.h" #include "broadcom/cle/v3dx_pack.h" #include "broadcom/compiler/v3d_compiler.h" @@ -2118,31 +2119,6 @@ v3dX(cmd_buffer_emit_gl_shader_state)(struct v3dv_cmd_buffer *cmd_buffer) cmd_buffer->state.dirty_push_constants_stages &= ~VK_SHADER_STAGE_ALL_GRAPHICS; } -/* FIXME: C&P from v3dx_draw. Refactor to common place? */ -static uint32_t -v3d_hw_prim_type(enum pipe_prim_type prim_type) -{ - switch (prim_type) { - case PIPE_PRIM_POINTS: - case PIPE_PRIM_LINES: - case PIPE_PRIM_LINE_LOOP: - case PIPE_PRIM_LINE_STRIP: - case PIPE_PRIM_TRIANGLES: - case PIPE_PRIM_TRIANGLE_STRIP: - case PIPE_PRIM_TRIANGLE_FAN: - return prim_type; - - case PIPE_PRIM_LINES_ADJACENCY: - case PIPE_PRIM_LINE_STRIP_ADJACENCY: - case PIPE_PRIM_TRIANGLES_ADJACENCY: - case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: - return 8 + (prim_type - PIPE_PRIM_LINES_ADJACENCY); - - default: - unreachable("Unsupported primitive type"); - } -} - void v3dX(cmd_buffer_emit_draw)(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_draw_info *info) diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c index 8167d9bc24a..b303d6a1756 100644 --- a/src/gallium/drivers/v3d/v3dx_draw.c +++ b/src/gallium/drivers/v3d/v3dx_draw.c @@ -936,30 +936,6 @@ v3d_update_job_ez(struct v3d_context *v3d, struct v3d_job *job) job->first_ez_state = job->ez_state; } -static uint32_t -v3d_hw_prim_type(enum pipe_prim_type prim_type) -{ - switch (prim_type) { - case PIPE_PRIM_POINTS: - case PIPE_PRIM_LINES: - case PIPE_PRIM_LINE_LOOP: - case PIPE_PRIM_LINE_STRIP: - case PIPE_PRIM_TRIANGLES: - case PIPE_PRIM_TRIANGLE_STRIP: - case PIPE_PRIM_TRIANGLE_FAN: - return prim_type; - - case PIPE_PRIM_LINES_ADJACENCY: - case PIPE_PRIM_LINE_STRIP_ADJACENCY: - case PIPE_PRIM_TRIANGLES_ADJACENCY: - case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY: - return 8 + (prim_type - PIPE_PRIM_LINES_ADJACENCY); - - default: - unreachable("Unsupported primitive type"); - } -} - static bool v3d_check_compiled_shaders(struct v3d_context *v3d) {