mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Keep AMD frame generation off while NVIDIA's frame generation holds the device, so switching between them no longer crashes.
With frame generation set to NVIDIA DLSS at the start, the device is made through Streamline's proxies. Switching the menu to AMD FSR 3.1 then made AMD's frame generation swapchain on that device at once, and NVIDIA's driver crashed with an access violation. vk_fg_wanted now stays false while Streamline's proxies are in use, so the switch takes effect at the next start, as the menu's Frame generation row already says. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,8 @@ cards).
|
||||
- The device-lost crash at area loads on GeForce RTX cards (seen on the 4090, 5090, 5080 and 5070 Ti), most often when
|
||||
the system's memory ran low: a released texture could be read after it was freed.
|
||||
- A crash at start with code 71 when RivaTuner Statistics Server runs.
|
||||
- A crash when Frame generation was switched from NVIDIA DLSS to AMD FSR 3.1 in the menu: that change now takes effect
|
||||
at the next start, as the menu says.
|
||||
- A crash in Intel's Windows driver while the pipeline cache was saved during play.
|
||||
- Long sessions running out of memory: idle textures are now freed when the system's memory runs low too, not only the
|
||||
video memory.
|
||||
|
||||
@@ -25,6 +25,7 @@ extern "C" {
|
||||
#include "platform/platform.h"
|
||||
#include "vk.h"
|
||||
#include "vk_dlaa.h"
|
||||
#include "vk_dlssg.h"
|
||||
#include "vk_ffx.h"
|
||||
#include "vk_fg.h"
|
||||
#include "ui/menu.h"
|
||||
@@ -78,9 +79,12 @@ void fail(const char *what, unsigned r) {
|
||||
} // namespace
|
||||
|
||||
// Follows the setting: gfx_present.c's window_settings_live remakes the swapchain when this stops matching vk_fg_active.
|
||||
// It needs DLSS's or FSR 3.1's motion vectors, so it also needs one of them on.
|
||||
// It needs DLSS's or FSR 3.1's motion vectors, so it also needs one of them on. Not on a device made through
|
||||
// Streamline's proxies (NVIDIA's frame generation set at the start, vk_dlssg_dpa): AMD's swapchain there crashed in
|
||||
// NVIDIA's driver when the menu switched from NVIDIA's frame generation to AMD's. That switch waits for a restart,
|
||||
// as the menu says (menu.cpp row_framegen).
|
||||
extern "C" int vk_fg_wanted(void) {
|
||||
return !strcmp(cfg_value("NX2NAVI_FRAMEGEN"), "fsr3") && cfg_bool("NX2NAVI_DLAA") && vk_dlaa_wanted();
|
||||
return !strcmp(cfg_value("NX2NAVI_FRAMEGEN"), "fsr3") && cfg_bool("NX2NAVI_DLAA") && vk_dlaa_wanted() && !vk_dlssg_dpa();
|
||||
}
|
||||
|
||||
// Always the three queues: the setting can be switched on during a run, and idle queues cost nothing.
|
||||
|
||||
Reference in New Issue
Block a user