Project

General

Profile

Actions

Emulator Issues #7927

closed

EFB Pokes in OpenGL is worse than D3D

Added by ZephyrSurfer over 9 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

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

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

    1. Run game.
    2. Wait a very very long time.
    3. There's no universal interactive logo on OpenGL
    4. A blue loading bar will appear after this time above it is the loaded
      image(it appears briefly so be aware)
  • Speed:

    1. Select the D3D backend and record how long it takes to load the game
    2. Select the OpenGL backend and record how long it takes to load
    3. 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

Actions #1

Updated by JMC4789 over 9 years ago

  • Status changed from New to Accepted

I've seen this in many games.

Actions #2

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.

Actions #3

Updated by ZephyrSurfer over 9 years ago

That was quick :)

Actions #4

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.

Actions #5

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?

Actions #6

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.

Actions #7

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.

Actions #8

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.

Actions #9

Updated by ZephyrSurfer over 9 years ago

Thanks for looking into it degasus :)
I will test as soon as it's built.

Actions #10

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/

Actions #11

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.

Actions #12

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.

Actions #13

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!

Actions #14

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.

Actions

Also available in: Atom PDF