summaryrefslogtreecommitdiff
path: root/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-07-26 19:03:47 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-07-26 19:04:23 +0000
commit7fa27ce4a07f19b07799a767fc29416f3b625afb (patch)
tree27825c83636c4de341eb09a74f49f5d38a15d165 /llvm/lib/ObjectYAML/DXContainerEmitter.cpp
parente3b557809604d036af6e00c60f012c2025b59a5e (diff)
Diffstat (limited to 'llvm/lib/ObjectYAML/DXContainerEmitter.cpp')
-rw-r--r--llvm/lib/ObjectYAML/DXContainerEmitter.cpp14
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.
}