Skip to content

Commit 36dab3b

Browse files
committed
add parsing for maxLOD
1 parent 2ff0c01 commit 36dab3b

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

clang/include/clang/Parse/ParseHLSLRootSignature.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class RootSignatureParser {
114114
std::optional<float> MipLODBias;
115115
std::optional<uint32_t> MaxAnisotropy;
116116
std::optional<float> MinLOD;
117+
std::optional<float> MaxLOD;
117118
};
118119
std::optional<ParsedStaticSamplerParams> parseStaticSamplerParams();
119120

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,9 @@ std::optional<StaticSampler> RootSignatureParser::parseStaticSampler() {
386386
if (Params->MinLOD.has_value())
387387
Sampler.MinLOD= Params->MinLOD.value();
388388

389+
if (Params->MaxLOD.has_value())
390+
Sampler.MaxLOD= Params->MaxLOD.value();
391+
389392
if (consumeExpectedToken(TokenKind::pu_r_paren,
390393
diag::err_hlsl_unexpected_end_of_params,
391394
/*param of=*/TokenKind::kw_StaticSampler))
@@ -722,6 +725,23 @@ RootSignatureParser::parseStaticSamplerParams() {
722725
return std::nullopt;
723726
Params.MinLOD = MinLOD;
724727
}
728+
729+
// `maxLOD` `=` NUMBER
730+
if (tryConsumeExpectedToken(TokenKind::kw_maxLOD)) {
731+
if (Params.MaxLOD.has_value()) {
732+
getDiags().Report(CurToken.TokLoc, diag::err_hlsl_rootsig_repeat_param)
733+
<< CurToken.TokKind;
734+
return std::nullopt;
735+
}
736+
737+
if (consumeExpectedToken(TokenKind::pu_equal))
738+
return std::nullopt;
739+
740+
auto MaxLOD= parseFloatParam();
741+
if (!MaxLOD.has_value())
742+
return std::nullopt;
743+
Params.MaxLOD = MaxLOD;
744+
}
725745
} while (tryConsumeExpectedToken(TokenKind::pu_comma));
726746

727747
return Params;

llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ struct StaticSampler {
164164
float MipLODBias = 0.f;
165165
uint32_t MaxAnisotropy = 16;
166166
float MinLOD = 0.f;
167+
float MaxLOD = 3.402823466e+38f;
167168
};
168169

169170
/// Models RootElement : RootFlags | RootConstants | RootParam

0 commit comments

Comments
 (0)