[llvm] [DirectX] use DXILMetadataAnalysis to build PSVRuntimeInfo (PR #107101)
S. Bharadwaj Yadavalli via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 3 10:02:55 PDT 2024
================
@@ -149,15 +151,27 @@ void DXContainerGlobals::addPipelineStateValidationInfo(
PSV.BaseData.ShaderStage =
static_cast<uint8_t>(TT.getEnvironment() - Triple::Pixel);
+ dxil::ModuleMetadataInfo &MMI =
+ getAnalysis<DXILMetadataAnalysisWrapperPass>().getModuleMetadata();
+ assert(MMI.EntryPropertyVec.size() != 0 ||
+ TT.getEnvironment() == Triple::Library);
----------------
bharadwajy wrote:
> Updated.
Would changes to the rest of the function to use `MMI.ShaderStage` as follows, also be appropriate?
```
diff --git a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
index c6998283850f..4b59251cfd90 100644
--- a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+++ b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
@@ -145,7 +145,6 @@ void DXContainerGlobals::addPipelineStateValidationInfo(
SmallString<256> Data;
raw_svector_ostream OS(Data);
PSVRuntimeInfo PSV;
- Triple TT(M.getTargetTriple());
PSV.BaseData.MinimumWaveLaneCount = 0;
PSV.BaseData.MaximumWaveLaneCount = std::numeric_limits<uint32_t>::max();
@@ -161,7 +160,7 @@ void DXContainerGlobals::addPipelineStateValidationInfo(
// TODO: Lots more stuff to do here!
//
// See issue https://github.com/llvm/llvm-project/issues/96674.
- switch (TT.getEnvironment()) {
+ switch (MMI.ShaderStage) {
case Triple::Compute:
PSV.BaseData.NumThreadsX = MMI.EntryPropertyVec[0].NumThreadsX;
PSV.BaseData.NumThreadsY = MMI.EntryPropertyVec[0].NumThreadsY;
@@ -171,10 +170,10 @@ void DXContainerGlobals::addPipelineStateValidationInfo(
break;
}
- if (TT.getEnvironment() != Triple::Library)
+ if (MMI.ShaderStage != Triple::Library)
PSV.EntryName = MMI.EntryPropertyVec[0].Entry->getName();
- PSV.finalize(TT.getEnvironment());
+ PSV.finalize(MMI.ShaderStage);
PSV.write(OS);
Constant *Constant =
ConstantDataArray::getString(M.getContext(), Data, /*AddNull*/ false);
```
https://github.com/llvm/llvm-project/pull/107101
More information about the llvm-commits
mailing list