Skip to content

Commit 5a48b24

Browse files
authored
Revert "[DirectX] Validating Root flags are denying shader stage" (#160917)
Reverts #153287
1 parent d7dd8f0 commit 5a48b24

6 files changed

+12
-157
lines changed

llvm/lib/Target/DirectX/DXILPostOptimizationValidation.cpp

Lines changed: 12 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -160,41 +160,6 @@ tripleToVisibility(llvm::Triple::EnvironmentType ET) {
160160
}
161161
}
162162

163-
static void reportIfDeniedShaderStageAccess(Module &M,
164-
const dxbc::RootFlags &Flags,
165-
const dxbc::RootFlags &Mask) {
166-
if ((Flags & Mask) != Mask)
167-
return;
168-
169-
SmallString<128> Message;
170-
raw_svector_ostream OS(Message);
171-
OS << "Shader has root bindings but root signature uses a DENY flag to "
172-
"disallow root binding access to the shader stage.";
173-
M.getContext().diagnose(DiagnosticInfoGeneric(Message));
174-
}
175-
176-
static std::optional<dxbc::RootFlags>
177-
getEnvironmentDenyFlagMask(Triple::EnvironmentType ShaderProfile) {
178-
switch (ShaderProfile) {
179-
case Triple::Pixel:
180-
return dxbc::RootFlags::DenyPixelShaderRootAccess;
181-
case Triple::Vertex:
182-
return dxbc::RootFlags::DenyVertexShaderRootAccess;
183-
case Triple::Geometry:
184-
return dxbc::RootFlags::DenyGeometryShaderRootAccess;
185-
case Triple::Hull:
186-
return dxbc::RootFlags::DenyHullShaderRootAccess;
187-
case Triple::Domain:
188-
return dxbc::RootFlags::DenyDomainShaderRootAccess;
189-
case Triple::Mesh:
190-
return dxbc::RootFlags::DenyMeshShaderRootAccess;
191-
case Triple::Amplification:
192-
return dxbc::RootFlags::DenyAmplificationShaderRootAccess;
193-
default:
194-
return std::nullopt;
195-
}
196-
}
197-
198163
static void validateRootSignature(Module &M,
199164
const mcdxbc::RootSignatureDesc &RSD,
200165
dxil::ModuleMetadataInfo &MMI,
@@ -260,9 +225,7 @@ static void validateRootSignature(Module &M,
260225
Builder.findOverlapping(ReportedBinding);
261226
reportOverlappingRegisters(M, ReportedBinding, Overlaping);
262227
});
263-
264228
const hlsl::BoundRegs &BoundRegs = Builder.takeBoundRegs();
265-
bool HasBindings = false;
266229
for (const ResourceInfo &RI : DRM) {
267230
const ResourceInfo::ResourceBinding &Binding = RI.getBinding();
268231
const dxil::ResourceTypeInfo &RTI = DRTM[RI.getHandleTy()];
@@ -273,33 +236,22 @@ static void validateRootSignature(Module &M,
273236
BoundRegs.findBoundReg(RC, Binding.Space, Binding.LowerBound,
274237
Binding.LowerBound + Binding.Size - 1);
275238

276-
if (!Reg) {
277-
reportRegNotBound(M, RC, Binding);
278-
continue;
279-
}
239+
if (Reg != nullptr) {
240+
const auto *ParamInfo =
241+
static_cast<const mcdxbc::RootParameterInfo *>(Reg->Cookie);
242+
243+
if (RC != ResourceClass::SRV && RC != ResourceClass::UAV)
244+
continue;
280245

281-
const auto *ParamInfo =
282-
static_cast<const mcdxbc::RootParameterInfo *>(Reg->Cookie);
246+
if (ParamInfo->Type == dxbc::RootParameterType::DescriptorTable)
247+
continue;
283248

284-
bool IsSRVOrUAV = RC == ResourceClass::SRV || RC == ResourceClass::UAV;
285-
bool IsDescriptorTable =
286-
ParamInfo->Type == dxbc::RootParameterType::DescriptorTable;
287-
bool IsRawOrStructuredBuffer =
288-
RK != ResourceKind::RawBuffer && RK != ResourceKind::StructuredBuffer;
289-
if (IsSRVOrUAV && !IsDescriptorTable && IsRawOrStructuredBuffer) {
290-
reportInvalidHandleTyError(M, RC, Binding);
291-
continue;
249+
if (RK != ResourceKind::RawBuffer && RK != ResourceKind::StructuredBuffer)
250+
reportInvalidHandleTyError(M, RC, Binding);
251+
} else {
252+
reportRegNotBound(M, RC, Binding);
292253
}
293-
294-
HasBindings = true;
295254
}
296-
297-
if (!HasBindings)
298-
return;
299-
300-
if (std::optional<dxbc::RootFlags> Mask =
301-
getEnvironmentDenyFlagMask(MMI.ShaderProfile))
302-
reportIfDeniedShaderStageAccess(M, dxbc::RootFlags(RSD.Flags), *Mask);
303255
}
304256

305257
static mcdxbc::RootSignatureDesc *

llvm/test/CodeGen/DirectX/rootsignature-validation-deny-no-binding.ll

Lines changed: 0 additions & 17 deletions
This file was deleted.

llvm/test/CodeGen/DirectX/rootsignature-validation-fail-deny-multiple-shader.ll

Lines changed: 0 additions & 20 deletions
This file was deleted.

llvm/test/CodeGen/DirectX/rootsignature-validation-fail-deny-root-descriptor.ll

Lines changed: 0 additions & 20 deletions
This file was deleted.

llvm/test/CodeGen/DirectX/rootsignature-validation-fail-deny-single-shader.ll

Lines changed: 0 additions & 19 deletions
This file was deleted.

llvm/test/CodeGen/DirectX/rootsignature-validation-not-dening-shader.ll

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)