diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index b7446ec8c43..c6a235e103d 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -2481,6 +2481,8 @@ nir_intrinsic_from_system_value(gl_system_value val) return nir_intrinsic_load_ray_launch_id; case SYSTEM_VALUE_RAY_LAUNCH_SIZE: return nir_intrinsic_load_ray_launch_size; + case SYSTEM_VALUE_RAY_LAUNCH_SIZE_ADDR_AMD: + return nir_intrinsic_load_ray_launch_size_addr_amd; case SYSTEM_VALUE_RAY_WORLD_ORIGIN: return nir_intrinsic_load_ray_world_origin; case SYSTEM_VALUE_RAY_WORLD_DIRECTION: @@ -2624,6 +2626,8 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin) return SYSTEM_VALUE_RAY_LAUNCH_ID; case nir_intrinsic_load_ray_launch_size: return SYSTEM_VALUE_RAY_LAUNCH_SIZE; + case nir_intrinsic_load_ray_launch_size_addr_amd: + return SYSTEM_VALUE_RAY_LAUNCH_SIZE_ADDR_AMD; case nir_intrinsic_load_ray_world_origin: return SYSTEM_VALUE_RAY_WORLD_ORIGIN; case nir_intrinsic_load_ray_world_direction: diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 7fba34fd229..7efbca39f46 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -106,6 +106,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) case nir_intrinsic_load_subgroup_id: case nir_intrinsic_load_num_subgroups: case nir_intrinsic_load_ray_launch_size: + case nir_intrinsic_load_ray_launch_size_addr_amd: case nir_intrinsic_load_subgroup_size: case nir_intrinsic_load_subgroup_eq_mask: case nir_intrinsic_load_subgroup_ge_mask: diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 7f16abda517..f0e0262e58f 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -667,6 +667,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader, case nir_intrinsic_load_barycentric_model: case nir_intrinsic_load_ray_launch_id: case nir_intrinsic_load_ray_launch_size: + case nir_intrinsic_load_ray_launch_size_addr_amd: case nir_intrinsic_load_ray_world_origin: case nir_intrinsic_load_ray_world_direction: case nir_intrinsic_load_ray_object_origin: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index e0c3938d489..2b8a6c6ab6e 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1355,6 +1355,9 @@ system_value("rt_arg_scratch_offset_amd", 1) # Whether to call the anyhit shader for an intersection in an intersection shader. system_value("intersection_opaque_amd", 1, bit_sizes=[1]) +# Used for indirect ray tracing. +system_value("ray_launch_size_addr_amd", 1, bit_sizes=[64]) + # Load forced VRS rates. intrinsic("load_force_vrs_rates_amd", dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE, CAN_REORDER]) diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index fcd5fd5e956..58d10adb664 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -318,6 +318,7 @@ gl_system_value_name(gl_system_value sysval) ENUM(SYSTEM_VALUE_BARYCENTRIC_PULL_MODEL), ENUM(SYSTEM_VALUE_RAY_LAUNCH_ID), ENUM(SYSTEM_VALUE_RAY_LAUNCH_SIZE), + ENUM(SYSTEM_VALUE_RAY_LAUNCH_SIZE_ADDR_AMD), ENUM(SYSTEM_VALUE_RAY_WORLD_ORIGIN), ENUM(SYSTEM_VALUE_RAY_WORLD_DIRECTION), ENUM(SYSTEM_VALUE_RAY_OBJECT_ORIGIN), diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index e07761bf9f9..790dce018a9 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -808,6 +808,7 @@ typedef enum /*@{*/ SYSTEM_VALUE_RAY_LAUNCH_ID, SYSTEM_VALUE_RAY_LAUNCH_SIZE, + SYSTEM_VALUE_RAY_LAUNCH_SIZE_ADDR_AMD, SYSTEM_VALUE_RAY_WORLD_ORIGIN, SYSTEM_VALUE_RAY_WORLD_DIRECTION, SYSTEM_VALUE_RAY_OBJECT_ORIGIN,