Skip to content

Commit e8f7b94

Browse files
author
joaosaffran
committed
add tests
1 parent bc393fd commit e8f7b94

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

clang/test/CodeGenHLSL/RootSignature.hlsl

Lines changed: 3 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 flag
86+
// CHECK-SAME: i32 42, i32 0, i32 0, i32 1}
8787

8888
#define SampleStaticSampler \
8989
"StaticSampler(s42, " \
@@ -96,6 +96,7 @@ void RootDescriptorsEntry() {}
9696
" borderColor = STATIC_BORDER_COLOR_OPAQUE_WHITE, " \
9797
" minLOD = -128.f, maxLOD = 128.f, " \
9898
" space = 0, visibility = SHADER_VISIBILITY_ALL, " \
99+
" flags = UINT_BORDER_COLOR" \
99100
")"
100101
[shader("compute"), RootSignature(SampleStaticSampler)]
101102
[numthreads(1,1,1)]

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,8 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseStaticSamplerTest) {
263263
filter = FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT,
264264
maxLOD = 9000, addressU = TEXTURE_ADDRESS_MIRROR,
265265
comparisonFunc = COMPARISON_NOT_EQUAL,
266-
borderColor = STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT
266+
borderColor = STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT,
267+
flags = 0
267268
)
268269
)cc";
269270

@@ -336,6 +337,37 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseStaticSamplerTest) {
336337
ASSERT_TRUE(Consumer->isSatisfied());
337338
}
338339

340+
TEST_F(ParseHLSLRootSignatureTest, ValidStaticSamplerFlagsTest) {
341+
const llvm::StringLiteral Source = R"cc(
342+
StaticSampler(s0, flags = UINT_BORDER_COLOR | NON_NORMALIZED_COORDINATES)
343+
)cc";
344+
345+
auto Ctx = createMinimalASTContext();
346+
StringLiteral *Signature = wrapSource(Ctx, Source);
347+
348+
TrivialModuleLoader ModLoader;
349+
auto PP = createPP(Source, ModLoader);
350+
351+
hlsl::RootSignatureParser Parser(RootSignatureVersion::V1_1, Signature, *PP);
352+
353+
// Test no diagnostics produced
354+
Consumer->setNoDiag();
355+
356+
ASSERT_FALSE(Parser.parse());
357+
358+
auto Elements = Parser.getElements();
359+
ASSERT_EQ(Elements.size(), 1u);
360+
361+
RootElement Elem = Elements[0].getElement();
362+
ASSERT_TRUE(std::holds_alternative<StaticSampler>(Elem));
363+
auto ValidStaticSamplerFlags =
364+
llvm::dxbc::StaticSamplerFlags::NonNormalizedCoordinates |
365+
llvm::dxbc::StaticSamplerFlags::UintBorderColor;
366+
ASSERT_EQ(std::get<StaticSampler>(Elem).Flags, ValidStaticSamplerFlags);
367+
368+
ASSERT_TRUE(Consumer->isSatisfied());
369+
}
370+
339371
TEST_F(ParseHLSLRootSignatureTest, ValidParseFloatsTest) {
340372
const llvm::StringLiteral Source = R"cc(
341373
StaticSampler(s0, mipLODBias = 0),

llvm/lib/Frontend/HLSL/RootSignatureMetadata.cpp

Lines changed: 1 addition & 0 deletions
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(to_underlying(Sampler.Flags))),
215216
};
216217
return MDNode::get(Ctx, Operands);
217218
}

0 commit comments

Comments
 (0)