[llvm] [NFC] Refactoring MCDXBC to support out of order storage of root parameters (PR #137284)
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Wed May 14 12:01:38 PDT 2025
================
@@ -30,24 +30,20 @@ static void rewriteOffsetToCurrentByte(raw_svector_ostream &Stream,
size_t RootSignatureDesc::getSize() const {
size_t Size = sizeof(dxbc::RootSignatureHeader) +
- Parameters.size() * sizeof(dxbc::RootParameterHeader);
+ ParametersContainer.size() * sizeof(dxbc::RootParameterHeader);
- for (const mcdxbc::RootParameter &P : Parameters) {
- switch (P.Header.ParameterType) {
- case llvm::to_underlying(dxbc::RootParameterType::Constants32Bit):
- Size += sizeof(dxbc::RootConstants);
- break;
- case llvm::to_underlying(dxbc::RootParameterType::CBV):
- case llvm::to_underlying(dxbc::RootParameterType::SRV):
- case llvm::to_underlying(dxbc::RootParameterType::UAV):
- if (Version == 1)
- Size += sizeof(dxbc::RTS0::v1::RootDescriptor);
- else
- Size += sizeof(dxbc::RTS0::v2::RootDescriptor);
-
- break;
- }
+ for (const auto &I : ParametersContainer) {
+ std::optional<ParametersView> P = ParametersContainer.getParameter(&I);
+ if (!P)
+ continue;
+ std::visit(
+ [&Size](auto &Value) -> void {
+ using T = std::decay_t<decltype(*Value)>;
+ Size += sizeof(T);
+ },
+ *P);
}
----------------
bogner wrote:
If you end up taking my suggestions for the simplified API above this will probably just revert to what it was before.
https://github.com/llvm/llvm-project/pull/137284
More information about the llvm-commits
mailing list