Bug 95 - Performance regression in 11.3
: Performance regression in 11.3
Status: CLOSED FIXED
Product: AMD Catalyst™Proprietary Display Driver
Classification: Unclassified
Component: OpenGL Driver
: .archived
: All Linux
: low normal
Assigned To: nobody
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-04-02 08:31 CDT by Stefan Dösinger
Modified: 2013-01-05 02:08 CST (History)
2 users (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Dösinger 2011-04-02 08:31:08 CDT
Description of problem:
Fglrx 11.3 brought a noticeable performance regression in a number of 3D applications in Wine. You can see the performance difference in my (work in progress) Wine performance tracker:

11.2:
http://openbenchmarking.org/result/1103315-GR-STEFANDWI64&obr_hgv=wine-1.3.16-213-gda4ed47-ati-glsl

11.3:
http://openbenchmarking.org/result/1104023-GR-WINE1316278

Those tests were run with the same Wine version, but different fglrx version. The difference is highly visible in the Half Life 2 tests and 3DMark 2001 tests. With 11.2 Half Life 2 in dxlevel 95 with GLSL shaders ran at 118 fps, with 11.3 it runs at 93 fps. 3DMark2001 dropped from 20521 to 18398 3Dmarks(yes, that benchmark is kinda outdated).

I apologize for the slightly chaotic presentation of the performance numbers, the tracker is still work in progress and I am working with Michael Larabel on improving it. It's also focused on tracking Wine's performance, not the driver's.

Some speculation:
* The cubetest_d3d test is an artificial draw overhead test written by me(Source is available if needed). I do not have a comparison with the same Wine version, but the git code from one day earlier ran it at 63.87 fps on 11.2(*), while on 11.3 it dropped to 56.73 fps. The app performs lots of tiny draws and changes the stream attributes often.
* The slowdown also affects Wine's ARB shader codepath, but it is much less visible(145->141 fps in dxlevel95, 121->117 in dxlevel 81). Half Life 2 usually has a margin of error of 1-2%. 3DMark2001 also slowed down, but this is well within the margin of error.
* 3DMark2000 was mostly unaffected. It does not use vertex shaders, but Wine uses GL_ARB_fragment_program for the fixed function fragment pipeline. Also 3DMark2000 does not use offscreen rendering while 3DMark2001 and Half Life 2 do.
* The Unigine Heaven test(opengl mode) is not affected. I don't know what the test does exactly, but I expect it to use GLSL and FBOs heavily. Unlike the other tests it is GPU limited, everything else is held back by CPU power.

(*) http://openbenchmarking.org/result/1104011-GR-WINE1316191&obr_hgv=ati-glsl-wine-1.3.16-145-g9ea9a05
Comment 1 Stefan Dösinger 2011-04-02 08:32:58 CDT
I forgot to add: The linked pages don't render properly in Konqueror and Internet Explorer, but they work in Firefox, Safari and Chrome.
Comment 2 pierre.boudier@amd.com 2011-09-02 02:53:33 CDT
hi stefan,

do you still see this issue with 11.8 ? we have not seen this on any non emulated apps.

there are typically several possible ways to impact performance:
- the shader in HW takes much longer (unlikely)
- the setup in GLSL path takes longer (uniforms are the only real difference with non glsl)
- there are some other interactions (like wine outputting stuff in the console when it sees an infolog)

regards,

Pierre B.
Comment 3 Stefan Dösinger 2011-09-02 05:08:32 CDT
Hi,

(In reply to comment #2)
> do you still see this issue with 11.8 ? we have not seen this on any non
> emulated apps.
Yes, I still see this with 11.8. It is most obvious in Half Life 2. HL2 is CPU limited and uses shaders heavily. It uses either Shader Model 1 shaders(dxlevel 81) or shader model 2 shaders(dxlevel 90, 95).

http://bit.ly/p7BotV has the graphs generated from my nightly test runs. Those test runs started after the regression, but you still see a big difference between ARB and GLSL backends. When the fglrx performance regression was introduced ARB stayed at the same speed while GLSL fell back.

There was a recent performance regression in Wine a few weeks ago. I still have to bisect it, so don't be concerned about the drop in wine-1.3.26-360.

> - the shader in HW takes much longer (unlikely)
I think we can exclude this as the cause, otherwise Unigine Heaven would be noticeably slower. My Unigine test runs use Unigine's GL renderer, which is GPU limited on my GPU at a full HD resolution

> - the setup in GLSL path takes longer (uniforms are the only real difference
> with non glsl)
I suspect this is the case. My drawprim_d3d test case is a small app that performs lots of tiny draw calls to test the draw overhead without changing other settings. So on the GL side the GLSL shader is never changed and no uniform is changed. The ARB backend runs at the same speed as the GLSL backend, so the GLSL regression is not evident in this simple app.

The cubetest_d3d sample used to cause redundant GLSL shader changes in the past, I have fixed this in Wine a few months ago. Since that time GLSL and ARB have the same performance too.

> - there are some other interactions (like wine outputting stuff in the console
> when it sees an infolog)
Debug output is disabled, I use WINEDEBUG=-all for my performance testing.
Comment 4 Michael Cronenworth 2011-09-29 15:52:21 CDT
This message is a reminder that your bug is marked as Catalyst 11.3.

The current Catalyst version is 11.9.

Approximately 7 days from now the Bugzilla administrator will be removing the
11.3 version. At that time your bug will be CLOSED as WONTFIX.

Bug Reporter: Thank you for reporting this issue. However, the Bugzilla
administrator provides this as a unofficial, free service to AMD customers, and
I like to keep my systems neat and tidy. If you would like to keep your bug
from being closed, please try a new Catalyst version and update the 'version'
field if the issue still occurs.

If you are unable to update the version, please make a comment and someone will
change it for you.
Comment 5 Stefan Dösinger 2011-09-30 09:40:40 CDT
The problem persists with 11.8, I haven't tested 11.9 yet.
Comment 6 Michael Cronenworth 2012-03-08 21:18:43 CST
This message is a reminder that your bug is marked as Catalyst 11.8.

The current Catalyst version is 12.2.

Approximately 7 days from now the Bugzilla administrator will be removing the
11.8 version. At that time your bug will be CLOSED as WONTFIX.

Bug Reporter: Thank you for reporting this issue. However, the Bugzilla
administrator provides this as a unofficial, free service to AMD customers, and
I like to keep my systems neat and tidy. If you would like to keep your bug
from being closed, please try a new Catalyst version and update the 'version'
field if the issue still occurs.

If you are unable to update the version, please make a comment and someone will
change it for you.
Comment 7 Stefan Dösinger 2012-03-14 06:03:53 CDT
Performance is still the same in 12.2 as it has been since 11.3.
Comment 8 Stefan Dösinger 2012-03-17 11:26:50 CDT
Actually I believe this bug was fixed a while ago, and I didn't notice it in my regular tests. My automated benchmarks show an uptick in the Half Life 2 GLSL performance a while ago that pretty much matches the size of the performance drop introduced by this regression. A further evidence is that there's no performance change on Nvidia GPUs.

You can find the data here: http://openbenchmarking.org/result/1203166-STEF-WINE14326&track_view=300 . The Half Life 2 results are the third graph from the bottom. Due to a change in the test configuration the HL2 results have been split in 2 graphs.

If I read the data correctly, this was fixed when I updated from fglrx-8.89.4 to fglrx-8.90.5, ie Catalyst 11.9 to Catalyst 11.11. If you need a certain confirmation I can try to downgrade to 11.9 and benchmark it, but as far as I'm concerned I'm considering this fixed.