Last EA app update ( unintentionally ) broke compatibility with RTSS
A day or two ago I had an EA App update. After that update, Battlefield 1 was no longer able to start while RTSS with an OSD was running or it would crash if you started up RTSS with OSD enabled.
After doing some research I enountered this reddit thread:
https://www.reddit.com/r/battlefield_one/comments/1mxbs0r/battlefield_1_is_literally_unplayable_right_now/
Multiple users reported that by disabling the RTSS OSD or by simply removing the software completely, the problems stopped.
I notified the developper of MSI Afterburner and Rivatuner Statistics Server and this is what he had to say:
The reason of crashing is that both BF1 and BF5 started blocking loading of legacy D3D11 shader compiler runtime (d3dx11_42.dll) when game renderer is configured to use D3D11 mode. RTSS relies on this runtime to compile its' own overlay shaders, attempt to block the compiler while it is in use expectingly crashes the application. It doesn't look like intentional change, I have no logical reasons to explain WHY some developer inside EA could decide to do so. It cannot be anticheat related, it is standard OS component signed by MS and furthermore the runtime is magically starting to load if you switch game renderer to D3D12 mode. For me it looks more like spaghetti code in hooks inside EA's own overlay library (IGO64.dll). And it is up to EA to fix that.
As solution, I can recompile RTSS to use alternate runtime shader complier (d3dcompiler_47.dll) - but doing so RTSS will lose backward compatibility with all OSes before Win8, where this runtime was introduced. And I definitively don't want to kill application functionality for older platforms I still support just because of bad EA programming in legacy BF games.
Source: Guru3D forums
I am hoping EA fixes what they broke for no good reason...