v3dv/cmd_buffer: missing updates due PrimitiveTopology being dynamic now

There were some pending places to update after PrimitiveTopology
become dynamic. FWIW, this was not catched by any CTS test.

As we are here we add a comment to explain why we still use the
topology on the pipeline.

Fixes: 2526f74ade ("v3dv: PrimitiveTopology is now dynamic")

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28980>
This commit is contained in:
Alejandro Piñeiro
2024-04-26 23:45:44 +02:00
committed by Marge Bot
parent 6bcc300e00
commit ef5697a884
2 changed files with 11 additions and 3 deletions
+6 -3
View File
@@ -2707,7 +2707,9 @@ v3dX(cmd_buffer_emit_draw_indexed)(struct v3dv_cmd_buffer *cmd_buffer,
assert(job);
const struct v3dv_pipeline *pipeline = cmd_buffer->state.gfx.pipeline;
uint32_t hw_prim_type = v3d_hw_prim_type(pipeline->topology);
const struct vk_dynamic_graphics_state *dyn =
&cmd_buffer->vk.dynamic_graphics_state;
uint32_t hw_prim_type = v3dv_pipeline_primitive(dyn->ia.primitive_topology);
uint8_t index_type = ffs(cmd_buffer->state.index_buffer.index_size) - 1;
uint32_t index_offset = firstIndex * cmd_buffer->state.index_buffer.index_size;
@@ -2760,8 +2762,9 @@ v3dX(cmd_buffer_emit_draw_indirect)(struct v3dv_cmd_buffer *cmd_buffer,
struct v3dv_job *job = cmd_buffer->state.job;
assert(job);
const struct v3dv_pipeline *pipeline = cmd_buffer->state.gfx.pipeline;
uint32_t hw_prim_type = v3d_hw_prim_type(pipeline->topology);
const struct vk_dynamic_graphics_state *dyn =
&cmd_buffer->vk.dynamic_graphics_state;
uint32_t hw_prim_type = v3dv_pipeline_primitive(dyn->ia.primitive_topology);
v3dv_cl_ensure_space_with_branch(
&job->bcl, cl_packet_length(INDIRECT_VERTEX_ARRAY_INSTANCED_PRIMS));