Skip to content

Commit 5f8bbeb

Browse files
author
joaosaffran
committed
Merge branch 'validation/check-descriptors-are-bound' into validation/textures-not-bind-root-signatures
2 parents 91ff1bf + edb015d commit 5f8bbeb

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

llvm/lib/Target/DirectX/DXILPostOptimizationValidation.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "DXILShaderFlags.h"
1111
#include "DirectX.h"
1212
#include "llvm/ADT/SmallString.h"
13+
#include "llvm/ADT/SmallVector.h"
1314
#include "llvm/Analysis/DXILMetadataAnalysis.h"
1415
#include "llvm/Analysis/DXILResource.h"
1516
#include "llvm/IR/DiagnosticInfo.h"
@@ -147,8 +148,8 @@ static uint32_t parameterToRangeType(uint32_t Type) {
147148
}
148149

149150
static RootSignatureBindingValidation
150-
initRsBindingValdation(const mcdxbc::RootSignatureDesc &RSD,
151-
dxbc::ShaderVisibility Visibility) {
151+
initRSBindingValidation(const mcdxbc::RootSignatureDesc &RSD,
152+
dxbc::ShaderVisibility Visibility) {
152153

153154
RootSignatureBindingValidation Validation;
154155

@@ -210,15 +211,17 @@ getRootSignature(RootSignatureBindingInfo &RSBI,
210211

211212
static void reportInvalidRegistersBinding(
212213
Module &M,
213-
const std::vector<llvm::dxil::ResourceInfo::ResourceBinding> &Bindings,
214-
iterator_range<SmallVector<dxil::ResourceInfo>::iterator> &Resources) {
214+
const llvm::ArrayRef<llvm::dxil::ResourceInfo::ResourceBinding> &Bindings,
215+
const iterator_range<SmallVectorImpl<dxil::ResourceInfo>::iterator>
216+
&Resources) {
215217
for (auto Res = Resources.begin(), End = Resources.end(); Res != End; Res++) {
216218
bool Bound = false;
217219
ResourceInfo::ResourceBinding ResBinding = Res->getBinding();
218220
for (const auto &Binding : Bindings) {
219221
if (ResBinding.Space == Binding.Space &&
220222
ResBinding.LowerBound >= Binding.LowerBound &&
221-
ResBinding.LowerBound + ResBinding.Size - 1 < Binding.LowerBound + Binding.Size) {
223+
ResBinding.LowerBound + ResBinding.Size - 1 <
224+
Binding.LowerBound + Binding.Size) {
222225
Bound = true;
223226
break;
224227
}
@@ -252,22 +255,20 @@ static void reportErrors(Module &M, DXILResourceMap &DRM,
252255
if (auto RSD = getRootSignature(RSBI, MMI)) {
253256

254257
RootSignatureBindingValidation Validation =
255-
initRsBindingValdation(*RSD, tripleToVisibility(MMI.ShaderProfile));
256-
257-
auto Cbufs = DRM.cbuffers();
258-
auto SRVs = DRM.srvs();
259-
auto UAVs = DRM.uavs();
260-
auto Samplers = DRM.samplers();
258+
initRSBindingValidation(*RSD, tripleToVisibility(MMI.ShaderProfile));
261259

262260
reportInvalidRegistersBinding(
263-
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::CBV), Cbufs);
261+
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::CBV),
262+
DRM.cbuffers());
264263
reportInvalidRegistersBinding(
265-
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::UAV), UAVs);
264+
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::UAV),
265+
DRM.uavs());
266266
reportInvalidRegistersBinding(
267267
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::Sampler),
268-
Samplers);
268+
DRM.samplers());
269269
reportInvalidRegistersBinding(
270-
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::SRV), SRVs);
270+
M, Validation.getBindingsOfType(dxbc::DescriptorRangeType::SRV),
271+
DRM.srvs());
271272
}
272273
}
273274
} // namespace
@@ -325,6 +326,7 @@ INITIALIZE_PASS_BEGIN(DXILPostOptimizationValidationLegacy, DEBUG_TYPE,
325326
INITIALIZE_PASS_DEPENDENCY(DXILResourceBindingWrapperPass)
326327
INITIALIZE_PASS_DEPENDENCY(DXILResourceTypeWrapperPass)
327328
INITIALIZE_PASS_DEPENDENCY(DXILResourceWrapperPass)
329+
INITIALIZE_PASS_DEPENDENCY(DXILMetadataAnalysisWrapperPass)
328330
INITIALIZE_PASS_DEPENDENCY(RootSignatureAnalysisWrapper)
329331
INITIALIZE_PASS_END(DXILPostOptimizationValidationLegacy, DEBUG_TYPE,
330332
"DXIL Post Optimization Validation", false, false)

llvm/lib/Target/DirectX/DXILPostOptimizationValidation.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ class RootSignatureBindingValidation {
4747

4848
It->second.End++;
4949

50-
for (auto &[type, range] : Ranges) {
51-
if (range.Start > InsertPos) {
52-
range.Start++;
53-
range.End++;
50+
for (auto &[Type, Range] : Ranges) {
51+
if (Range.Start > InsertPos) {
52+
Range.Start++;
53+
Range.End++;
5454
}
5555
}
5656
}

0 commit comments

Comments
 (0)