DX11 + Luma (FF7 Remake): crash in Dx11wDx12 texture copy since 0.9.3 — regression from 0.9.2a #1225
Labels
No labels
0.9
3rd party
bug
documentation
duplicate
enhancement
invalid
linux
master
question
undetermined
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
roman/OptiScaler2#1225
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Game name and version:
FINAL FANTASY VII REMAKE INTERGRADE (Steam), DX11 mode (
-dx11launch option, required by Luma)Mods and mod versions used
51e9fed) → crashes. Also tested: 0.9.4-final (7534ad0) → crashes; 0.9.1-final (e37180c) and 0.9.2a-final (d675411) → upscaling worksxinput1_3.dll), used to loadEngine.iniwith dynamic resolution, so the DLSS input is ~1707x960 → 2560x1440winmm.dll, loadingReShade.asi(Luma's dxgi.dll renamed) +OptiScaler.asiGPU
RTX 3070 (driver 617.14)
OS
Win 11
Used automated or manual install?
If on AMD/Intel and Automated, used DLSS inputs?
Upscaler inputs: DLSS, selected in Luma's menu (the game has no native upscaler, Luma replaces TAA). OptiScaler overlay shows
D3D11 | FSR3 w/Dx12 3.1.5 | Input: DLSS | Spoof: Offon 0.9.1/0.9.2a.Did you check the Wiki and Compatibility List?
The FF7 Remake Intergrade wiki page (tested on 0.9.1, RX 9070XT) matches what works for me on 0.9.1. Method 3 (Luma
dxgi.dll+ Opti aswinmm.dll) made both Luma upscalers fail to init on my setup. Method 2 (ASI Loader) works.Please describe the issue and steps to reproduce it
Summary: regression since 0.9.3. With Luma's DLSS input on DX11, 0.9.1/0.9.2a upscale fine but OptiFG is "Unsupported API". 0.9.3/0.9.4 expose OptiFG on DX11, but crash as soon as Luma's DLSS is enabled, before any FG is turned on. 0.9.3's changelog lists "Some Luma mod behaviour changes".
Same ini for all:
Dx11Upscaler=fsr31_12,FGInput=nofg,UseDelayedInit=true,AutoExposure=true,DisableReactiveMask=true,Dxgi=false,LoadReshade=false.Steps:
-dx11, Luma Super Resolution = FSR 3 (works), load a saveEXCEPTION_ACCESS_VIOLATION reading address 0x00000000in OptiScaler.asi, called from Luma's addon, RHIThreadTrace log always ends at:
In one 0.9.4 run it went one step further:
Also tried on 0.9.4 (no change):
CreateD3D12DeviceForLumatrue/false,UseDelayedInit=true,DontUseNTShared=falseDx11Upscaler=dlss→ device removed (0x887A0005)Dx11Upscaler=fsr31(native DX11) → device removed after the first Evaluate when AutoExposure isn't forced (LumaRoot cause found:
d1a89662(DX11 NGX re-init keeps a stale device). Already fixed on master byc59238d2TL;DR: the crash is a regression from
d1a89662. It is already fixed onmasterbyc59238d2"Added device check for preventing DLSS re-init" (2026-07-27), but that commit is not in any tagged release yet, so 0.9.3 and 0.9.4 still crash with Luma. A local equivalent patch on top of v0.9.4 was confirmed working in game (details below). Until the next release, a nightly/master build should fix it for Luma users.Setup: FF7 Remake (UE4,
-dx11), Luma v2.6 (ReShade addon) emitting NGX DLSS D3D11 calls, OptiScaler asOptiScaler.asi,Dx11Upscaler=fsr31_12. RTX 3070, driver 617.14.Symptom (0.9.3 / 0.9.4):
EXCEPTION_ACCESS_VIOLATION reading 0x0on the RHI thread, called from the Luma addon. Last log line isIFeature_Dx11wDx12::ProcessDx11Textures Color exist.., sometimes preceded byCopyTextureFrom11To12 CreateTexture2D error -7785fffb(DXGI_ERROR_DEVICE_REMOVED). 0.9.2 works.Bisect
git bisectv0.9.2 (good) → v0.9.3 (bad), every build tested in game:93aaa812Clean up RestoreComputeRoot code2b75adbbAdded Korean PoE exe names for quirks16775cd5Fix CreateBufferResource return valuec74a3f3aFix Nvidia NVSDK init path orderdc204882A small optimisation for DASe3167184Bump version (resource.h only)→ first bad commit:
d1a89662"Standardize NVSDK Init code between APIs"Cause
d1a89662added this toNVSDK_NGX_D3D11_Init_Ext:Luma calls the NGX D3D11 init three times, with three different
ID3D11Devices. Befored1a89662, each call updatedD3D11Device/State::currentD3D11Device/UpscalerTimeDx11::Init. Now only the first device is kept. By the time the upscaler runs, that device is gone, which produces the DEVICE_REMOVED error and then the null read.0.9.3 log: one
Init_Ext AppId: 4919, thenNVNGX already initedtwice. 0.9.2 log:Init_Ext AppId: 4919three times.Fix
Keep the early return only when the device is null or unchanged:
Tested on top of v0.9.4: Luma DLSS → FSR 3.1 (fsr31_12) works again, no crash. Log with the patch:
Note: OptiFG remains unavailable here ("Unsupported API"). That is expected, since OptiFG is gated on
state.api != DX11and FG swapchain creation requires a D3D12 command queue. It is not part of this regression.Update: tested current master with Luma, works (and OptiFG on DX11 does too)
Correction to my previous comment: OptiFG is available on DX11 on master, it's only missing from 0.9.4. It was added in
3fc6c8c3(DX11 FG, upscaler inputs), and12ec9011added the experimental DX11 HUDFix.Build: master @
ede3ae39, Release x64. FF7 Remake-dx11, Luma v2.6, RTX 3070, driver 617.14.Settings:
Dx11Upscaler=ffx_12(renamed fromfsr31_12),FGInput=upscaler,FGOutput=fsrfg,AutoExposure=true,DisableReactiveMask=true,UseDelayedInit=true, NVCP VSync on.c59238d2fixes this issue.Two side issues seen on master:
AmdExtAntiLagApi::UpdateAntiLagState set_async_marker result: LowLatencyUpdateFail, roughly two per frame. It seems to come from FSR FG's frame-type signaling (signalFgFrameType) being handled as AntiLag 2 input with no low-latency context (no Reflex in this DX11 game,LowLatencyInput/Output=auto).0xc0000005innvwgf2umx.dll(NVIDIA D3D11 UMD, offset0x694f37) about 3 s after the FG swapchain is released cleanly (Destroy Ffx Swapchain Result: 0,Real swapchain released, refCount: 0). It never happens during gameplay.As far as I'm concerned, this issue can be closed once a release includes
c59238d2. I can share full logs if needed.