v3d,v3dv: add a common v3d_hw_prim_type helper
We had this replicated in both drivers. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17594>
This commit is contained in:
parent
e812cbe847
commit
2ca4a51679
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue