From f215e02bf85f68d3a6106c2a1f4f7f063f819064 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:17:27 +0200 Subject: Adding upstream version 7.0.14-dfsg. Signed-off-by: Daniel Baumann --- .../tests/dxbc/test_dxbc_compiler.cpp | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/libs/dxvk-native-1.9.2a/tests/dxbc/test_dxbc_compiler.cpp (limited to 'src/libs/dxvk-native-1.9.2a/tests/dxbc/test_dxbc_compiler.cpp') diff --git a/src/libs/dxvk-native-1.9.2a/tests/dxbc/test_dxbc_compiler.cpp b/src/libs/dxvk-native-1.9.2a/tests/dxbc/test_dxbc_compiler.cpp new file mode 100644 index 00000000..735604d7 --- /dev/null +++ b/src/libs/dxvk-native-1.9.2a/tests/dxbc/test_dxbc_compiler.cpp @@ -0,0 +1,58 @@ +#include +#include + +#include "../../src/dxbc/dxbc_module.h" +#include "../../src/dxvk/dxvk_shader.h" + +#include +#include +#include + +namespace dxvk { + Logger Logger::s_instance("dxbc-compiler.log"); +} + +using namespace dxvk; + +int WINAPI WinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nCmdShow) { + int argc = 0; + LPWSTR* argv = CommandLineToArgvW( + GetCommandLineW(), &argc); + + if (argc < 3) { + Logger::err("Usage: dxbc-compiler input.dxbc output.spv"); + return 1; + } + + try { + std::string ifileName = str::fromws(argv[1]); + std::ifstream ifile(ifileName, std::ios::binary); + ifile.ignore(std::numeric_limits::max()); + std::streamsize length = ifile.gcount(); + ifile.clear(); + + ifile.seekg(0, std::ios_base::beg); + std::vector dxbcCode(length); + ifile.read(dxbcCode.data(), length); + + DxbcReader reader(dxbcCode.data(), dxbcCode.size()); + DxbcModule module(reader); + + DxbcModuleInfo moduleInfo; + moduleInfo.options.useSubgroupOpsForAtomicCounters = true; + moduleInfo.options.useDemoteToHelperInvocation = true; + moduleInfo.options.minSsboAlignment = 4; + moduleInfo.xfb = nullptr; + + Rc shader = module.compile(moduleInfo, ifileName); + std::ofstream ofile(str::fromws(argv[2]), std::ios::binary); + shader->dump(ofile); + return 0; + } catch (const DxvkError& e) { + Logger::err(e.message()); + return 1; + } +} -- cgit v1.2.3