Skip to content

Commit 94f9275

Browse files
authored
[SER] HitObject accessors DXIL opcodes and check-pass tests (#7276)
Add the DXIL operations and a passing validation test for: - HitObject_IsMiss, HitObject_IsHit, HitObject_IsNop - HitObject_RayFlags, HitObject_RayTMin, HitObject_RayTCurrent - HitObject_GeometryIndex, HitObject_InstanceIndex, HitObject_InstanceID - HitObject_PrimitiveIndex, HitObject_HitKind, HitObject_ShaderTableIndex - HitObject_WorldRayOrigin, HitObject_WorldRayDirection, - HitObject_ObjectRayOrigin, HitObject_ObjectRayDirection - HitObject_ObjectToWorld3x4, HitObject_WorldToObject3x4 - HitObject_SetShaderTableIndex, HitObject_LoadLocalRootTableConstant - HitObject_Attributes Closes #7310 DXC SER implementation tracker: #7214
1 parent 0168df1 commit 94f9275

File tree

5 files changed

+1446
-249
lines changed

5 files changed

+1446
-249
lines changed

include/dxc/DXIL/DxilConstants.h

+36-22
Original file line numberDiff line numberDiff line change
@@ -503,32 +503,11 @@ enum class OpCode : unsigned {
503503
ReservedA1 = 260, // reserved
504504
ReservedA2 = 261, // reserved
505505
ReservedB0 = 262, // reserved
506-
ReservedB10 = 272, // reserved
507-
ReservedB11 = 273, // reserved
508-
ReservedB12 = 274, // reserved
509-
ReservedB13 = 275, // reserved
510-
ReservedB14 = 276, // reserved
511-
ReservedB15 = 277, // reserved
512-
ReservedB16 = 278, // reserved
513-
ReservedB17 = 279, // reserved
514-
ReservedB18 = 280, // reserved
515-
ReservedB19 = 281, // reserved
516-
ReservedB20 = 282, // reserved
517-
ReservedB21 = 283, // reserved
518-
ReservedB22 = 284, // reserved
519-
ReservedB23 = 285, // reserved
520-
ReservedB24 = 286, // reserved
521-
ReservedB25 = 287, // reserved
522-
ReservedB26 = 288, // reserved
523-
ReservedB27 = 289, // reserved
524506
ReservedB28 = 290, // reserved
525507
ReservedB29 = 291, // reserved
526508
ReservedB30 = 292, // reserved
527509
ReservedB5 = 267, // reserved
528510
ReservedB6 = 268, // reserved
529-
ReservedB7 = 269, // reserved
530-
ReservedB8 = 270, // reserved
531-
ReservedB9 = 271, // reserved
532511
ReservedC0 = 293, // reserved
533512
ReservedC1 = 294, // reserved
534513
ReservedC2 = 295, // reserved
@@ -914,13 +893,42 @@ enum class OpCode : unsigned {
914893
// operation with a mipmap-level offset
915894

916895
// Shader Execution Reordering
896+
HitObject_Attributes = 289, // Returns the attributes set for this HitObject
917897
HitObject_FromRayQuery = 263, // Creates a new HitObject representing a
918898
// committed hit from a RayQuery
919899
HitObject_FromRayQueryWithAttrs =
920900
264, // Creates a new HitObject representing a committed hit from a
921901
// RayQuery and committed attributes
902+
HitObject_GeometryIndex = 281, // Returns the geometry index committed on hit
903+
HitObject_HitKind = 285, // Returns the HitKind of the hit
904+
HitObject_InstanceID = 283, // Returns the instance id committed on hit
905+
HitObject_InstanceIndex = 282, // Returns the instance index committed on hit
906+
HitObject_IsHit = 270, // Returns `true` if the HitObject is a NOP-HitObject
907+
HitObject_IsMiss = 269, // Returns `true` if the HitObject represents a miss
908+
HitObject_IsNop = 271, // Returns `true` if the HitObject represents a nop
909+
HitObject_LoadLocalRootTableConstant =
910+
288, // Returns the root table constant for this HitObject and offset
922911
HitObject_MakeMiss = 265, // Creates a new HitObject representing a miss
923912
HitObject_MakeNop = 266, // Creates an empty nop HitObject
913+
HitObject_ObjectRayDirection =
914+
278, // Returns the ray direction in object space
915+
HitObject_ObjectRayOrigin = 277, // Returns the ray origin in object space
916+
HitObject_ObjectToWorld3x4 = 279, // Returns the object to world space
917+
// transformation matrix in 3x4 form
918+
HitObject_PrimitiveIndex =
919+
284, // Returns the primitive index committed on hit
920+
HitObject_RayFlags = 272, // Returns the ray flags set in the HitObject
921+
HitObject_RayTCurrent =
922+
274, // Returns the current T value set in the HitObject
923+
HitObject_RayTMin = 273, // Returns the TMin value set in the HitObject
924+
HitObject_SetShaderTableIndex =
925+
287, // Returns a HitObject with updated shader table index
926+
HitObject_ShaderTableIndex =
927+
286, // Returns the shader table index set for this HitObject
928+
HitObject_WorldRayDirection = 276, // Returns the ray direction in world space
929+
HitObject_WorldRayOrigin = 275, // Returns the ray origin in world space
930+
HitObject_WorldToObject3x4 = 280, // Returns the world to object space
931+
// transformation matrix in 3x4 form
924932

925933
// Synchronization
926934
AtomicBinOp = 78, // performs an atomic operation on two operands
@@ -1297,10 +1305,16 @@ enum class OpCodeClass : unsigned {
12971305
WriteSamplerFeedbackLevel,
12981306

12991307
// Shader Execution Reordering
1308+
HitObject_Attributes,
13001309
HitObject_FromRayQuery,
13011310
HitObject_FromRayQueryWithAttrs,
1311+
HitObject_LoadLocalRootTableConstant,
13021312
HitObject_MakeMiss,
13031313
HitObject_MakeNop,
1314+
HitObject_SetShaderTableIndex,
1315+
HitObject_StateMatrix,
1316+
HitObject_StateScalar,
1317+
HitObject_StateVector,
13041318

13051319
// Synchronization
13061320
AtomicBinOp,
@@ -1366,7 +1380,7 @@ enum class OpCodeClass : unsigned {
13661380
NumOpClasses_Dxil_1_7 = 153,
13671381
NumOpClasses_Dxil_1_8 = 174,
13681382

1369-
NumOpClasses = 181 // exclusive last value of enumeration
1383+
NumOpClasses = 187 // exclusive last value of enumeration
13701384
};
13711385
// OPCODECLASS-ENUM:END
13721386

0 commit comments

Comments
 (0)