Mesa (master): radv: break out vertex shader param emission into separate function
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Mar 31 14:06:14 UTC 2021
Module: Mesa
Branch: master
Commit: 4e0a3c252742e7b1720728a1c2477e75a0f47744
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e0a3c252742e7b1720728a1c2477e75a0f47744
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Fri Feb 5 13:17:27 2021 -0500
radv: break out vertex shader param emission into separate function
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8788>
---
src/amd/vulkan/radv_cmd_buffer.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index c321cc0b818..6bac6560331 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -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);
More information about the mesa-commit
mailing list