@@ -263,7 +263,8 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseStaticSamplerTest) {
263
263
filter = FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT,
264
264
maxLOD = 9000, addressU = TEXTURE_ADDRESS_MIRROR,
265
265
comparisonFunc = COMPARISON_NOT_EQUAL,
266
- borderColor = STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT
266
+ borderColor = STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT,
267
+ flags = 0
267
268
)
268
269
)cc" ;
269
270
@@ -336,6 +337,37 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseStaticSamplerTest) {
336
337
ASSERT_TRUE (Consumer->isSatisfied ());
337
338
}
338
339
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
+
339
371
TEST_F (ParseHLSLRootSignatureTest, ValidParseFloatsTest) {
340
372
const llvm::StringLiteral Source = R"cc(
341
373
StaticSampler(s0, mipLODBias = 0),
0 commit comments