Skip to content

Commit 919dbf1

Browse files
committed
[SER] HitObject accessors DXIL opcodes and check-pass tests
DXC SER implementation tracker: microsoft#7214
1 parent 206b775 commit 919dbf1

File tree

5 files changed

+1608
-232
lines changed

5 files changed

+1608
-232
lines changed

include/dxc/DXIL/DxilConstants.h

+40-24
Original file line numberDiff line numberDiff line change
@@ -499,33 +499,10 @@ enum class OpCode : unsigned {
499499
ReservedA2 = 261, // reserved
500500
ReservedB0 = 262, // reserved
501501
ReservedB1 = 263, // reserved
502-
ReservedB10 = 272, // reserved
503-
ReservedB11 = 273, // reserved
504-
ReservedB12 = 274, // reserved
505-
ReservedB13 = 275, // reserved
506-
ReservedB14 = 276, // reserved
507-
ReservedB15 = 277, // reserved
508-
ReservedB16 = 278, // reserved
509-
ReservedB17 = 279, // reserved
510-
ReservedB18 = 280, // reserved
511-
ReservedB19 = 281, // reserved
512502
ReservedB2 = 264, // reserved
513-
ReservedB20 = 282, // reserved
514-
ReservedB21 = 283, // reserved
515-
ReservedB22 = 284, // reserved
516-
ReservedB23 = 285, // reserved
517-
ReservedB24 = 286, // reserved
518-
ReservedB25 = 287, // reserved
519-
ReservedB26 = 288, // reserved
520-
ReservedB27 = 289, // reserved
521-
ReservedB28 = 290, // reserved
522-
ReservedB29 = 291, // reserved
523503
ReservedB30 = 292, // reserved
524504
ReservedB5 = 267, // reserved
525505
ReservedB6 = 268, // reserved
526-
ReservedB7 = 269, // reserved
527-
ReservedB8 = 270, // reserved
528-
ReservedB9 = 271, // reserved
529506
ReservedC0 = 293, // reserved
530507
ReservedC1 = 294, // reserved
531508
ReservedC2 = 295, // reserved
@@ -908,8 +885,41 @@ enum class OpCode : unsigned {
908885
// operation with a mipmap-level offset
909886

910887
// Shader Execution Reordering
888+
HitObject_Attributes = 291, // Returns the attributes set for this HitObject
889+
HitObject_GeometryIndex = 283, // Returns the geometry index committed on hit
890+
HitObject_HitKind = 287, // Returns the HitKind of the hit
891+
HitObject_InstanceID = 285, // Returns the instance id committed on hit
892+
HitObject_InstanceIndex = 284, // Returns the instance index committed on hit
893+
HitObject_IsHit = 270, // Returns `true` if the HitObject is a NOP-HitObject
894+
HitObject_IsMiss = 269, // Returns `true` if the HitObject represents a miss
895+
HitObject_IsNop = 271, // Returns `true` if the HitObject represents a nop
896+
HitObject_LoadLocalRootTableConstant =
897+
290, // Returns the root table constant for this HitObject and offset
911898
HitObject_MakeMiss = 265, // Creates a new HitObject representing a miss
912899
HitObject_MakeNop = 266, // Creates an empty nop HitObject
900+
HitObject_ObjectRayDirection =
901+
278, // Returns the ray direction in object space
902+
HitObject_ObjectRayOrigin = 277, // Returns the ray origin in object space
903+
HitObject_ObjectToWorld3x4 = 279, // Returns the object to world space
904+
// transformation matrix in 3x4 form
905+
HitObject_ObjectToWorld4x3 = 280, // Returns the object to world space
906+
// transformation matrix in 4x3 form
907+
HitObject_PrimitiveIndex =
908+
286, // Returns the primitive index committed on hit
909+
HitObject_RayFlags = 272, // Returns the ray flags set in the HitObject
910+
HitObject_RayTCurrent =
911+
274, // Returns the current T value set in the HitObject
912+
HitObject_RayTMin = 273, // Returns the TMin value set in the HitObject
913+
HitObject_SetShaderTableIndex =
914+
289, // Returns a HitObject with updated shader table index
915+
HitObject_ShaderTableIndex =
916+
288, // Returns the shader table index set for this HitObject
917+
HitObject_WorldRayDirection = 276, // Returns the ray direction in world space
918+
HitObject_WorldRayOrigin = 275, // Returns the ray origin in world space
919+
HitObject_WorldToObject3x4 = 281, // Returns the world to object space
920+
// transformation matrix in 3x4 form
921+
HitObject_WorldToObject4x3 = 282, // Returns the world to object space
922+
// transformation matrix in 4x3 form
913923

914924
// Synchronization
915925
AtomicBinOp = 78, // performs an atomic operation on two operands
@@ -1284,8 +1294,14 @@ enum class OpCodeClass : unsigned {
12841294
WriteSamplerFeedbackLevel,
12851295

12861296
// Shader Execution Reordering
1297+
HitObject_Attributes,
1298+
HitObject_LoadLocalRootTableConstant,
12871299
HitObject_MakeMiss,
12881300
HitObject_MakeNop,
1301+
HitObject_SetShaderTableIndex,
1302+
HitObject_StateMatrix,
1303+
HitObject_StateScalar,
1304+
HitObject_StateVector,
12891305

12901306
// Synchronization
12911307
AtomicBinOp,
@@ -1351,7 +1367,7 @@ enum class OpCodeClass : unsigned {
13511367
NumOpClasses_Dxil_1_7 = 153,
13521368
NumOpClasses_Dxil_1_8 = 174,
13531369

1354-
NumOpClasses = 177 // exclusive last value of enumeration
1370+
NumOpClasses = 183 // exclusive last value of enumeration
13551371
};
13561372
// OPCODECLASS-ENUM:END
13571373

0 commit comments

Comments
 (0)