[llvm] [HLSL] Adding support for root descriptors in root signature metadata representation (PR #139781)

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 3 09:35:51 PDT 2025


================
@@ -105,6 +113,56 @@ static bool parseRootConstants(LLVMContext *Ctx, mcdxbc::RootSignatureDesc &RSD,
   return false;
 }
 
+static bool parseRootDescriptors(LLVMContext *Ctx,
+                                 mcdxbc::RootSignatureDesc &RSD,
+                                 MDNode *RootDescriptorNode) {
+
+  if (RootDescriptorNode->getNumOperands() != 5)
+    return reportError(Ctx, "Invalid format for RootConstants Element");
+
+  std::optional<StringRef> ElementText =
+      extractMdStringValue(RootDescriptorNode, 0);
+  assert(!ElementText->empty());
+
+  dxbc::RootParameterHeader Header;
+  Header.ParameterType =
+      StringSwitch<uint32_t>(*ElementText)
+          .Case("RootCBV", llvm::to_underlying(dxbc::RootParameterType::CBV))
+          .Case("RootSRV", llvm::to_underlying(dxbc::RootParameterType::SRV))
+          .Case("RootUAV", llvm::to_underlying(dxbc::RootParameterType::UAV));
----------------
bogner wrote:

Why don't we pass `ElementKind` in to this function as a parameter when we call this in parseRootSignatureElement, rather than parsing the string twice?

https://github.com/llvm/llvm-project/pull/139781


More information about the llvm-commits mailing list