diff --git a/CMakeLists.txt b/CMakeLists.txt index bed96594..88487a89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,16 +90,22 @@ endif() # AMD FidelityFX SDK (FSR3 frame generation interfaces) detection under extern/FidelityFX-SDK set(WOWEE_AMD_FFX_SDK_DIR ${CMAKE_SOURCE_DIR}/extern/FidelityFX-SDK/sdk) +set(WOWEE_AMD_FFX_SDK_KITS_DIR ${CMAKE_SOURCE_DIR}/extern/FidelityFX-SDK/Kits/FidelityFX) set(WOWEE_AMD_FFX_SDK_FI_HEADER ${WOWEE_AMD_FFX_SDK_DIR}/include/FidelityFX/host/ffx_frameinterpolation.h) set(WOWEE_AMD_FFX_SDK_OF_HEADER ${WOWEE_AMD_FFX_SDK_DIR}/include/FidelityFX/host/ffx_opticalflow.h) set(WOWEE_AMD_FFX_SDK_FSR3_HEADER ${WOWEE_AMD_FFX_SDK_DIR}/include/FidelityFX/host/ffx_fsr3upscaler.h) set(WOWEE_AMD_FFX_SDK_VK_HEADER ${WOWEE_AMD_FFX_SDK_DIR}/include/FidelityFX/host/backends/vk/ffx_vk.h) +set(WOWEE_AMD_FFX_SDK_KITS_FG_HEADER ${WOWEE_AMD_FFX_SDK_KITS_DIR}/framegeneration/include/ffx_framegeneration.h) -if(WOWEE_ENABLE_AMD_FSR3_FRAMEGEN - AND EXISTS ${WOWEE_AMD_FFX_SDK_FI_HEADER} +set(WOWEE_AMD_FFX_SDK_LEGACY_READY FALSE) +if(EXISTS ${WOWEE_AMD_FFX_SDK_FI_HEADER} AND EXISTS ${WOWEE_AMD_FFX_SDK_OF_HEADER} AND EXISTS ${WOWEE_AMD_FFX_SDK_FSR3_HEADER} AND EXISTS ${WOWEE_AMD_FFX_SDK_VK_HEADER}) + set(WOWEE_AMD_FFX_SDK_LEGACY_READY TRUE) +endif() + +if(WOWEE_ENABLE_AMD_FSR3_FRAMEGEN AND WOWEE_AMD_FFX_SDK_LEGACY_READY) message(STATUS "AMD FidelityFX-SDK framegen headers detected at ${WOWEE_AMD_FFX_SDK_DIR}") add_compile_definitions(WOWEE_HAS_AMD_FSR3_FRAMEGEN=1) add_library(wowee_fsr3_framegen_amd_vk_probe STATIC @@ -134,7 +140,14 @@ if(WOWEE_ENABLE_AMD_FSR3_FRAMEGEN else() add_compile_definitions(WOWEE_HAS_AMD_FSR3_FRAMEGEN=0) if(WOWEE_ENABLE_AMD_FSR3_FRAMEGEN) - message(WARNING "AMD FidelityFX-SDK framegen headers not found at ${WOWEE_AMD_FFX_SDK_DIR}; FSR3 framegen interface probe disabled.") + if(EXISTS ${WOWEE_AMD_FFX_SDK_KITS_FG_HEADER}) + message(STATUS "FidelityFX-SDK Kits layout detected at ${WOWEE_AMD_FFX_SDK_KITS_DIR}, " + "but legacy sdk/include headers required by WoWee FSR3 probe/wrapper are not present. " + "FSR3 framegen interface probe disabled.") + else() + message(WARNING "AMD FidelityFX-SDK framegen headers not found at ${WOWEE_AMD_FFX_SDK_DIR}; " + "FSR3 framegen interface probe disabled.") + endif() endif() endif() diff --git a/README.md b/README.md index fc285cb8..d5b73648 100644 --- a/README.md +++ b/README.md @@ -293,9 +293,9 @@ make -j$(nproc) - GitHub Actions builds on every push: Linux (x86-64, ARM64), Windows (x86-64, ARM64 via MSYS2), macOS (ARM64) - All build jobs are AMD-FSR2-only (`WOWEE_ENABLE_AMD_FSR2=ON`) and explicitly build `wowee_fsr2_amd_vk` -- Each job clones AMD's FSR2 SDK and FidelityFX-SDK (`v1.1.4`) -- Linux CI asserts FidelityFX-SDK Vulkan framegen files are present (FI/OF GLSL callbacks + Vulkan shader manifests) -- All CI platform jobs explicitly build `wowee_fsr3_framegen_amd_vk_probe` +- Each job clones AMD's FSR2 SDK and FidelityFX-SDK (`Kelsidavis/FidelityFX-SDK`, `main` by default) +- Linux CI checks FidelityFX-SDK framegen files and supports both legacy (`sdk/...`) and Kits layouts +- CI builds `wowee_fsr3_framegen_amd_vk_probe` when that target is generated for the detected SDK layout - If FSR2 generated Vulkan permutation headers are absent upstream, WoWee bootstraps them from `third_party/fsr2_vk_permutations` - Container build via `container/build-in-container.sh` (Podman) diff --git a/docs/AMD_FSR2_INTEGRATION.md b/docs/AMD_FSR2_INTEGRATION.md index a2446c6c..b1bcd29a 100644 --- a/docs/AMD_FSR2_INTEGRATION.md +++ b/docs/AMD_FSR2_INTEGRATION.md @@ -78,7 +78,7 @@ Runtime note: - AMD FSR2 Vulkan dispatch path is integrated and used when available. - UI displays active backend in settings (`AMD FidelityFX SDK` or `Internal fallback`). - Runtime settings include persisted FSR2 jitter tuning. -- FidelityFX-SDK `v1.1.4` extern is fetched across platforms and validated in Linux CI for Vulkan framegen source presence. +- FidelityFX-SDK extern is fetched across platforms (default: `Kelsidavis/FidelityFX-SDK` on `main`). - Startup safety behavior remains enabled: - persisted FSR2 is deferred until `IN_WORLD` - startup falls back unless `WOWEE_ALLOW_STARTUP_FSR2=1` @@ -96,14 +96,13 @@ Runtime note: - `build-linux-amd-fsr2` clones AMD's repository and configures with `WOWEE_ENABLE_AMD_FSR2=ON`. - All build jobs clone: - `GPUOpen-Effects/FidelityFX-FSR2` (`master`) - - `GPUOpen-LibrariesAndSDKs/FidelityFX-SDK` (`v1.1.4`) -- Linux CI additionally checks FidelityFX-SDK Vulkan framegen files: + - `Kelsidavis/FidelityFX-SDK` (`main`) by default +- Linux CI additionally checks FidelityFX-SDK framegen files (legacy `sdk/...` and Kits layouts): - `ffx_frameinterpolation_callbacks_glsl.h` - `ffx_opticalflow_callbacks_glsl.h` - `CMakeShadersFrameinterpolation.txt` - `CMakeShadersOpticalflow.txt` -- All CI platform jobs build: - - `wowee_fsr3_framegen_amd_vk_probe` +- CI builds `wowee_fsr3_framegen_amd_vk_probe` when that target is generated by CMake for the detected SDK layout. - Some upstream SDK checkouts do not include generated Vulkan permutation headers. - WoWee bootstraps those headers from the vendored snapshot so AMD backend builds remain cross-platform and deterministic. - If SDK headers are missing entirely, WoWee still falls back to the internal backend.