Skip to content

Commit 4d5c2a2

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/main' into longvec_decls_pr
2 parents cd72abe + 0a11435 commit 4d5c2a2

File tree

87 files changed

+2087
-1006
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+2087
-1006
lines changed

docs/ReleaseNotes.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@ The included licenses apply to the following files:
2121

2222
Place release notes for the upcoming release below this line and remove this line upon naming this release.
2323

24+
- Typed buffers (including ROV buffers) no longer accept types other than vectors and scalars. Any other types will produce descriptive errors. This removes support for appropriately sized matrices and structs. Though it worked in some contexts, code generated from such types was unreliable.
25+
2426
### Version 1.8.2502
2527

28+
This cumulative release contains numerous bug fixes and stability improvements.
29+
30+
Here are some highlights:
31+
2632
- The incomplete WaveMatrix implementation has been removed. [#6807](https://github.com/microsoft/DirectXShaderCompiler/pull/6807)
2733
- DXIL Validator Hash is open sourced. [#6846](https://github.com/microsoft/DirectXShaderCompiler/pull/6846)
2834
- DXIL container validation for PSV0 part allows any content ordering inside string and semantic index tables. [#6859](https://github.com/microsoft/DirectXShaderCompiler/pull/6859)
2935
- The and() and or() intrinsics will now accept non-integer parameters by casting them to bools. [#7060](https://github.com/microsoft/DirectXShaderCompiler/pull/7060)
36+
- Released executables will now expect the filenames associated with the released pdbs. Instead of expecting `dxc_full.pdb`, `dxc.exe` will now expect `dxc.pdb`.
3037

3138
### Version 1.8.2407
3239

docs/SPIR-V.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4145,7 +4145,7 @@ GL_EXT_spirv_intrinsics is an extension of GLSL that allows users to embed
41454145
arbitrary SPIR-V instructions in the GLSL code similar to the concept of
41464146
inline assembly in the C code. We support the HLSL version of
41474147
GL_EXT_spirv_intrinsics. See
4148-
`wiki <https://github.com/microsoft/DirectXShaderCompiler/wiki/GL_EXT_spirv_intrinsics-for-SPIR-V-code-gen>`_
4148+
`wiki <https://github.com/microsoft/DirectXShaderCompiler/wiki/Inline-SPIR%E2%80%90V>`_
41494149
for the details.
41504150

41514151
Supported Command-line Options

external/SPIRV-Tools

Submodule SPIRV-Tools updated 113 files

include/dxc/DXIL/DxilConstants.h

Lines changed: 69 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -475,18 +475,62 @@ inline bool IsFeedbackTexture(DXIL::ResourceKind ResourceKind) {
475475
// Enumeration for operations specified by DXIL
476476
enum class OpCode : unsigned {
477477
//
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
490534

491535
// Amplification shader instructions
492536
DispatchMesh = 173, // Amplification shader intrinsic DispatchMesh
@@ -635,8 +679,9 @@ enum class OpCode : unsigned {
635679
TraceRay = 157, // initiates raytrace
636680

637681
// 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
640685
RayQuery_CandidateGeometryIndex = 203, // returns candidate hit geometry index
641686
RayQuery_CandidateInstanceContributionToHitGroupIndex =
642687
214, // returns candidate hit InstanceContributionToHitGroupIndex
@@ -985,7 +1030,7 @@ enum class OpCode : unsigned {
9851030
NumOpCodes_Dxil_1_7 = 226,
9861031
NumOpCodes_Dxil_1_8 = 258,
9871032

988-
NumOpCodes = 258 // exclusive last value of enumeration
1033+
NumOpCodes = 303 // exclusive last value of enumeration
9891034
};
9901035
// OPCODE-ENUM:END
9911036

@@ -1106,6 +1151,7 @@ enum class OpCodeClass : unsigned {
11061151

11071152
// Inline Ray Query
11081153
AllocateRayQuery,
1154+
AllocateRayQuery2,
11091155
RayQuery_Abort,
11101156
RayQuery_CommitNonOpaqueTriangleHit,
11111157
RayQuery_CommitProceduralPrimitiveHit,
@@ -1292,7 +1338,7 @@ enum class OpCodeClass : unsigned {
12921338
NumOpClasses_Dxil_1_7 = 153,
12931339
NumOpClasses_Dxil_1_8 = 174,
12941340

1295-
NumOpClasses = 174 // exclusive last value of enumeration
1341+
NumOpClasses = 175 // exclusive last value of enumeration
12961342
};
12971343
// OPCODECLASS-ENUM:END
12981344

@@ -1774,8 +1820,12 @@ enum class RayFlag : uint32_t {
17741820
CullNonOpaque = 0x80,
17751821
SkipTriangles = 0x100,
17761822
SkipProceduralPrimitives = 0x200,
1823+
ForceOMM2State = 0x400, // Force 2-state in Opacity Micromaps
17771824
};
17781825

1826+
// Corresponds to RAYQUERY_FLAG_* in HLSL
1827+
enum class RayQueryFlag : uint32_t { None = 0, AllowOpacityMicromaps = 1 };
1828+
17791829
// Packing/unpacking intrinsics
17801830
enum class UnpackMode : uint8_t {
17811831
Unsigned = 0, // not sign extended
@@ -1957,7 +2007,9 @@ enum class RaytracingPipelineFlags : uint32_t {
19572007
None = 0x0,
19582008
SkipTriangles = 0x100,
19592009
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
19612013
};
19622014

19632015
enum class CommittedStatus : uint32_t {

include/dxc/DXIL/DxilInstructions.h

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8765,5 +8765,53 @@ struct DxilInst_StartInstanceLocation {
87658765
// Metadata
87668766
bool requiresUniformInputs() const { return false; }
87678767
};
8768+
8769+
/// This instruction allocates space for RayQuery and return handle
8770+
struct DxilInst_AllocateRayQuery2 {
8771+
llvm::Instruction *Instr;
8772+
// Construction and identification
8773+
DxilInst_AllocateRayQuery2(llvm::Instruction *pInstr) : Instr(pInstr) {}
8774+
operator bool() const {
8775+
return hlsl::OP::IsDxilOpFuncCallInst(Instr,
8776+
hlsl::OP::OpCode::AllocateRayQuery2);
8777+
}
8778+
// Validation support
8779+
bool isAllowed() const { return true; }
8780+
bool isArgumentListValid() const {
8781+
if (3 != llvm::dyn_cast<llvm::CallInst>(Instr)->getNumArgOperands())
8782+
return false;
8783+
return true;
8784+
}
8785+
// Metadata
8786+
bool requiresUniformInputs() const { return false; }
8787+
// Operand indexes
8788+
enum OperandIdx {
8789+
arg_constRayFlags = 1,
8790+
arg_constRayQueryFlags = 2,
8791+
};
8792+
// Accessors
8793+
llvm::Value *get_constRayFlags() const { return Instr->getOperand(1); }
8794+
void set_constRayFlags(llvm::Value *val) { Instr->setOperand(1, val); }
8795+
uint32_t get_constRayFlags_val() const {
8796+
return (uint32_t)(llvm::dyn_cast<llvm::ConstantInt>(Instr->getOperand(1))
8797+
->getZExtValue());
8798+
}
8799+
void set_constRayFlags_val(uint32_t val) {
8800+
Instr->setOperand(1, llvm::Constant::getIntegerValue(
8801+
llvm::IntegerType::get(Instr->getContext(), 32),
8802+
llvm::APInt(32, (uint64_t)val)));
8803+
}
8804+
llvm::Value *get_constRayQueryFlags() const { return Instr->getOperand(2); }
8805+
void set_constRayQueryFlags(llvm::Value *val) { Instr->setOperand(2, val); }
8806+
uint32_t get_constRayQueryFlags_val() const {
8807+
return (uint32_t)(llvm::dyn_cast<llvm::ConstantInt>(Instr->getOperand(2))
8808+
->getZExtValue());
8809+
}
8810+
void set_constRayQueryFlags_val(uint32_t val) {
8811+
Instr->setOperand(2, llvm::Constant::getIntegerValue(
8812+
llvm::IntegerType::get(Instr->getContext(), 32),
8813+
llvm::APInt(32, (uint64_t)val)));
8814+
}
8815+
};
87688816
// INSTR-HELPER:END
87698817
} // namespace hlsl

include/dxc/DxilContainer/RDAT_SubobjectTypes.inl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@ RDAT_DXIL_ENUM_START(hlsl::DXIL::RaytracingPipelineFlags, uint32_t)
6969
RDAT_ENUM_VALUE_NODEF(SkipProceduralPrimitives)
7070
// No need to define mask here
7171
// RDAT_ENUM_VALUE_NODEF(ValidMask)
72+
RDAT_ENUM_VALUE_NODEF(AllowOpacityMicromaps)
7273
#if DEF_RDAT_ENUMS == DEF_RDAT_DUMP_IMPL
7374
static_assert((unsigned)hlsl::DXIL::RaytracingPipelineFlags::ValidMask ==
74-
0x300,
75+
0x700,
7576
"otherwise, RDAT_DXIL_ENUM definition needs updating");
7677
#endif
7778
RDAT_ENUM_END()

0 commit comments

Comments
 (0)