diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:03:47 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:04:23 +0000 |
| commit | 7fa27ce4a07f19b07799a767fc29416f3b625afb (patch) | |
| tree | 27825c83636c4de341eb09a74f49f5d38a15d165 /llvm/lib/ObjectYAML/DXContainerEmitter.cpp | |
| parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) | |
Diffstat (limited to 'llvm/lib/ObjectYAML/DXContainerEmitter.cpp')
| -rw-r--r-- | llvm/lib/ObjectYAML/DXContainerEmitter.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp index a5c60a6dc9cc..64b13fc0ccde 100644 --- a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp +++ b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/BinaryFormat/DXContainer.h" +#include "llvm/MC/DXContainerPSVInfo.h" #include "llvm/ObjectYAML/ObjectYAML.h" #include "llvm/ObjectYAML/yaml2obj.h" #include "llvm/Support/Errc.h" @@ -193,6 +194,19 @@ void DXContainerWriter::writeParts(raw_ostream &OS) { OS.write(reinterpret_cast<char *>(&Hash), sizeof(dxbc::ShaderHash)); break; } + case dxbc::PartType::PSV0: { + if (!P.Info.has_value()) + continue; + mcdxbc::PSVRuntimeInfo PSV; + memcpy(&PSV.BaseData, &P.Info->Info, sizeof(dxbc::PSV::v2::RuntimeInfo)); + PSV.Resources = P.Info->Resources; + + if (sys::IsBigEndianHost) + PSV.swapBytes(static_cast<Triple::EnvironmentType>( + Triple::Pixel + P.Info->Info.ShaderStage)); + PSV.write(OS, P.Info->Version); + break; + } case dxbc::PartType::Unknown: break; // Skip any handling for unrecognized parts. } |
