radv: Replace magic constants with enum values
Signed-off-by: Konstantin Seurer <konstantin.seurer@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15722>
This commit is contained in:

committed by
Marge Bot

parent
c8fe408fcc
commit
c4650cbdb0
@@ -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_ssa_def *terminate_on_first_hit =
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, rq_load_var(b, index, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_push_if(b, terminate_on_first_hit);
|
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 *frontface = nir_flt(b, nir_imm_float(b, 0), div);
|
||||||
nir_ssa_def *switch_ccw = nir_ine(
|
nir_ssa_def *switch_ccw = nir_ine(
|
||||||
b,
|
b,
|
||||||
nir_iand(
|
nir_iand(b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags),
|
||||||
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, 2 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT */)),
|
|
||||||
nir_imm_int(b, 0));
|
nir_imm_int(b, 0));
|
||||||
frontface = nir_ixor(b, frontface, switch_ccw);
|
frontface = nir_ixor(b, frontface, switch_ccw);
|
||||||
rq_store_var(b, index, vars->candidate.frontface, frontface, 0x1);
|
rq_store_var(b, index, vars->candidate.frontface, frontface, 0x1);
|
||||||
|
|
||||||
nir_ssa_def *not_cull = nir_ieq(b,
|
nir_ssa_def *not_cull = nir_ieq(b,
|
||||||
nir_iand(b, rq_load_var(b, index, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *not_facing_cull = nir_ieq(
|
nir_ssa_def *not_facing_cull = nir_ieq(
|
||||||
b,
|
b,
|
||||||
nir_iand(b, rq_load_var(b, index, vars->flags),
|
nir_iand(b, rq_load_var(b, index, vars->flags),
|
||||||
nir_bcsel(b, frontface, nir_imm_int(b, 32 /* RayFlagsCullFrontFacingTriangles */),
|
nir_bcsel(b, frontface, nir_imm_int(b, SpvRayFlagsCullFrontFacingTrianglesKHRMask),
|
||||||
nir_imm_int(b, 16 /* RayFlagsCullBackFacingTriangles */))),
|
nir_imm_int(b, SpvRayFlagsCullBackFacingTrianglesKHRMask))),
|
||||||
nir_imm_int(b, 0));
|
nir_imm_int(b, 0));
|
||||||
|
|
||||||
not_cull = nir_iand(
|
not_cull = nir_iand(
|
||||||
b, not_cull,
|
b, not_cull,
|
||||||
nir_ior(
|
nir_ior(
|
||||||
b, not_facing_cull,
|
b, not_facing_cull,
|
||||||
nir_ine(
|
nir_ine(b,
|
||||||
b,
|
nir_iand(b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags),
|
||||||
nir_iand(
|
nir_imm_int(
|
||||||
b, rq_load_var(b, index, vars->candidate.sbt_offset_and_flags),
|
b, VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR << 24)),
|
||||||
nir_imm_int(b, 1 << 24 /* VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT */)),
|
nir_imm_int(b, 0))));
|
||||||
nir_imm_int(b, 0))));
|
|
||||||
|
|
||||||
nir_push_if(b, nir_iand(b,
|
nir_push_if(b, nir_iand(b,
|
||||||
nir_iand(b, nir_flt(b, dist, rq_load_var(b, index, vars->closest.t)),
|
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 =
|
not_cull =
|
||||||
nir_ieq(b,
|
nir_ieq(b,
|
||||||
nir_iand(b, rq_load_var(b, index, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_push_if(b, not_cull);
|
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(
|
nir_ssa_def *not_skip_aabb = nir_ieq(
|
||||||
b,
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *not_cull = nir_iand(
|
nir_ssa_def *not_cull = nir_iand(
|
||||||
b, not_skip_aabb,
|
b, not_skip_aabb,
|
||||||
nir_ieq(b,
|
nir_ieq(b,
|
||||||
nir_iand(b, rq_load_var(b, index, vars->flags),
|
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_imm_int(b, 0)));
|
||||||
nir_push_if(b, not_cull);
|
nir_push_if(b, not_cull);
|
||||||
{
|
{
|
||||||
|
@@ -1129,18 +1129,18 @@ insert_traversal_triangle_case(struct radv_device *device,
|
|||||||
b,
|
b,
|
||||||
nir_iand(
|
nir_iand(
|
||||||
b, nir_load_var(b, trav_vars->sbt_offset_and_flags),
|
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));
|
nir_imm_int(b, 0));
|
||||||
frontface = nir_ixor(b, frontface, switch_ccw);
|
frontface = nir_ixor(b, frontface, switch_ccw);
|
||||||
|
|
||||||
nir_ssa_def *not_cull = nir_ieq(
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *not_facing_cull = nir_ieq(
|
nir_ssa_def *not_facing_cull = nir_ieq(
|
||||||
b,
|
b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
nir_iand(b, nir_load_var(b, vars->flags),
|
||||||
nir_bcsel(b, frontface, nir_imm_int(b, 32 /* RayFlagsCullFrontFacingTriangles */),
|
nir_bcsel(b, frontface, nir_imm_int(b, SpvRayFlagsCullFrontFacingTrianglesKHRMask),
|
||||||
nir_imm_int(b, 16 /* RayFlagsCullBackFacingTriangles */))),
|
nir_imm_int(b, SpvRayFlagsCullBackFacingTrianglesKHRMask))),
|
||||||
nir_imm_int(b, 0));
|
nir_imm_int(b, 0));
|
||||||
|
|
||||||
not_cull = nir_iand(
|
not_cull = nir_iand(
|
||||||
@@ -1151,7 +1151,7 @@ insert_traversal_triangle_case(struct radv_device *device,
|
|||||||
b,
|
b,
|
||||||
nir_iand(
|
nir_iand(
|
||||||
b, nir_load_var(b, trav_vars->sbt_offset_and_flags),
|
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_imm_int(b, 0))));
|
||||||
|
|
||||||
nir_push_if(b, nir_iand(b,
|
nir_push_if(b, nir_iand(b,
|
||||||
@@ -1173,7 +1173,8 @@ insert_traversal_triangle_case(struct radv_device *device,
|
|||||||
not_cull =
|
not_cull =
|
||||||
nir_ieq(b,
|
nir_ieq(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_push_if(b, not_cull);
|
nir_push_if(b, not_cull);
|
||||||
{
|
{
|
||||||
@@ -1236,7 +1237,7 @@ insert_traversal_triangle_case(struct radv_device *device,
|
|||||||
nir_ior(b,
|
nir_ior(b,
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0)),
|
||||||
nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))),
|
nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))),
|
||||||
1);
|
1);
|
||||||
@@ -1244,7 +1245,7 @@ insert_traversal_triangle_case(struct radv_device *device,
|
|||||||
nir_ssa_def *terminate_on_first_hit =
|
nir_ssa_def *terminate_on_first_hit =
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *ray_terminated =
|
nir_ssa_def *ray_terminated =
|
||||||
nir_ieq(b, nir_load_var(b, vars->ahit_status), nir_imm_int(b, 2));
|
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_ssa_def *not_cull =
|
||||||
nir_iand(b, not_skip_aabb, nir_ieq(b,
|
nir_iand(b, not_skip_aabb, nir_ieq(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0)));
|
||||||
nir_push_if(b, not_cull);
|
nir_push_if(b, not_cull);
|
||||||
{
|
{
|
||||||
@@ -1397,7 +1399,7 @@ insert_traversal_aabb_case(struct radv_device *device,
|
|||||||
nir_ior(b,
|
nir_ior(b,
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0)),
|
||||||
nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))),
|
nir_ieq(b, nir_load_var(b, vars->idx), nir_imm_int(b, 0))),
|
||||||
1);
|
1);
|
||||||
@@ -1405,7 +1407,7 @@ insert_traversal_aabb_case(struct radv_device *device,
|
|||||||
nir_ssa_def *terminate_on_first_hit =
|
nir_ssa_def *terminate_on_first_hit =
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, nir_load_var(b, vars->flags),
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *ray_terminated =
|
nir_ssa_def *ray_terminated =
|
||||||
nir_ieq(b, nir_load_var(b, vars->ahit_status), nir_imm_int(b, 2));
|
nir_ieq(b, nir_load_var(b, vars->ahit_status), nir_imm_int(b, 2));
|
||||||
|
@@ -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 *geometry_id_and_flags)
|
||||||
{
|
{
|
||||||
nir_ssa_def *geom_force_opaque = nir_ine(
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *instance_force_opaque =
|
nir_ssa_def *instance_force_opaque =
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, sbt_offset_and_flags,
|
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_imm_int(b, 0));
|
||||||
nir_ssa_def *instance_force_non_opaque =
|
nir_ssa_def *instance_force_non_opaque =
|
||||||
nir_ine(b,
|
nir_ine(b,
|
||||||
nir_iand(b, sbt_offset_and_flags,
|
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_imm_int(b, 0));
|
||||||
|
|
||||||
nir_ssa_def *opaque = geom_force_opaque;
|
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);
|
opaque = nir_bcsel(b, instance_force_non_opaque, nir_imm_bool(b, false), opaque);
|
||||||
|
|
||||||
nir_ssa_def *ray_force_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_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_opaque, nir_imm_bool(b, true), opaque);
|
||||||
opaque = nir_bcsel(b, ray_force_non_opaque, nir_imm_bool(b, false), opaque);
|
opaque = nir_bcsel(b, ray_force_non_opaque, nir_imm_bool(b, false), opaque);
|
||||||
|
@@ -28,6 +28,8 @@
|
|||||||
#include "nir/nir_builder.h"
|
#include "nir/nir_builder.h"
|
||||||
#include "nir/nir_vulkan.h"
|
#include "nir/nir_vulkan.h"
|
||||||
|
|
||||||
|
#include "compiler/spirv/spirv.h"
|
||||||
|
|
||||||
#include "radv_private.h"
|
#include "radv_private.h"
|
||||||
|
|
||||||
void nir_sort_hit_pair(nir_builder *b, nir_variable *var_distances, nir_variable *var_indices,
|
void nir_sort_hit_pair(nir_builder *b, nir_variable *var_distances, nir_variable *var_indices,
|
||||||
|
Reference in New Issue
Block a user