Skip to content

Commit 6b191d0

Browse files
committed
adding metadata static sampler flags
1 parent b73bf24 commit 6b191d0

19 files changed

+75
-20
lines changed

clang/test/CodeGenHLSL/RootSignature.hlsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ void RootDescriptorsEntry() {}
8282
// checking minLOD, maxLOD
8383
// CHECK-SAME: float -1.280000e+02, float 1.280000e+02,
8484

85-
// checking register, space and visibility
86-
// CHECK-SAME: i32 42, i32 0, i32 0}
85+
// checking register, space, visibility and flags
86+
// CHECK-SAME: i32 42, i32 0, i32 0, i32 0}
8787

8888
#define SampleStaticSampler \
8989
"StaticSampler(s42, " \

llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ MDNode *MetadataBuilder::BuildStaticSampler(const StaticSampler &Sampler) {
212212
ConstantAsMetadata::get(Builder.getInt32(Sampler.Space)),
213213
ConstantAsMetadata::get(
214214
Builder.getInt32(to_underlying(Sampler.Visibility))),
215+
ConstantAsMetadata::get(Builder.getInt32(0)),
215216
};
216217
return MDNode::get(Ctx, Operands);
217218
}
@@ -411,7 +412,7 @@ Error MetadataParser::parseDescriptorTable(mcdxbc::RootSignatureDesc &RSD,
411412

412413
Error MetadataParser::parseStaticSampler(mcdxbc::RootSignatureDesc &RSD,
413414
MDNode *StaticSamplerNode) {
414-
if (StaticSamplerNode->getNumOperands() != 14)
415+
if (StaticSamplerNode->getNumOperands() != 15)
415416
return make_error<InvalidRSMetadataFormat>("Static Sampler");
416417

417418
mcdxbc::StaticSampler Sampler;
@@ -495,6 +496,17 @@ Error MetadataParser::parseStaticSampler(mcdxbc::RootSignatureDesc &RSD,
495496
return Error(std::move(E));
496497
Sampler.ShaderVisibility = *Visibility;
497498

499+
if (RSD.Version < 3) {
500+
RSD.StaticSamplers.push_back(Sampler);
501+
return Error::success();
502+
}
503+
assert(RSD.Version >= 3);
504+
505+
if (std::optional<uint32_t> Val = extractMdIntValue(StaticSamplerNode, 14))
506+
Sampler.Flags = *Val;
507+
else
508+
return make_error<InvalidRSMetadataValue>("Static Sampler Flags");
509+
498510
RSD.StaticSamplers.push_back(Sampler);
499511
return Error::success();
500512
}

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressU.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 666, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 666, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressV.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 666, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 666, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-AddressW.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 666, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 666, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-BorderColor.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 666, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 666, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-ComparisonFunc.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 666, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 666, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-Filter.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 45, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 45, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxAnisotropy.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 666, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 666, i32 3, i32 2, float -1.280000e+02, float 1.280000e+02, i32 42, i32 0, i32 0, i32 0 }

llvm/test/CodeGen/DirectX/ContainerData/RootSignature-StaticSamplers-Invalid-MaxLod.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
1616
!dx.rootsignatures = !{!2} ; list of function/root signature pairs
1717
!2 = !{ ptr @main, !3, i32 2 } ; function, root signature
1818
!3 = !{ !5 } ; list of root signature elements
19-
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 0x7FF8000000000000, i32 42, i32 0, i32 0 }
19+
!5 = !{ !"StaticSampler", i32 4, i32 2, i32 3, i32 5, float 0x3FF6CCCCC0000000, i32 9, i32 3, i32 2, float -1.280000e+02, float 0x7FF8000000000000, i32 42, i32 0, i32 0, i32 0 }

0 commit comments

Comments
 (0)