radv: pass the vertex shader to radv_write_vertex_descriptors()
Mostly for DGC. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30916>
This commit is contained in:

committed by
Marge Bot

parent
bd5dca3e81
commit
0dc2a5bfee
@@ -6145,17 +6145,17 @@ radv_flush_constants(struct radv_cmd_buffer *cmd_buffer, VkShaderStageFlags stag
|
||||
}
|
||||
|
||||
void
|
||||
radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, bool full_null_descriptors, void *vb_ptr)
|
||||
radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *vs,
|
||||
bool full_null_descriptors, void *vb_ptr)
|
||||
{
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
struct radv_shader *vs_shader = radv_get_shader(cmd_buffer->state.shaders, MESA_SHADER_VERTEX);
|
||||
enum amd_gfx_level chip = pdev->info.gfx_level;
|
||||
enum radeon_family family = pdev->info.family;
|
||||
unsigned desc_index = 0;
|
||||
uint32_t mask = vs_shader->info.vs.vb_desc_usage_mask;
|
||||
uint32_t mask = vs->info.vs.vb_desc_usage_mask;
|
||||
uint64_t va;
|
||||
const bool uses_dynamic_inputs = vs_shader->info.vs.dynamic_inputs;
|
||||
const bool uses_dynamic_inputs = vs->info.vs.dynamic_inputs;
|
||||
const struct radv_vertex_input_state *vi_state = &cmd_buffer->state.vertex_input;
|
||||
|
||||
const struct ac_vtx_format_info *vtx_info_table =
|
||||
@@ -6236,7 +6236,7 @@ radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, bool ful
|
||||
num_records = vk_buffer_range(&buffer->vk, offset, VK_WHOLE_SIZE);
|
||||
}
|
||||
|
||||
if (vs_shader->info.vs.use_per_attribute_vb_descs) {
|
||||
if (vs->info.vs.use_per_attribute_vb_descs) {
|
||||
const uint32_t attrib_end = vi_state->offsets[i] + vi_state->format_sizes[i];
|
||||
|
||||
if (num_records < attrib_end) {
|
||||
@@ -6322,7 +6322,7 @@ radv_flush_vertex_descriptors(struct radv_cmd_buffer *cmd_buffer)
|
||||
if (!radv_cmd_buffer_upload_alloc(cmd_buffer, vb_desc_alloc_size, &vb_offset, &vb_ptr))
|
||||
return;
|
||||
|
||||
radv_write_vertex_descriptors(cmd_buffer, false, vb_ptr);
|
||||
radv_write_vertex_descriptors(cmd_buffer, vs, false, vb_ptr);
|
||||
|
||||
va = radv_buffer_get_va(cmd_buffer->upload.upload_bo);
|
||||
va += vb_offset;
|
||||
|
@@ -704,7 +704,8 @@ void radv_update_color_clear_metadata(struct radv_cmd_buffer *cmd_buffer, const
|
||||
|
||||
unsigned radv_instance_rate_prolog_index(unsigned num_attributes, uint32_t instance_rate_inputs);
|
||||
|
||||
void radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, bool full_null_descriptors, void *vb_ptr);
|
||||
void radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer, const struct radv_shader *vs,
|
||||
bool full_null_descriptors, void *vb_ptr);
|
||||
|
||||
enum radv_cmd_flush_bits radv_src_access_flush(struct radv_cmd_buffer *cmd_buffer, VkPipelineStageFlags2 src_stages,
|
||||
VkAccessFlags2 src_flags, const struct radv_image *image);
|
||||
|
@@ -2343,7 +2343,7 @@ radv_prepare_dgc_graphics(struct radv_cmd_buffer *cmd_buffer, const VkGeneratedC
|
||||
uint32_t mask = vs->info.vs.vb_desc_usage_mask;
|
||||
unsigned vb_desc_alloc_size = util_bitcount(mask) * 16;
|
||||
|
||||
radv_write_vertex_descriptors(cmd_buffer, true, *upload_data);
|
||||
radv_write_vertex_descriptors(cmd_buffer, vs, true, *upload_data);
|
||||
|
||||
uint32_t *vbo_info = (uint32_t *)((char *)*upload_data + vb_desc_alloc_size);
|
||||
|
||||
|
Reference in New Issue
Block a user