Emulator Issues #6456
Properly implement InitBackendInfo in OpenGL
What went wrong?
OGL::InitBackendInfo doesn't consider the device's actual capabilities when filling out things like bSupportsFormatReinterpretation. This way, the user will enable format change emulation (expecting things to work) but it will silently not do anthing on unsupported hardware. Similar oddities occur for MSAA and possibly other things.
What did you expect to happen?
Instead of being able to enable format change emulation, the option should be greyed out when an unsupported GPU is detected. Similar logic should be applied for MSAA and possibly other things.
What steps will reproduce the problem?
1. Install a GPU/driver combination which supports only GLSL 1.20 but not 1.30 ( = format change emulation not supported)
2. Uncheck "Ignore format changes" in the Hacks tab of the graphics configuration.
3. Try running a game which relies on format change emulation (e.g. Mario Kart Wii, cf. issue 2063)
Any other relevant information or links to logs:
Proper device capability detection will require creating a temporary GL context in InitBackendInfo (as it's currently done in D3D11 and kinda in D3D9).
#2 Updated by NeoBrainX over 7 years ago
Likely. As a workaround it should be verified that we output some warning logs when unsupported features are enabled, though. Also, it should be verified that we force the settings to be disabled if they're unsupported as things are going to be buggy or even crash otherwise.