[llvm] Set shader analysis flags EnableRawAndStructuredBuffers and ComputeShadersPlusRawAndStructuredBuffers for RWBuffers (PR #114449)
Damyan Pepper via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 1 12:34:08 PDT 2024
================
@@ -36,8 +39,35 @@ static void updateFlags(ComputedShaderFlags &Flags, const Instruction &I) {
}
}
-ComputedShaderFlags ComputedShaderFlags::computeFlags(Module &M) {
+static void updateResourceFlags(ComputedShaderFlags &Flags, Module &M,
+ ModuleAnalysisManager *AM) {
+ if (!AM)
+ return;
+
+ const DXILResourceMap &DRM = AM->getResult<DXILResourceAnalysis>(M);
+ if (DRM.empty())
+ return;
+
+ const dxil::ModuleMetadataInfo &MMDI = AM->getResult<DXILMetadataAnalysis>(M);
+ VersionTuple SM = MMDI.ShaderModelVersion;
+ Triple::EnvironmentType SP = MMDI.ShaderProfile;
+
+ // RWBuffer
+ for (const ResourceInfo &RI : DRM.uavs()) {
+ if (RI.getResourceKind() == ResourceKind::TypedBuffer) {
+ Flags.EnableRawAndStructuredBuffers = true;
+ Flags.ComputeShadersPlusRawAndStructuredBuffers =
+ (SP == Triple::EnvironmentType::Compute && SM.getMajor() == 4);
----------------
damyanp wrote:
```SM.getMajor() == 4```
This means SM 4.x? In which case this flag will never be set. I'm surprised it isn't `>= 4`.
https://github.com/llvm/llvm-project/pull/114449
More information about the llvm-commits
mailing list