diff --git a/src/amd/compiler/instruction_selection/aco_select_nir.cpp b/src/amd/compiler/instruction_selection/aco_select_nir.cpp index 5b9296b4e1b..50184e2082c 100644 --- a/src/amd/compiler/instruction_selection/aco_select_nir.cpp +++ b/src/amd/compiler/instruction_selection/aco_select_nir.cpp @@ -1208,6 +1208,8 @@ select_program_rt(isel_context& ctx, unsigned shader_count, struct nir_shader* c */ if (shader_count > 1 || shaders[i]->info.stage != MESA_SHADER_RAYGEN) insert_rt_jump_next(ctx, args); + else + Builder(ctx.program, ctx.block).sopp(aco_opcode::s_endpgm); cleanup_context(&ctx); } diff --git a/src/amd/vulkan/nir/radv_nir_rt_shader.c b/src/amd/vulkan/nir/radv_nir_rt_shader.c index c361d25bfd7..9be833f5c12 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_shader.c +++ b/src/amd/vulkan/nir/radv_nir_rt_shader.c @@ -2075,9 +2075,7 @@ radv_nir_lower_rt_abi(nir_shader *shader, const VkRayTracingPipelineCreateInfoKH b.cursor = nir_after_impl(impl); - if (monolithic) { - nir_terminate(&b); - } else { + if (!monolithic) { /* select next shader */ shader_addr = nir_load_var(&b, vars.shader_addr); nir_def *next = select_next_shader(&b, shader_addr, info->wave_size);