Skip to content

Commit cfa7c85

Browse files
committed
first draft
1 parent 9e8a698 commit cfa7c85

3 files changed

Lines changed: 23 additions & 1 deletion

File tree

tools/clang/lib/AST/ASTContextHLSL.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,12 @@ void hlsl::AddRaytracingConstants(ASTContext &context) {
698698
AddConstUInt(
699699
context, StringRef("RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES"),
700700
(unsigned)DXIL::RaytracingPipelineFlags::SkipProceduralPrimitives);
701+
AddConstUInt(context,
702+
context.getTranslationUnitDecl(), StringRef(
703+
"RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS"),
704+
(unsigned)DXIL::RaytracingPipelineFlags::AllowOpacityMicromaps,
705+
ConstructAvailabilityAttribute(context, VT69));
706+
701707
}
702708

703709
/// <summary> Adds all constants and enums for sampler feedback </summary>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// RUN: %dxilver 1.9 | %dxc -T lib_6_9 -validator-version 1.9 %s | FileCheck -check-prefix=NOD3D %s
2+
// RUN: %dxilver 1.9 | %dxc -T lib_6_9 -validator-version 1.9 %s | %D3DReflect %s | FileCheck -check-prefix=D3D %s
3+
4+
// NOD3D: ; RaytracingPipelineConfig1 rpc = { MaxTraceRecursionDepth = 32, Flags = RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES | RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS };
5+
// D3D: MinShaderTarget: 0x10069
6+
RaytracingPipelineConfig1 rpc = { 32, RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES | RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS };
7+
8+
RaytracingAccelerationStructure RTAS;
9+
// DXR entry point to ensure RDAT flags match during validation.
10+
[shader("vertex")]
11+
void main(RayDesc rayDesc : RAYDESC) {
12+
RayQuery<RAY_FLAG_FORCE_OMM_2_STATE, RAYQUERY_FLAG_ALLOW_OPACITY_MICROMAPS> rayQuery1;
13+
rayQuery1.TraceRayInline(RTAS, RAY_FLAG_FORCE_OMM_2_STATE, 2, rayDesc);
14+
}

tools/clang/tools/dxcompiler/dxcdisassembler.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,9 @@ static const char *FlagToString(DXIL::RaytracingPipelineFlags Flag) {
670670
case DXIL::RaytracingPipelineFlags::SkipTriangles:
671671
return "RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES";
672672
case DXIL::RaytracingPipelineFlags::SkipProceduralPrimitives:
673-
return "RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES";
673+
return "RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES";
674+
case DXIL::RaytracingPipelineFlags::AllowOpacityMicromaps:
675+
return "RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS";
674676
}
675677
return "<invalid RaytracingPipelineFlags>";
676678
}

0 commit comments

Comments
 (0)