Project

General

Profile

Emulator Issues #6456

Properly implement InitBackendInfo in OpenGL

Added by NeoBrainX over 7 years ago.

Status:
Accepted
Priority:
Normal
Assignee:
Category:
GFX
% Done:

0%

Operating system:
N/A
Issue type:
Task
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

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).


Related issues

Blocks Emulator - Emulator Issues #6501: Hacked Buffer Upload crashes on Windows/HD6770 but is user configurableFixed

History

#1 Updated by degasus over 7 years ago

True, but as reported on irc, some drivers may crash on creating two contexts. So should this be moved after 4.0?

#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.

#3 Updated by NeoBrainX over 7 years ago

Also, note that it shouldn't actually be necessary to create a second context - one can re-use the existing context when emulation is running and one can safely create a temporary context if it's not running.

#4 Updated by delroth over 7 years ago

  • Milestone deleted (Current)
  • Issue type set to Task
  • Operating system N/A added

Fixed enough for 4.0 in 40a1cb5dfed6. Removing milestone.

#7 Updated by Helios about 3 years ago

Also available in: Atom PDF