mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
radv: Use a global address for ray_launch_size
Required for indirect(2) ray tracing to work.
Fixes: b30f96dd ("radv,aco: Use ray_launch_size_addr")
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17316>
This commit is contained in:
parent
3962555db8
commit
69daa3f762
3 changed files with 7 additions and 5 deletions
|
|
@ -8435,7 +8435,8 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
}
|
||||
case nir_intrinsic_load_ray_launch_size_addr_amd: {
|
||||
Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
|
||||
Temp addr = convert_pointer_to_64_bit(ctx, get_arg(ctx, ctx->args->ac.ray_launch_size_addr));
|
||||
Temp addr = get_arg(ctx, ctx->args->ac.ray_launch_size_addr);
|
||||
assert(addr.regClass() == s2);
|
||||
bld.copy(Definition(dst), Operand(addr));
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7801,7 +7801,7 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
|
|||
radv_lookup_user_sgpr(&pipeline->base, MESA_SHADER_COMPUTE, AC_UD_CS_RAY_LAUNCH_SIZE_ADDR);
|
||||
if (size_loc->sgpr_idx != -1) {
|
||||
radv_emit_shader_pointer(cmd_buffer->device, cmd_buffer->cs,
|
||||
base_reg + size_loc->sgpr_idx * 4, launch_size_va, false);
|
||||
base_reg + size_loc->sgpr_idx * 4, launch_size_va, true);
|
||||
}
|
||||
|
||||
radv_dispatch(cmd_buffer, &info, pipeline, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@ static void
|
|||
set_loc_shader_ptr(struct radv_shader_args *args, int idx, uint8_t *sgpr_idx)
|
||||
{
|
||||
bool use_32bit_pointers = idx != AC_UD_SCRATCH_RING_OFFSETS &&
|
||||
idx != AC_UD_CS_TASK_RING_OFFSETS;
|
||||
idx != AC_UD_CS_TASK_RING_OFFSETS &&
|
||||
idx != AC_UD_CS_RAY_LAUNCH_SIZE_ADDR;
|
||||
|
||||
set_loc_shader(args, idx, sgpr_idx, use_32bit_pointers ? 1 : 2);
|
||||
}
|
||||
|
|
@ -175,7 +176,7 @@ allocate_user_sgprs(enum amd_gfx_level gfx_level, const struct radv_shader_info
|
|||
if (info->cs.uses_grid_size)
|
||||
user_sgpr_count += args->load_grid_size_from_user_sgpr ? 3 : 2;
|
||||
if (info->cs.uses_ray_launch_size)
|
||||
user_sgpr_count++;
|
||||
user_sgpr_count += 2;
|
||||
if (info->vs.needs_draw_id)
|
||||
user_sgpr_count += 1;
|
||||
if (info->cs.uses_task_rings)
|
||||
|
|
@ -575,7 +576,7 @@ radv_declare_shader_args(enum amd_gfx_level gfx_level, const struct radv_pipelin
|
|||
}
|
||||
|
||||
if (info->cs.uses_ray_launch_size) {
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_CONST_PTR, &args->ac.ray_launch_size_addr);
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 2, AC_ARG_CONST_PTR, &args->ac.ray_launch_size_addr);
|
||||
}
|
||||
|
||||
if (info->vs.needs_draw_id) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue