diff --git a/src/amd/vulkan/radv_nir_lower_ray_queries.c b/src/amd/vulkan/radv_nir_lower_ray_queries.c index 894abcc25ca..6284cb61492 100644 --- a/src/amd/vulkan/radv_nir_lower_ray_queries.c +++ b/src/amd/vulkan/radv_nir_lower_ray_queries.c @@ -302,7 +302,7 @@ insert_terminate_on_first_hit(nir_builder *b, nir_ssa_def *index, struct ray_que nir_ssa_def *terminate_on_first_hit = nir_ine(b, nir_iand(b, rq_load_var(b, index, vars->flags), - nir_imm_int(b, 4 /* TerminateOnFirstHitKHR */)), + nir_imm_int(b, SpvRayFlagsTerminateOnFirstHitKHRMask)), nir_imm_int(b, 0)); nir_push_if(b, terminate_on_first_hit); { @@ -519,34 +519,32 @@ insert_traversal_triangle_case(struct radv_device *device, nir_builder *b, nir_s nir_ssa_def *frontface = nir_flt(b, nir_imm_float(b, 0), div); nir_ssa_def *switch_ccw = nir_ine( b, - nir_iand( - b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags), - nir_imm_int(b, 2 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT */)), + nir_iand(b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags), + nir_imm_int(b, VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR << 24)), nir_imm_int(b, 0)); frontface = nir_ixor(b, frontface, switch_ccw); rq_store_var(b, index, vars->candidate.frontface, frontface, 0x1); nir_ssa_def *not_cull = nir_ieq(b, nir_iand(b, rq_load_var(b, index, vars->flags), - nir_imm_int(b, 256 /* RayFlagsSkipTriangles */)), + nir_imm_int(b, SpvRayFlagsSkipTrianglesKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *not_facing_cull = nir_ieq( b, nir_iand(b, rq_load_var(b, index, vars->flags), - nir_bcsel(b, frontface, nir_imm_int(b, 32 /* RayFlagsCullFrontFacingTriangles */), - nir_imm_int(b, 16 /* RayFlagsCullBackFacingTriangles */))), + nir_bcsel(b, frontface, nir_imm_int(b, SpvRayFlagsCullFrontFacingTrianglesKHRMask), + nir_imm_int(b, SpvRayFlagsCullBackFacingTrianglesKHRMask))), nir_imm_int(b, 0)); not_cull = nir_iand( b, not_cull, nir_ior( b, not_facing_cull, - nir_ine( - b, - nir_iand( - b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags), - nir_imm_int(b, 1 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT */)), - nir_imm_int(b, 0)))); + nir_ine(b, + nir_iand(b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags), + nir_imm_int( + b, VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR << 24)), + nir_imm_int(b, 0)))); nir_push_if(b, nir_iand(b, nir_iand(b, nir_flt(b, dist, rq_load_var(b, index, vars->closest.t)), @@ -567,7 +565,8 @@ insert_traversal_triangle_case(struct radv_device *device, nir_builder *b, nir_s not_cull = nir_ieq(b, nir_iand(b, rq_load_var(b, index, vars->flags), - nir_bcsel(b, is_opaque, nir_imm_int(b, 0x40), nir_imm_int(b, 0x80))), + nir_bcsel(b, is_opaque, nir_imm_int(b, SpvRayFlagsCullOpaqueKHRMask), + nir_imm_int(b, SpvRayFlagsCullNoOpaqueKHRMask))), nir_imm_int(b, 0)); nir_push_if(b, not_cull); { @@ -613,13 +612,14 @@ insert_traversal_aabb_case(struct radv_device *device, nir_builder *b, nir_ssa_d nir_ssa_def *not_skip_aabb = nir_ieq( b, - nir_iand(b, rq_load_var(b, index, vars->flags), nir_imm_int(b, 512 /* RayFlagsSkipAABB */)), + nir_iand(b, rq_load_var(b, index, vars->flags), nir_imm_int(b, SpvRayFlagsSkipAABBsKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *not_cull = nir_iand( b, not_skip_aabb, nir_ieq(b, nir_iand(b, rq_load_var(b, index, vars->flags), - nir_bcsel(b, is_opaque, nir_imm_int(b, 0x40), nir_imm_int(b, 0x80))), + nir_bcsel(b, is_opaque, nir_imm_int(b, SpvRayFlagsCullOpaqueKHRMask), + nir_imm_int(b, SpvRayFlagsCullNoOpaqueKHRMask))), nir_imm_int(b, 0))); nir_push_if(b, not_cull); { diff --git a/src/amd/vulkan/radv_pipeline_rt.c b/src/amd/vulkan/radv_pipeline_rt.c index 439839d467a..57a369750c3 100644 --- a/src/amd/vulkan/radv_pipeline_rt.c +++ b/src/amd/vulkan/radv_pipeline_rt.c @@ -1129,18 +1129,18 @@ insert_traversal_triangle_case(struct radv_device *device, b, nir_iand( b, nir_load_var(b, trav_vars->sbt_offset_and_flags), - nir_imm_int(b, 2 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT */)), + nir_imm_int(b, VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR << 24)), nir_imm_int(b, 0)); frontface = nir_ixor(b, frontface, switch_ccw); nir_ssa_def *not_cull = nir_ieq( - b, nir_iand(b, nir_load_var(b, vars->flags), nir_imm_int(b, 256 /* RayFlagsSkipTriangles */)), + b, nir_iand(b, nir_load_var(b, vars->flags), nir_imm_int(b, SpvRayFlagsSkipTrianglesKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *not_facing_cull = nir_ieq( b, nir_iand(b, nir_load_var(b, vars->flags), - nir_bcsel(b, frontface, nir_imm_int(b, 32 /* RayFlagsCullFrontFacingTriangles */), - nir_imm_int(b, 16 /* RayFlagsCullBackFacingTriangles */))), + nir_bcsel(b, frontface, nir_imm_int(b, SpvRayFlagsCullFrontFacingTrianglesKHRMask), + nir_imm_int(b, SpvRayFlagsCullBackFacingTrianglesKHRMask))), nir_imm_int(b, 0)); not_cull = nir_iand( @@ -1151,7 +1151,7 @@ insert_traversal_triangle_case(struct radv_device *device, b, nir_iand( b, nir_load_var(b, trav_vars->sbt_offset_and_flags), - nir_imm_int(b, 1 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT */)), + nir_imm_int(b, VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR << 24)), nir_imm_int(b, 0)))); nir_push_if(b, nir_iand(b, @@ -1173,7 +1173,8 @@ insert_traversal_triangle_case(struct radv_device *device, not_cull = nir_ieq(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_bcsel(b, is_opaque, nir_imm_int(b, 0x40), nir_imm_int(b, 0x80))), + nir_bcsel(b, is_opaque, nir_imm_int(b, SpvRayFlagsCullOpaqueKHRMask), + nir_imm_int(b, SpvRayFlagsCullNoOpaqueKHRMask))), nir_imm_int(b, 0)); nir_push_if(b, not_cull); { @@ -1236,7 +1237,7 @@ insert_traversal_triangle_case(struct radv_device *device, nir_ior(b, nir_ine(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_imm_int(b, 8 /* SkipClosestHitShader */)), + nir_imm_int(b, SpvRayFlagsSkipClosestHitShaderKHRMask)), nir_imm_int(b, 0)), nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))), 1); @@ -1244,7 +1245,7 @@ insert_traversal_triangle_case(struct radv_device *device, nir_ssa_def *terminate_on_first_hit = nir_ine(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_imm_int(b, 4 /* TerminateOnFirstHitKHR */)), + nir_imm_int(b, SpvRayFlagsTerminateOnFirstHitKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *ray_terminated = nir_ieq(b, nir_load_var(b, vars->ahit_status), nir_imm_int(b, 2)); @@ -1282,7 +1283,8 @@ insert_traversal_aabb_case(struct radv_device *device, nir_ssa_def *not_cull = nir_iand(b, not_skip_aabb, nir_ieq(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_bcsel(b, is_opaque, nir_imm_int(b, 0x40), nir_imm_int(b, 0x80))), + nir_bcsel(b, is_opaque, nir_imm_int(b, SpvRayFlagsCullOpaqueKHRMask), + nir_imm_int(b, SpvRayFlagsCullNoOpaqueKHRMask))), nir_imm_int(b, 0))); nir_push_if(b, not_cull); { @@ -1397,7 +1399,7 @@ insert_traversal_aabb_case(struct radv_device *device, nir_ior(b, nir_ine(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_imm_int(b, 8 /* SkipClosestHitShader */)), + nir_imm_int(b, SpvRayFlagsSkipClosestHitShaderKHRMask)), nir_imm_int(b, 0)), nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))), 1); @@ -1405,7 +1407,7 @@ insert_traversal_aabb_case(struct radv_device *device, nir_ssa_def *terminate_on_first_hit = nir_ine(b, nir_iand(b, nir_load_var(b, vars->flags), - nir_imm_int(b, 4 /* TerminateOnFirstHitKHR */)), + nir_imm_int(b, SpvRayFlagsTerminateOnFirstHitKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *ray_terminated = nir_ieq(b, nir_load_var(b, vars->ahit_status), nir_imm_int(b, 2)); diff --git a/src/amd/vulkan/radv_rt_common.c b/src/amd/vulkan/radv_rt_common.c index d6712af64b0..358581b0c70 100644 --- a/src/amd/vulkan/radv_rt_common.c +++ b/src/amd/vulkan/radv_rt_common.c @@ -386,17 +386,17 @@ hit_is_opaque(nir_builder *b, nir_ssa_def *sbt_offset_and_flags, nir_ssa_def *fl nir_ssa_def *geometry_id_and_flags) { nir_ssa_def *geom_force_opaque = nir_ine( - b, nir_iand(b, geometry_id_and_flags, nir_imm_int(b, 1u << 28 /* VK_GEOMETRY_OPAQUE_BIT */)), + b, nir_iand(b, geometry_id_and_flags, nir_imm_int(b, VK_GEOMETRY_OPAQUE_BIT_KHR << 28)), nir_imm_int(b, 0)); nir_ssa_def *instance_force_opaque = nir_ine(b, nir_iand(b, sbt_offset_and_flags, - nir_imm_int(b, 4 << 24 /* VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT */)), + nir_imm_int(b, VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR << 24)), nir_imm_int(b, 0)); nir_ssa_def *instance_force_non_opaque = nir_ine(b, nir_iand(b, sbt_offset_and_flags, - nir_imm_int(b, 8 << 24 /* VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT */)), + nir_imm_int(b, VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR << 24)), nir_imm_int(b, 0)); nir_ssa_def *opaque = geom_force_opaque; @@ -404,9 +404,9 @@ hit_is_opaque(nir_builder *b, nir_ssa_def *sbt_offset_and_flags, nir_ssa_def *fl opaque = nir_bcsel(b, instance_force_non_opaque, nir_imm_bool(b, false), opaque); nir_ssa_def *ray_force_opaque = - nir_ine(b, nir_iand(b, flags, nir_imm_int(b, 1 /* RayFlagsOpaque */)), nir_imm_int(b, 0)); + nir_ine(b, nir_iand(b, flags, nir_imm_int(b, SpvRayFlagsOpaqueKHRMask)), nir_imm_int(b, 0)); nir_ssa_def *ray_force_non_opaque = - nir_ine(b, nir_iand(b, flags, nir_imm_int(b, 2 /* RayFlagsNoOpaque */)), nir_imm_int(b, 0)); + nir_ine(b, nir_iand(b, flags, nir_imm_int(b, SpvRayFlagsNoOpaqueKHRMask)), nir_imm_int(b, 0)); opaque = nir_bcsel(b, ray_force_opaque, nir_imm_bool(b, true), opaque); opaque = nir_bcsel(b, ray_force_non_opaque, nir_imm_bool(b, false), opaque); diff --git a/src/amd/vulkan/radv_rt_common.h b/src/amd/vulkan/radv_rt_common.h index 1df1aab714c..90780459ab7 100644 --- a/src/amd/vulkan/radv_rt_common.h +++ b/src/amd/vulkan/radv_rt_common.h @@ -28,6 +28,8 @@ #include "nir/nir_builder.h" #include "nir/nir_vulkan.h" +#include "compiler/spirv/spirv.h" + #include "radv_private.h" void nir_sort_hit_pair(nir_builder *b, nir_variable *var_distances, nir_variable *var_indices,