mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
radv: break out vertex shader param emission into separate function
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8788>
This commit is contained in:
parent
0a8b091922
commit
4e0a3c2527
1 changed files with 21 additions and 12 deletions
|
|
@ -5330,6 +5330,26 @@ radv_cs_emit_indirect_draw_packet(struct radv_cmd_buffer *cmd_buffer,
|
|||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
radv_emit_userdata_vertex(struct radv_cmd_buffer *cmd_buffer,
|
||||
const struct radv_draw_info *info,
|
||||
uint32_t vertex_offset)
|
||||
{
|
||||
struct radv_cmd_state *state = &cmd_buffer->state;
|
||||
struct radeon_cmdbuf *cs = cmd_buffer->cs;
|
||||
if (vertex_offset != state->last_vertex_offset || info->first_instance != state->last_first_instance) {
|
||||
radeon_set_sh_reg_seq(cs, state->pipeline->graphics.vtx_base_sgpr,
|
||||
state->pipeline->graphics.vtx_emit_num);
|
||||
|
||||
radeon_emit(cs, vertex_offset);
|
||||
radeon_emit(cs, info->first_instance);
|
||||
if (state->pipeline->graphics.vtx_emit_num == 3)
|
||||
radeon_emit(cs, 0);
|
||||
state->last_first_instance = info->first_instance;
|
||||
state->last_vertex_offset = vertex_offset;
|
||||
}
|
||||
}
|
||||
|
||||
ALWAYS_INLINE static void
|
||||
radv_emit_draw_packets_indexed(struct radv_cmd_buffer *cmd_buffer,
|
||||
const struct radv_draw_info *info,
|
||||
|
|
@ -5606,18 +5626,7 @@ radv_before_draw(struct radv_cmd_buffer *cmd_buffer,
|
|||
radeon_emit(cs, info->instance_count);
|
||||
state->last_num_instances = info->instance_count;
|
||||
}
|
||||
if (vertex_offset != state->last_vertex_offset ||
|
||||
info->first_instance != state->last_first_instance) {
|
||||
radeon_set_sh_reg_seq(cs, state->pipeline->graphics.vtx_base_sgpr,
|
||||
state->pipeline->graphics.vtx_emit_num);
|
||||
|
||||
radeon_emit(cs, vertex_offset);
|
||||
radeon_emit(cs, info->first_instance);
|
||||
if (state->pipeline->graphics.vtx_emit_num == 3)
|
||||
radeon_emit(cs, 0);
|
||||
state->last_first_instance = info->first_instance;
|
||||
state->last_vertex_offset = vertex_offset;
|
||||
}
|
||||
radv_emit_userdata_vertex(cmd_buffer, info, vertex_offset);
|
||||
}
|
||||
assert(cmd_buffer->cs->cdw <= cdw_max);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue