diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 71c256933e1..f41864f8e36 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1386,3 +1386,9 @@ system_value("callable_sbt_addr_intel", 1, bit_sizes=[64]) system_value("callable_sbt_stride_intel", 1, bit_sizes=[16]) system_value("leaf_opaque_intel", 1, bit_sizes=[1]) system_value("leaf_procedural_intel", 1, bit_sizes=[1]) +# Values : +# 0: AnyHit +# 1: ClosestHit +# 2: Miss +# 3: Intersection +system_value("btd_shader_type_intel", 1) diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp index acec08dbbab..011e0eb10ce 100644 --- a/src/intel/compiler/brw_fs_nir.cpp +++ b/src/intel/compiler/brw_fs_nir.cpp @@ -4039,6 +4039,13 @@ fs_visitor::nir_emit_bs_intrinsic(const fs_builder &bld, bld.MOV(dest, retype(brw_vec1_grf(2, 2), dest.type)); break; + case nir_intrinsic_load_btd_shader_type_intel: { + fs_reg ud_dest = retype(dest, BRW_REGISTER_TYPE_UD); + bld.MOV(ud_dest, retype(brw_vec1_grf(0, 3), ud_dest.type)); + bld.AND(ud_dest, ud_dest, brw_imm_ud(0xf)); + break; + } + default: nir_emit_intrinsic(bld, instr); break;