From 6c3571e67228cd55325cd11a13f07278462349d7 Mon Sep 17 00:00:00 2001 From: PancakeTAS Date: Wed, 30 Jul 2025 18:59:59 +0200 Subject: [PATCH] feat(fp16): remove translation remnants --- .gitmodules | 3 -- CMakeLists.txt | 3 +- include/extract/trans.hpp | 16 --------- src/extract/trans.cpp | 76 --------------------------------------- thirdparty/dxbc | 1 - 5 files changed, 1 insertion(+), 98 deletions(-) delete mode 100644 include/extract/trans.hpp delete mode 100644 src/extract/trans.cpp delete mode 160000 thirdparty/dxbc diff --git a/.gitmodules b/.gitmodules index 389035d..2288c1f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "thirdparty/pe-parse"] path = thirdparty/pe-parse url = https://github.com/trailofbits/pe-parse -[submodule "thirdparty/dxbc"] - path = thirdparty/dxbc - url = https://github.com/PancakeTAS/dxbc.git [submodule "thirdparty/toml11"] path = thirdparty/toml11 url = https://github.com/ToruNiina/toml11 diff --git a/CMakeLists.txt b/CMakeLists.txt index fa9d352..81587f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,6 @@ add_compile_options(-fPIC -Wno-deprecated-declarations -Wno-unused-template) -add_subdirectory(thirdparty/dxbc EXCLUDE_FROM_ALL) add_subdirectory(thirdparty/pe-parse/pe-parser-library EXCLUDE_FROM_ALL) add_subdirectory(thirdparty/toml11 EXCLUDE_FROM_ALL) add_subdirectory(thirdparty/volk EXCLUDE_FROM_ALL) @@ -45,7 +44,7 @@ set_target_properties(lsfg-vk PROPERTIES target_include_directories(lsfg-vk PUBLIC include) target_link_libraries(lsfg-vk PUBLIC - pe-parse dxbc toml11 SPIRV-Tools-opt + pe-parse toml11 SPIRV-Tools-opt) lsfg-vk-framegen) get_target_property(TOML11_INCLUDE_DIRS toml11 INTERFACE_INCLUDE_DIRECTORIES) diff --git a/include/extract/trans.hpp b/include/extract/trans.hpp deleted file mode 100644 index 9da1df9..0000000 --- a/include/extract/trans.hpp +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include -#include - -namespace Extract { - - /// - /// Translate DXBC bytecode to SPIR-V bytecode. - /// - /// @param bytecode The DXBC bytecode to translate. - /// @return The translated SPIR-V bytecode. - /// - std::vector translateShader(std::vector bytecode); - -} diff --git a/src/extract/trans.cpp b/src/extract/trans.cpp deleted file mode 100644 index 1e513c5..0000000 --- a/src/extract/trans.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include "extract/trans.hpp" - -#include - -#include -#include -#include - -#include -#include -#include -#include - -using namespace Extract; - -struct BindingOffsets { - uint32_t bindingIndex{}; - uint32_t bindingOffset{}; - uint32_t setIndex{}; - uint32_t setOffset{}; -}; - -std::vector Extract::translateShader(std::vector bytecode) { - // compile the shader - dxvk::DxbcReader reader(reinterpret_cast(bytecode.data()), bytecode.size()); - dxvk::DxbcModule module(reader); - const dxvk::DxbcModuleInfo info{}; - auto code = module.compile(info, "CS"); - - // find all bindings - std::vector bindingOffsets; - std::vector varIds; - for (auto ins : code) { - if (ins.opCode() == spv::OpDecorate) { - if (ins.arg(2) == spv::DecorationBinding) { - const uint32_t varId = ins.arg(1); - bindingOffsets.resize(std::max(bindingOffsets.size(), size_t(varId + 1))); - bindingOffsets[varId].bindingIndex = ins.arg(3); - bindingOffsets[varId].bindingOffset = ins.offset() + 3; - varIds.push_back(varId); - } - - if (ins.arg(2) == spv::DecorationDescriptorSet) { - const uint32_t varId = ins.arg(1); - bindingOffsets.resize(std::max(bindingOffsets.size(), size_t(varId + 1))); - bindingOffsets[varId].setIndex = ins.arg(3); - bindingOffsets[varId].setOffset = ins.offset() + 3; - } - } - - if (ins.opCode() == spv::OpFunction) - break; - } - - std::vector validBindings; - for (const auto varId : varIds) { - auto info = bindingOffsets[varId]; - - if (info.bindingOffset) - validBindings.push_back(info); - } - - // patch binding offset - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wunsafe-buffer-usage" - for (size_t i = 0; i < validBindings.size(); i++) - code.data()[validBindings.at(i).bindingOffset] // NOLINT - = static_cast(i); - #pragma clang diagnostic pop - - // return the new bytecode - std::vector spirvBytecode(code.size()); - std::copy_n(reinterpret_cast(code.data()), - code.size(), spirvBytecode.data()); - return spirvBytecode; -} diff --git a/thirdparty/dxbc b/thirdparty/dxbc deleted file mode 160000 index 78ab59a..0000000 --- a/thirdparty/dxbc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 78ab59a8aaeb43cd1b0a5e91ba86722433a10b78