diff --git a/.pick_status.json b/.pick_status.json index d4fcf66d2811..bdfaa287268d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "radv/rt: Remove nir_intrinsic_execute_callable instrs in monolithic mode", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/nir/radv_nir_rt_shader.c b/src/amd/vulkan/nir/radv_nir_rt_shader.c index 8dcd853aa724..e661ed204288 100644 --- a/src/amd/vulkan/nir/radv_nir_rt_shader.c +++ b/src/amd/vulkan/nir/radv_nir_rt_shader.c @@ -1772,7 +1772,12 @@ lower_rt_instruction_monolithic(nir_builder *b, nir_instr *instr, void *data) switch (intr->intrinsic) { case nir_intrinsic_execute_callable: - unreachable("nir_intrinsic_execute_callable"); + /* It's allowed to place OpExecuteCallableKHR in a SPIR-V, even if the RT pipeline doesn't contain + * any callable shaders. However, it's impossible to execute the instruction in a valid way, so just remove any + * nir_intrinsic_execute_callable we encounter. + */ + nir_instr_remove(instr); + return true; case nir_intrinsic_trace_ray: { vars->payload_offset = nir_src_as_uint(intr->src[10]);