radv: pre-compute the base upload offset in radv_prepare_dgc()

It will need to be adjusted if task+mesh shaders need to allocate
push constants.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29935>
This commit is contained in:
Samuel Pitoiset
2024-06-27 11:25:12 +02:00
committed by Marge Bot
parent 842f3ea133
commit 58327fd3bf

View File

@@ -277,6 +277,7 @@ struct radv_dgc_params {
uint32_t ace_cmd_buf_main_offset;
uint32_t ace_cmd_buf_stride;
uint32_t ace_cmd_buf_size;
uint32_t upload_main_offset;
uint32_t upload_stride;
uint32_t upload_addr;
uint32_t sequence_count;
@@ -1879,8 +1880,8 @@ build_dgc_prepare_shader(struct radv_device *dev)
nir_variable *upload_offset =
nir_variable_create(b.shader, nir_var_shader_temp, glsl_uint_type(), "upload_offset");
nir_def *upload_offset_init = nir_iadd(&b, nir_iadd(&b, load_param32(&b, cmd_buf_size), cmd_buf_base_offset),
nir_imul(&b, load_param32(&b, upload_stride), sequence_id));
nir_def *upload_offset_init =
nir_iadd(&b, load_param32(&b, upload_main_offset), nir_imul(&b, load_param32(&b, upload_stride), sequence_id));
nir_store_var(&b, upload_offset, upload_offset_init, 0x1);
nir_def *vbo_bind_mask = load_param32(&b, vbo_bind_mask);
@@ -2492,6 +2493,8 @@ radv_prepare_dgc(struct radv_cmd_buffer *cmd_buffer, const VkGeneratedCommandsIn
offset += radv_dgc_preamble_cmdbuf_size(device, AMD_IP_COMPUTE);
ace_cmd_buf_main_offset = offset;
const uint32_t upload_main_offset = cmd_buf_main_offset + cmd_buf_size;
struct radv_dgc_params params = {
.cmd_buf_main_offset = cmd_buf_main_offset,
.cmd_buf_stride = cmd_stride,
@@ -2500,6 +2503,7 @@ radv_prepare_dgc(struct radv_cmd_buffer *cmd_buffer, const VkGeneratedCommandsIn
.ace_cmd_buf_main_offset = ace_cmd_buf_main_offset,
.ace_cmd_buf_stride = ace_cmd_stride,
.ace_cmd_buf_size = ace_cmd_buf_size,
.upload_main_offset = upload_main_offset,
.upload_addr = (uint32_t)upload_addr,
.upload_stride = upload_stride,
.sequence_count = pGeneratedCommandsInfo->sequencesCount | (sequence_count_addr ? 1u << 31 : 0),