ERSS-FG + OptiScaler 0.10 RDNA2: three different crashes (Streamline deadlock / double D3D12 proxy / E_NOTIMPL) on Win10, Elden Ring #1070
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#1070
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?
OptiScaler_Issue_logs.zip
Environment
--disable-arxan)d3d12.dll+ERSS-FG.dll+ERSS2/bin/(Streamline 2.11.1)Fsr4ForceModel=2INT8)Prior search: Searched existing OptiScaler Issues (keywords: ERSS, StreamlineSpoofing, RDNA2 Win10, Elden Ring, slInit). No similar report found. This combination appears to be unreported.
Did check the Wiki and Compatibility List. The Wiki page for Elden Ring (ERSS-FG) states "Last Tested Version 0.9" on W11 24H2 + RX 9070 XT (RDNA4) / Arc — none of our combination (0.10 + Win10 + RDNA2) has been tested.
Issue description
Unable to get OptiScaler working with ERSS-FG on Win10 + RDNA2 for Elden Ring. Tried all 3 supported injection filenames (
dxgi.dll,version.dll,d3d12.dll), each crashes differently.Attempt 1: OptiScaler as
dxgi.dll, ERSS-FG asd3d12.dllResult: slInit deadlock → crash before main menu
Root cause: OptiScaler (dxgi.dll, loaded earliest by the game's DXGI import) hooks Streamline's
slInitimmediately. ERSS-FG (d3d12.dll) callsslInitlater → reentrant deadlock insl.common.dll.Evidence from
ERSS2/sl.log:Evidence from
OptiScaler.log:Attempted fixes (all failed):
StreamlineSpoofing=false,FGInput=nofg,EnableDlssInputs=falseAttempt 2: OptiScaler as
version.dll, ERSS-FG asd3d12.dllResult:
Assertion failed (baseRefCount == 0)→ crash before main menuRoot cause:
version.dllloads later thand3d12.dll, so OptiScaler's Streamline hooks miss the slInit window → no deadlock (improvement!). But OptiScaler'shkD3D12CreateDevicewraps ERSS-FG's already-existing Streamline D3D12 proxy → double proxy layer → IUnknown reference count mismatch →baseRefCount == 0assertion.Evidence from
ERSS2/ERSS-FG.log:OptiScaler.log shows
StreamlineHooksall successful (loaded sl.common/dlss_g/nis/pcl/reflex),initializePluginsOK, buthkD3D12CreateDevicefires on the already-proxied device.Attempt 3: OptiScaler as
d3d12.dll, ERSS-FG loader asd3d12-original.dll(OptiScaler chained-load via-originalsuffix)Result:
D3D12CreateDevice returned 0x80004001 (E_NOTIMPL)→ crashRoot cause: OptiScaler(d3d12.dll) chain-loads ERSS-FG's loader as the "original system D3D12 library". But ERSS-FG's
d3d12.dllis a hook/loader, not the real systemD3D12.dll. When OptiScaler callso_D3D12CreateDevicevia the chained loader, the ERSS-FG hook stub returnsE_NOTIMPLbecause it hasn't fully initialized its pipeline yet.Evidence from
OptiScaler.log:Also, DxgiSpoofing was auto-disabled (log:
DxgiSpoofing and DxgiVRAM is disabled, skipping hooking), causing OptiScaler to reportfsr4: false, dlss: falsefor the RX 6700 XT.Isolation confirmation
Pure ERSS-FG (no OptiScaler at all): ✅ Works perfectly.
Full clean log:
Home menu opens, FSR/FSR3 selectable. Zero errors. The only crash is
eldenring.exe Scaleform::RenderUI layer (unrelated).Conclusion: The incompatibility is 100% between OptiScaler's D3D12 proxy/detour mechanism and ERSS-FG's Streamline/D3D12 hooks. No load order or filename can avoid it on Win10+RDNA2.
Key config (OptiScaler.ini, the last state used)
Questions / Request
OptiScaler.inicombination for this Win10 + RDNA2 + ERSS-FG + 0.10 scenario?If none, I suggest documenting this combination as incompatible on the Wiki's Known Issues / ERSS-FG page.
Try using 0.9.4 and FSR 4.0.2c instead while sticking to the Compatibility Entry, might require
FsrAgilitySDKUpgrade=trueif it crashes when switching to FSR4 since Win 10.Next time you can just fill out our issue report template while attaching logs. There's no need for these AI-"assisted" reports where half the options are either counterproductive or flat out useless.