Skip to content

Commit ef7a1aa

Browse files
JaroszPiotrigcbot
authored andcommitted
Add getPrimitiveIndexDelta
Add getPrimitiveIndexDelta and minor refactor.
1 parent 7456319 commit ef7a1aa

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

IGC/AdaptorCommon/RayTracing/AutoGenRTStackAccessPrivateOS.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,16 @@ auto* _getGeometryIndex_Xe(Value* arg_0, Value* arg_1, Value* arg_2, const Twine
14791479
return V_18;
14801480
}
14811481

1482+
auto* _getPrimitiveIndexDelta_Xe(Value* arg_0, Value* arg_1, const Twine& _ReturnName = "")
1483+
{
1484+
auto* V_2 = CreateInBoundsGEP(_struct_RTStackFormat__RTStack(*Ctx.getModule()), arg_0, { getInt64(0), getInt32(0), getInt32(3) });
1485+
auto* V_3 = CreateInBoundsGEP(_struct_RTStackFormat__RTStack(*Ctx.getModule()), arg_0, { getInt64(0), getInt32(1), getInt32(3) });
1486+
auto* V_4 = CreateSelect(arg_1, V_2, V_3);
1487+
auto* V_5 = CreateLoad(getInt32Ty(), V_4);
1488+
auto* V_6 = CreateAnd(V_5, getInt32(65535), _ReturnName);
1489+
return V_6;
1490+
}
1491+
14821492
void _createPotentialHit2CommittedHit_Xe(Value* arg_0)
14831493
{
14841494
auto* V_1 = CreateInBoundsGEP(_struct_RTStackFormat__RTStack(*Ctx.getModule()), arg_0, { getInt64(0), getInt32(1), getInt32(0) });

IGC/AdaptorCommon/RayTracing/RTBuilder.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ using namespace llvm;
4141
using namespace RTStackFormat;
4242
using namespace IGC;
4343

44+
4445
namespace {
4546
class VAdapt
4647
{
@@ -871,11 +872,11 @@ Value* RTBuilder::getPrimitiveIndex(
871872
}
872873
}
873874

874-
PHINode* RTBuilder::getPrimitiveIndex(
875+
Value* RTBuilder::getPrimitiveIndex(
875876
RTBuilder::StackPointerVal* perLaneStackPtr, Value* leafType, bool Committed)
876877
{
877-
switch (getMemoryStyle())
878-
{
878+
switch (getMemoryStyle())
879+
{
879880
#define STYLE(X) \
880881
case RTMemoryStyle::X: \
881882
return _getPrimitiveIndex_##X( \
@@ -885,11 +886,12 @@ PHINode* RTBuilder::getPrimitiveIndex(
885886
VALUE_NAME("primitiveIndex"));
886887
#include "RayTracingMemoryStyle.h"
887888
#undef STYLE
888-
}
889-
IGC_ASSERT(0);
890-
return {};
889+
}
890+
IGC_ASSERT(0);
891+
return nullptr;
891892
}
892893

894+
893895
Value* RTBuilder::getGeometryIndex(
894896
RTBuilder::StackPointerVal* perLaneStackPtr,
895897
Instruction* I,
@@ -904,37 +906,36 @@ Value* RTBuilder::getGeometryIndex(
904906
auto [ValidBB, PN] =
905907
validateInstanceLeafPtr(perLaneStackPtr, I, (ShaderTy == CallableShaderTypeMD::ClosestHit));
906908
this->SetInsertPoint(ValidBB->getTerminator());
907-
Value* validGeomIndex = getGeometryIndex(perLaneStackPtr, &*BB->rbegin(), leafType, ShaderTy);
909+
Value* validGeomIndex = getGeometryIndex(perLaneStackPtr, leafType, ShaderTy == CallableShaderTypeMD::ClosestHit);
908910
PN->addIncoming(validGeomIndex, getUnsetPhiBlock(PN));
909911
this->SetInsertPoint(I);
910912
return PN;
911913
}
912914
else
913915
{
914-
return getGeometryIndex(perLaneStackPtr, I, leafType, ShaderTy);
916+
return getGeometryIndex(perLaneStackPtr, leafType, ShaderTy == CallableShaderTypeMD::ClosestHit);
915917
}
916918
}
917919

918920
Value* RTBuilder::getGeometryIndex(
919921
RTBuilder::StackPointerVal* perLaneStackPtr,
920-
Instruction* I,
921922
Value* leafType,
922-
IGC::CallableShaderTypeMD ShaderTy)
923+
bool committed)
923924
{
924-
switch (getMemoryStyle())
925-
{
925+
switch (getMemoryStyle())
926+
{
926927
#define STYLE(X) \
927928
case RTMemoryStyle::X: \
928929
return _getGeometryIndex_##X( \
929930
perLaneStackPtr, \
930931
leafType, \
931-
VAdapt{ *this, ShaderTy == ClosestHit }, \
932+
VAdapt{ *this, committed }, \
932933
VALUE_NAME("geometryIndex"));
933934
#include "RayTracingMemoryStyle.h"
934935
#undef STYLE
935-
}
936-
IGC_ASSERT(0);
937-
return {};
936+
}
937+
IGC_ASSERT(0);
938+
return nullptr;
938939
}
939940

940941
Value* RTBuilder::getInstanceContributionToHitGroupIndex(

IGC/AdaptorCommon/RayTracing/RTBuilder.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class RTBuilder : public IGCIRBuilder<>
5757
//TODO: this is hardcoded string, we might want to put all "printf" of different adaptors to one place eventually
5858
static constexpr char *PrintfFuncName = "printf";
5959

60+
6061
bool isChildOfXe2 = false;
6162

6263
// Field for explicit GlobalBufferPtr - used on OpenCL path.
@@ -400,8 +401,8 @@ class RTBuilder : public IGCIRBuilder<>
400401
Value* getRTStackSize(uint32_t Align);
401402
SyncStackPointerVal* getSyncStackPointer(Value* syncStackOffset, RTBuilder::RTMemoryAccessMode Mode);
402403
Value* getGeometryIndex(
403-
StackPointerVal* perLaneStackPtr, Instruction* I, Value* leafType, IGC::CallableShaderTypeMD ShaderTy);
404-
PHINode* getPrimitiveIndex(
404+
StackPointerVal* perLaneStackPtr, Value* leafType, bool committed);
405+
Value* getPrimitiveIndex(
405406
StackPointerVal* perLaneStackPtr, Value* leafType, bool Committed);
406407
Value* getInstanceIndex(
407408
StackPointerVal* perLaneStackPtr, IGC::CallableShaderTypeMD ShaderTy);

0 commit comments

Comments
 (0)