Emulator Issues #7927
closedEFB Pokes in OpenGL is worse than D3D
0%
Description
Game Name?
- 4x4 Evo 2
Game ID?
- GE4E7D
What's the problem? Describe what went wrong in few words.
- The image that OpenGl produces is Broken but Works in D3D.
The EFB pokes implementation in OpenGl is too slow.
To test the best example is the loading of 4x4 Evolution 2.
Dolphin may show 0 FPS and 0% VPS for more than 20 minutes on Nintendo logo!
What did you expect to happen instead?
- Working image on loading screen.
Equivalent performance to D3D.
What steps will reproduce the problem?
-
Visual
- Run game.
- Wait a very very long time.
- There's no universal interactive logo on OpenGL
- A blue loading bar will appear after this time above it is the loaded
image(it appears briefly so be aware)
-
Speed:
-
- Select the D3D backend and record how long it takes to load the game
- Select the OpenGL backend and record how long it takes to load
- Compare results
Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?
- All of them!
Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work?
- Yes, EFB Pokes were implemented in OpenGL in PR #167 or 4.0-1244
What are your PC specifications? (including, but not limited to: Operating
System, CPU and GPU)
- AMD R9 290, G3258 OC @ 4.1 GHZ
Is there any other relevant information? (e.g. logs, screenshots,
configuration files)
-
Benchmarked on latest Master(4.0-4589)
OpenGL - 19:50.7 minutes.
D3D - 01:40.0 minutes - 01:50.6 (there's some margin).Also tested on(4.0-1242)
OpenGl - 00:27.2
D3D - 01:42.7
Screenshots:
OpenGL(Broken) : http://i.imgur.com/cNPr32B.png
D3D(image 1) : http://i.imgur.com/SxjJFt0.png
D3D(image 2) : http://i.imgur.com/zqF6oua.png
D3D(logo) : http://i.imgur.com/lf1ww1Q.png
Updated by JMC4789 over 9 years ago
- Status changed from New to Accepted
I've seen this in many games.
Updated by JMC4789 over 9 years ago
The fact that the cause is EFB pokes explains so many things to me. Firstly, it explains why the loading screen doesn't fit right in D3D (other games have the same behavior,) secondly, it explains why OpenGL is apparently glitchier than D3D; as they both have their own problems. Excellent job narrowing it down.
Tony Hawk 4 has similar graphics issues without the slowdown during loading screens.
Updated by JMC4789 over 9 years ago
Well, when you do a good job explaining a bug I've seen, there isn't much else I can do but pat you on the back and be at awe.
Updated by ZephyrSurfer over 9 years ago
Yeah I think the problem with the borders is because of EFB scale we do it properly in OpenGL I'm not exactly sure what's wrong with the D3D implementation.
Might even need to be a seperate issue?
Updated by degasus over 9 years ago
@patrick: Which IR setting have you used? Could you please also upload the images at 1xIR? I guess you're using the auto IR fractional.
Updated by ZephyrSurfer over 9 years ago
Sorry for that I have tested with 1XIR and 2XIR.
The posted images and results were all done at default settings 1xIR.
Updated by degasus over 9 years ago
This PR should fix the rendering issues: https://github.com/dolphin-emu/dolphin/pull/1686
The performance issue isn't fixed right now.
Updated by ZephyrSurfer over 9 years ago
Thanks for looking into it degasus :)
I will test as soon as it's built.
Updated by JMC4789 over 9 years ago
- Status changed from Accepted to Fixed
Performance will be looked into later, the actual issue with why they were broken is fixed. Loading screens show up for me.
Fixed by 4.0-4603 -> https://dolphin-emu.org/download/dev/68a4cc6b724657c61e86b5cb37ae2a2012710030/
Updated by ZephyrSurfer over 9 years ago
Just a note here this game boots in a couple minutes in OpenGl with a gtx 560 but takes ~18 minutes on an overclocked AMD R9 290.
I think when looking at performance we should see where we can help AMD; because.
Updated by degasus almost 9 years ago
For performance, can you please try https://github.com/dolphin-emu/dolphin/pull/2357 ?
It should be much faster on all plattforms.
Updated by ZephyrSurfer almost 9 years ago
@wickmark...@gmail.com Is there any way to improve performance of EFB pokes on single core?
Dual core OpenGL is on par with D3D.
Single Core of D3D takes 1:09 minutes whereas OpenGL single core takes roughly 14 minutes.
Thanks for all your work in this area!
Updated by degasus almost 9 years ago
In fact, there is a way to speed them up in single core. We may be able to delay all async events to the next RunGPU call.