@@ -475,18 +475,62 @@ inline bool IsFeedbackTexture(DXIL::ResourceKind ResourceKind) {
475
475
// Enumeration for operations specified by DXIL
476
476
enum class OpCode : unsigned {
477
477
//
478
- Reserved0 = 226 , // Reserved
479
- Reserved1 = 227 , // Reserved
480
- Reserved10 = 236 , // Reserved
481
- Reserved11 = 237 , // Reserved
482
- Reserved2 = 228 , // Reserved
483
- Reserved3 = 229 , // Reserved
484
- Reserved4 = 230 , // Reserved
485
- Reserved5 = 231 , // Reserved
486
- Reserved6 = 232 , // Reserved
487
- Reserved7 = 233 , // Reserved
488
- Reserved8 = 234 , // Reserved
489
- Reserved9 = 235 , // Reserved
478
+ Reserved0 = 226 , // Reserved
479
+ Reserved1 = 227 , // Reserved
480
+ Reserved10 = 236 , // Reserved
481
+ Reserved11 = 237 , // Reserved
482
+ Reserved2 = 228 , // Reserved
483
+ Reserved3 = 229 , // Reserved
484
+ Reserved4 = 230 , // Reserved
485
+ Reserved5 = 231 , // Reserved
486
+ Reserved6 = 232 , // Reserved
487
+ Reserved7 = 233 , // Reserved
488
+ Reserved8 = 234 , // Reserved
489
+ Reserved9 = 235 , // Reserved
490
+ ReservedA0 = 259 , // reserved
491
+ ReservedA1 = 260 , // reserved
492
+ ReservedA2 = 261 , // reserved
493
+ ReservedB0 = 262 , // reserved
494
+ ReservedB1 = 263 , // reserved
495
+ ReservedB10 = 272 , // reserved
496
+ ReservedB11 = 273 , // reserved
497
+ ReservedB12 = 274 , // reserved
498
+ ReservedB13 = 275 , // reserved
499
+ ReservedB14 = 276 , // reserved
500
+ ReservedB15 = 277 , // reserved
501
+ ReservedB16 = 278 , // reserved
502
+ ReservedB17 = 279 , // reserved
503
+ ReservedB18 = 280 , // reserved
504
+ ReservedB19 = 281 , // reserved
505
+ ReservedB2 = 264 , // reserved
506
+ ReservedB20 = 282 , // reserved
507
+ ReservedB21 = 283 , // reserved
508
+ ReservedB22 = 284 , // reserved
509
+ ReservedB23 = 285 , // reserved
510
+ ReservedB24 = 286 , // reserved
511
+ ReservedB25 = 287 , // reserved
512
+ ReservedB26 = 288 , // reserved
513
+ ReservedB27 = 289 , // reserved
514
+ ReservedB28 = 290 , // reserved
515
+ ReservedB29 = 291 , // reserved
516
+ ReservedB3 = 265 , // reserved
517
+ ReservedB30 = 292 , // reserved
518
+ ReservedB4 = 266 , // reserved
519
+ ReservedB5 = 267 , // reserved
520
+ ReservedB6 = 268 , // reserved
521
+ ReservedB7 = 269 , // reserved
522
+ ReservedB8 = 270 , // reserved
523
+ ReservedB9 = 271 , // reserved
524
+ ReservedC0 = 293 , // reserved
525
+ ReservedC1 = 294 , // reserved
526
+ ReservedC2 = 295 , // reserved
527
+ ReservedC3 = 296 , // reserved
528
+ ReservedC4 = 297 , // reserved
529
+ ReservedC5 = 298 , // reserved
530
+ ReservedC6 = 299 , // reserved
531
+ ReservedC7 = 300 , // reserved
532
+ ReservedC8 = 301 , // reserved
533
+ ReservedC9 = 302 , // reserved
490
534
491
535
// Amplification shader instructions
492
536
DispatchMesh = 173 , // Amplification shader intrinsic DispatchMesh
@@ -635,8 +679,9 @@ enum class OpCode : unsigned {
635
679
TraceRay = 157 , // initiates raytrace
636
680
637
681
// Inline Ray Query
638
- AllocateRayQuery = 178 , // allocates space for RayQuery and return handle
639
- RayQuery_Abort = 181 , // aborts a ray query
682
+ AllocateRayQuery = 178 , // allocates space for RayQuery and return handle
683
+ AllocateRayQuery2 = 258 , // allocates space for RayQuery and return handle
684
+ RayQuery_Abort = 181 , // aborts a ray query
640
685
RayQuery_CandidateGeometryIndex = 203 , // returns candidate hit geometry index
641
686
RayQuery_CandidateInstanceContributionToHitGroupIndex =
642
687
214 , // returns candidate hit InstanceContributionToHitGroupIndex
@@ -985,7 +1030,7 @@ enum class OpCode : unsigned {
985
1030
NumOpCodes_Dxil_1_7 = 226 ,
986
1031
NumOpCodes_Dxil_1_8 = 258 ,
987
1032
988
- NumOpCodes = 258 // exclusive last value of enumeration
1033
+ NumOpCodes = 303 // exclusive last value of enumeration
989
1034
};
990
1035
// OPCODE-ENUM:END
991
1036
@@ -1106,6 +1151,7 @@ enum class OpCodeClass : unsigned {
1106
1151
1107
1152
// Inline Ray Query
1108
1153
AllocateRayQuery,
1154
+ AllocateRayQuery2,
1109
1155
RayQuery_Abort,
1110
1156
RayQuery_CommitNonOpaqueTriangleHit,
1111
1157
RayQuery_CommitProceduralPrimitiveHit,
@@ -1292,7 +1338,7 @@ enum class OpCodeClass : unsigned {
1292
1338
NumOpClasses_Dxil_1_7 = 153 ,
1293
1339
NumOpClasses_Dxil_1_8 = 174 ,
1294
1340
1295
- NumOpClasses = 174 // exclusive last value of enumeration
1341
+ NumOpClasses = 175 // exclusive last value of enumeration
1296
1342
};
1297
1343
// OPCODECLASS-ENUM:END
1298
1344
@@ -1774,8 +1820,12 @@ enum class RayFlag : uint32_t {
1774
1820
CullNonOpaque = 0x80 ,
1775
1821
SkipTriangles = 0x100 ,
1776
1822
SkipProceduralPrimitives = 0x200 ,
1823
+ ForceOMM2State = 0x400 , // Force 2-state in Opacity Micromaps
1777
1824
};
1778
1825
1826
+ // Corresponds to RAYQUERY_FLAG_* in HLSL
1827
+ enum class RayQueryFlag : uint32_t { None = 0 , AllowOpacityMicromaps = 1 };
1828
+
1779
1829
// Packing/unpacking intrinsics
1780
1830
enum class UnpackMode : uint8_t {
1781
1831
Unsigned = 0 , // not sign extended
@@ -1957,7 +2007,9 @@ enum class RaytracingPipelineFlags : uint32_t {
1957
2007
None = 0x0 ,
1958
2008
SkipTriangles = 0x100 ,
1959
2009
SkipProceduralPrimitives = 0x200 ,
1960
- ValidMask = 0x300 ,
2010
+ ValidMask_1_8 = 0x300 , // valid mask up through DXIL 1.8
2011
+ AllowOpacityMicromaps = 0x400 , // Allow Opacity Micromaps to be used
2012
+ ValidMask = 0x700 , // current valid mask
1961
2013
};
1962
2014
1963
2015
enum class CommittedStatus : uint32_t {
0 commit comments