@@ -653,6 +653,7 @@ void TraceRayInlineLoweringPass::LowerRayInfo(Function& F)
653
653
builder.SetInsertPoint (I);
654
654
655
655
unsigned int infoKind = I->getInfoKind ();
656
+ auto shaderTy = I->isCommitted () ? CallableShaderTypeMD::ClosestHit : CallableShaderTypeMD::AnyHit;
656
657
auto * const ShadowMemStackPointer = getShMemRayQueryRTStack (builder, I->getQueryObjIndex ());
657
658
658
659
switch (infoKind)
@@ -684,25 +685,14 @@ void TraceRayInlineLoweringPass::LowerRayInfo(Function& F)
684
685
}
685
686
case RAY_T_CURRENT:
686
687
{
687
- Value* rayT = builder.getRayTCurrent (ShadowMemStackPointer, CallableShaderTypeMD::ClosestHit );
688
+ Value* rayT = builder.getRayTCurrent (ShadowMemStackPointer, shaderTy );
688
689
I->replaceAllUsesWith (rayT);
689
690
break ;
690
691
}
691
- case CANDIDATE_TRIANGLE_T_CURRENT:
692
- {
693
- Value* rayT = builder.getRayTCurrent (ShadowMemStackPointer, CallableShaderTypeMD::AnyHit);
694
- I->replaceAllUsesWith (rayT);
695
- break ;
696
- }
697
- case COMMITTED_TRIANGLE_FRONT_FACE:
698
- case CANDIDATE_TRIANGLE_FRONT_FACE:
692
+ case TRIANGLE_FRONT_FACE:
699
693
case CANDIDATE_PROCEDURAL_PRIM_NON_OPAQUE: // Procedural Primitive Opaque Info is stored in Front Face bit
700
694
{
701
- IGC::CallableShaderTypeMD ShaderTy =
702
- infoKind == COMMITTED_TRIANGLE_FRONT_FACE ?
703
- CallableShaderTypeMD::ClosestHit :
704
- CallableShaderTypeMD::AnyHit;
705
- Value* frontFaceBit = builder.getIsFrontFace (ShadowMemStackPointer, ShaderTy);
695
+ Value* frontFaceBit = builder.getIsFrontFace (ShadowMemStackPointer, shaderTy);
706
696
if (infoKind == CANDIDATE_PROCEDURAL_PRIM_NON_OPAQUE)
707
697
{
708
698
frontFaceBit = builder.CreateICmpEQ (
@@ -711,132 +701,73 @@ void TraceRayInlineLoweringPass::LowerRayInfo(Function& F)
711
701
I->replaceAllUsesWith (frontFaceBit);
712
702
break ;
713
703
}
714
- case COMMITTED_GEOMETRY_INDEX:
715
- case CANDIDATE_GEOMETRY_INDEX:
704
+ case GEOMETRY_INDEX:
716
705
{
717
706
bool specialPattern = false ;
718
- if (infoKind == COMMITTED_GEOMETRY_INDEX && IGC_GET_FLAG_VALUE (ForceRTShortCircuitingOR))
707
+ if (I-> isCommitted () && IGC_GET_FLAG_VALUE (ForceRTShortCircuitingOR))
719
708
{
720
709
specialPattern = forceShortCurcuitingOR_CommittedGeomIdx (builder, I);
721
710
}
722
711
723
- IGC::CallableShaderTypeMD ShaderTy =
724
- infoKind == COMMITTED_GEOMETRY_INDEX ?
725
- CallableShaderTypeMD::ClosestHit :
726
- CallableShaderTypeMD::AnyHit;
727
- Value* leafType = builder.getLeafType (ShadowMemStackPointer, ShaderTy == CallableShaderTypeMD::ClosestHit);
728
- Value* geoIndex = builder.getGeometryIndex (ShadowMemStackPointer, I, leafType, ShaderTy, !specialPattern);
712
+ Value* leafType = builder.getLeafType (ShadowMemStackPointer, I->isCommitted ());
713
+ Value* geoIndex = builder.getGeometryIndex (ShadowMemStackPointer, I, leafType, shaderTy, !specialPattern);
729
714
IGC_ASSERT_MESSAGE (I->getType ()->isIntegerTy (), " Invalid geometryIndex type!" );
730
715
I->replaceAllUsesWith (geoIndex);
731
716
break ;
732
717
}
733
- case COMMITTED_INSTANCE_INDEX:
734
- case CANDIDATE_INSTANCE_INDEX:
735
- case COMMITTED_INSTANCE_ID:
736
- case CANDIDATE_INSTANCE_ID:
737
- {
738
- IGC::CallableShaderTypeMD ShaderTy =
739
- (infoKind == COMMITTED_INSTANCE_INDEX || infoKind == COMMITTED_INSTANCE_ID) ?
740
- CallableShaderTypeMD::ClosestHit :
741
- CallableShaderTypeMD::AnyHit;
742
- DISPATCH_SHADER_RAY_INFO_TYPE infoType =
743
- (infoKind == COMMITTED_INSTANCE_ID || infoKind == CANDIDATE_INSTANCE_ID) ?
744
- INSTANCE_ID :
745
- INSTANCE_INDEX;
746
- Value* inst = (infoType == INSTANCE_ID) ?
747
- builder.getInstanceID (ShadowMemStackPointer, ShaderTy, I, true ) :
748
- builder.getInstanceIndex (ShadowMemStackPointer, ShaderTy, I, true );
749
- I->replaceAllUsesWith (inst);
718
+ case INSTANCE_INDEX:
719
+ I->replaceAllUsesWith (builder.getInstanceIndex (ShadowMemStackPointer, shaderTy, I, true ));
750
720
break ;
751
- }
752
- case COMMITTED_PRIMITIVE_INDEX:
753
- case CANDIDATE_PRIMITIVE_INDEX:
721
+ case INSTANCE_ID:
722
+ I->replaceAllUsesWith (builder.getInstanceID (ShadowMemStackPointer, shaderTy, I, true ));
723
+ break ;
724
+ case PRIMITIVE_INDEX:
754
725
{
755
- IGC::CallableShaderTypeMD ShaderTy =
756
- infoKind == COMMITTED_PRIMITIVE_INDEX ?
757
- CallableShaderTypeMD::ClosestHit :
758
- CallableShaderTypeMD::AnyHit;
759
- Value* leafType = builder.getLeafType (ShadowMemStackPointer, ShaderTy == CallableShaderTypeMD::ClosestHit);
760
- Value* primIndex = builder.getPrimitiveIndex (ShadowMemStackPointer, I, leafType, ShaderTy, true );
726
+ Value* leafType = builder.getLeafType (ShadowMemStackPointer, I->isCommitted ());
727
+ Value* primIndex = builder.getPrimitiveIndex (ShadowMemStackPointer, I, leafType, shaderTy, true );
761
728
IGC_ASSERT_MESSAGE (I->getType ()->isIntegerTy (), " Invalid primIndex type!" );
762
729
I->replaceAllUsesWith (primIndex);
763
730
764
731
break ;
765
732
}
766
- case COMMITTED_BARYCENTRICS:
767
- {
768
- uint32_t idx = (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue ();
769
- Value* bary = builder.getHitBaryCentric (ShadowMemStackPointer, idx, true );
770
- I->replaceAllUsesWith (bary);
771
- break ;
772
- }
773
- case CANDIDATE_BARYCENTRICS:
733
+ case BARYCENTRICS:
774
734
{
775
735
uint32_t idx = (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue ();
776
- Value* bary = builder.getHitBaryCentric (ShadowMemStackPointer, idx, false );
736
+ Value* bary = builder.getHitBaryCentric (ShadowMemStackPointer, idx, I-> isCommitted () );
777
737
I->replaceAllUsesWith (bary);
778
738
break ;
779
739
}
780
- case COMMITTED_OBJECT_TO_WORLD:
781
- case CANDIDATE_OBJECT_TO_WORLD:
740
+ case OBJECT_TO_WORLD:
782
741
{
783
- IGC::CallableShaderTypeMD ShaderTy =
784
- infoKind == COMMITTED_OBJECT_TO_WORLD ?
785
- CallableShaderTypeMD::ClosestHit :
786
- CallableShaderTypeMD::AnyHit;
787
742
uint32_t dim = (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue ();
788
- Value* matrixComp = builder.getObjToWorld (ShadowMemStackPointer, dim, ShaderTy , I, true );
743
+ Value* matrixComp = builder.getObjToWorld (ShadowMemStackPointer, dim, shaderTy , I, true );
789
744
I->replaceAllUsesWith (matrixComp);
790
745
break ;
791
746
}
792
- case COMMITTED_WORLD_TO_OBJECT:
793
- case CANDIDATE_WORLD_TO_OBJECT:
747
+ case WORLD_TO_OBJECT:
794
748
{
795
- IGC::CallableShaderTypeMD ShaderTy =
796
- infoKind == COMMITTED_WORLD_TO_OBJECT ?
797
- CallableShaderTypeMD::ClosestHit :
798
- CallableShaderTypeMD::AnyHit;
799
749
uint32_t dim = (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue ();
800
- Value* matrixComp = builder.getWorldToObj (ShadowMemStackPointer, dim, ShaderTy , I, true );
750
+ Value* matrixComp = builder.getWorldToObj (ShadowMemStackPointer, dim, shaderTy , I, true );
801
751
I->replaceAllUsesWith (matrixComp);
802
752
break ;
803
-
804
- break ;
805
753
}
806
- case COMMITTED_OBJECT_RAY_ORG :
754
+ case OBJ_RAY_ORG :
807
755
{
808
- Value* rayInfo = builder.getObjRayOrig (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), CallableShaderTypeMD::ClosestHit , I, true );
756
+ Value* rayInfo = builder.getObjRayOrig (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), shaderTy , I, true );
809
757
I->replaceAllUsesWith (rayInfo);
810
758
break ;
811
759
}
812
- case COMMITTED_OBJECT_RAY_DIR :
760
+ case OBJ_RAY_DIR :
813
761
{
814
- Value* rayInfo = builder.getObjRayDir (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), CallableShaderTypeMD::ClosestHit , I, true );
762
+ Value* rayInfo = builder.getObjRayDir (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), shaderTy , I, true );
815
763
I->replaceAllUsesWith (rayInfo);
816
764
break ;
817
765
}
818
- case CANDIDATE_OBJECT_RAY_ORG:
819
- {
820
- Value* valueAtDim = builder.getObjRayOrig (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), CallableShaderTypeMD::AnyHit, I, true );
821
- I->replaceAllUsesWith (valueAtDim);
822
- break ;
823
- }
824
- case CANDIDATE_OBJECT_RAY_DIR:
766
+ case INST_CONTRIBUTION_TO_HITGROUP_INDEX:
825
767
{
826
- Value* valueAtDim = builder.getObjRayDir (ShadowMemStackPointer, (uint32_t )cast<ConstantInt>(I->getDim ())->getZExtValue (), CallableShaderTypeMD::AnyHit, I, true );
827
- I->replaceAllUsesWith (valueAtDim);
828
- break ;
829
- }
830
- case COMMITTED_INST_CONTRIBUTION_TO_HITGROUP_INDEX:
831
- case CANDIDATE_INST_CONTRIBUTION_TO_HITGROUP_INDEX:
832
- {
833
- IGC::CallableShaderTypeMD ShaderTy =
834
- infoKind == COMMITTED_INST_CONTRIBUTION_TO_HITGROUP_INDEX ?
835
- CallableShaderTypeMD::ClosestHit :
836
- CallableShaderTypeMD::AnyHit;
837
- Value* info = builder.getInstanceContributionToHitGroupIndex (
838
- ShadowMemStackPointer, ShaderTy);
839
- I->replaceAllUsesWith (info);
768
+ I->replaceAllUsesWith (
769
+ builder.getInstanceContributionToHitGroupIndex (ShadowMemStackPointer, shaderTy)
770
+ );
840
771
break ;
841
772
}
842
773
default :
0 commit comments