mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add wrapper backend mode switch and explicit DX12 bridge runtime errors
This commit is contained in:
parent
e93f097272
commit
5030f5435f
3 changed files with 46 additions and 1 deletions
|
|
@ -208,6 +208,9 @@ make -j$(nproc)
|
|||
- In-tree wrapper build:
|
||||
- `wowee_fsr3_vk_wrapper` now builds automatically when FSR3 SDK headers are present and outputs to `build/bin/libffx_fsr3_vk_wrapper.*`.
|
||||
- Wrapper backend override (what the wrapper loads underneath): `WOWEE_FSR3_WRAPPER_BACKEND_LIB=/absolute/path/to/libffx_fsr3_vk.so`.
|
||||
- Wrapper backend mode:
|
||||
- `WOWEE_FSR3_WRAPPER_BACKEND=vulkan_runtime` (default on non-Windows)
|
||||
- `WOWEE_FSR3_WRAPPER_BACKEND=dx12_bridge` (default on Windows; bridge dispatch wiring still in progress)
|
||||
- Path B wrapper libraries must export the clean wrapper ABI (`include/rendering/amd_fsr3_wrapper_abi.h`):
|
||||
- `wowee_fsr3_wrapper_get_abi_version`
|
||||
- `wowee_fsr3_wrapper_initialize`
|
||||
|
|
|
|||
|
|
@ -52,6 +52,9 @@ Runtime note:
|
|||
- `wowee_fsr3_vk_wrapper` (output in `build/bin`).
|
||||
- Wrapper backend runtime override:
|
||||
- `WOWEE_FSR3_WRAPPER_BACKEND_LIB=/absolute/path/to/libffx_fsr3_vk.so` (or `.dll` / `.dylib`).
|
||||
- Wrapper backend mode selection:
|
||||
- `WOWEE_FSR3_WRAPPER_BACKEND=vulkan_runtime`
|
||||
- `WOWEE_FSR3_WRAPPER_BACKEND=dx12_bridge`
|
||||
- Path B wrapper ABI contract is declared in:
|
||||
- `include/rendering/amd_fsr3_wrapper_abi.h`
|
||||
- Required wrapper exports:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cctype>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
|
@ -36,6 +37,32 @@ void writeError(char* outErrorText, uint32_t outErrorTextCapacity, const char* m
|
|||
}
|
||||
|
||||
#if WOWEE_HAS_AMD_FSR3_FRAMEGEN
|
||||
enum class WrapperBackend {
|
||||
VulkanRuntime,
|
||||
Dx12Bridge
|
||||
};
|
||||
|
||||
WrapperBackend selectBackend() {
|
||||
if (const char* envBackend = std::getenv("WOWEE_FSR3_WRAPPER_BACKEND")) {
|
||||
if (envBackend && *envBackend) {
|
||||
std::string mode(envBackend);
|
||||
std::transform(mode.begin(), mode.end(), mode.begin(),
|
||||
[](unsigned char c) { return static_cast<char>(std::tolower(c)); });
|
||||
if (mode == "dx12" || mode == "dx12_bridge" || mode == "d3d12") {
|
||||
return WrapperBackend::Dx12Bridge;
|
||||
}
|
||||
if (mode == "vulkan" || mode == "vk" || mode == "vulkan_runtime") {
|
||||
return WrapperBackend::VulkanRuntime;
|
||||
}
|
||||
}
|
||||
}
|
||||
#if defined(_WIN32)
|
||||
return WrapperBackend::Dx12Bridge;
|
||||
#else
|
||||
return WrapperBackend::VulkanRuntime;
|
||||
#endif
|
||||
}
|
||||
|
||||
FfxErrorCode vkSwapchainConfigureNoop(const FfxFrameGenerationConfig*) {
|
||||
return FFX_OK;
|
||||
}
|
||||
|
|
@ -207,7 +234,7 @@ WOWEE_FSR3_WRAPPER_EXPORT uint32_t wowee_fsr3_wrapper_get_abi_version(void) {
|
|||
}
|
||||
|
||||
WOWEE_FSR3_WRAPPER_EXPORT const char* wowee_fsr3_wrapper_get_name(void) {
|
||||
return "WoWee FSR3 DX12/VK Wrapper";
|
||||
return "WoWee FSR3 Wrapper";
|
||||
}
|
||||
|
||||
WOWEE_FSR3_WRAPPER_EXPORT int32_t wowee_fsr3_wrapper_initialize(const WoweeFsr3WrapperInitDesc* initDesc,
|
||||
|
|
@ -237,6 +264,18 @@ WOWEE_FSR3_WRAPPER_EXPORT int32_t wowee_fsr3_wrapper_initialize(const WoweeFsr3W
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (selectBackend() == WrapperBackend::Dx12Bridge) {
|
||||
#if !defined(_WIN32)
|
||||
writeError(outErrorText, outErrorTextCapacity,
|
||||
"dx12_bridge backend is Windows-only in current wrapper build");
|
||||
return -1;
|
||||
#else
|
||||
writeError(outErrorText, outErrorTextCapacity,
|
||||
"dx12_bridge backend selected but Vulkan<->DX12 interop dispatch is not implemented yet");
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
std::vector<std::string> candidates;
|
||||
if (const char* backendEnv = std::getenv("WOWEE_FSR3_WRAPPER_BACKEND_LIB")) {
|
||||
if (*backendEnv) candidates.emplace_back(backendEnv);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue