iXit / wine-nine-standalone

Build Gallium Nine support on top of an existing WINE installation
GNU Lesser General Public License v2.1
272 stars 23 forks source link

Poor performance on nouveau, same as not enabled #15

Closed andysendo closed 4 years ago

andysendo commented 5 years ago

intel hd4600+nvidia k1100m, wine4.0 + mesa18.2.8 + d3d9 nine standalone 0.3 present the same poor performance as not enabled.

for example Trine 2: Complete Story, only got ~13 fps. i tried dri_prime or disable intel card login desktop got the same performance. the output have any error or fixme messages about nine only activated etc.

compare to play the game with nvidia private driver got ~50 fps.

how to trace it? or nouveau is too bad no need to fix something.

regards.

WuShichao commented 5 years ago

Same with me, AMD HD8670M, DRI_PRIME=1, same poor performance as not enabled, and no error.

axeldavy commented 5 years ago

The first check is to verify Gallium Nine is used. If the game is launched in a terminal it should show in green:

Native Direct3D 9 is active.
For more information visit https://wiki.ixit.cz/d3d9

wine ninewinecfg shows checks to see if everything can be loaded properly.

@andysendo It is difficult to pinpoint what could be your issue, but it's likely to be a nouveau issue. Lack of reclocking maybe ? @WuShichao Are you sure gallium nine was activated ? Look at the checkbox in wine ninewinecfg

WuShichao commented 5 years ago

@axeldavy I'm sure gallium nine was activated.

andysendo commented 5 years ago

yes nine dll loaded. is there any way to configure or trace nouveau module or nine?
which dx9 game can tell nine could make performance much better than without it?

axeldavy commented 5 years ago

@WuShichao With which game do you observe bad performance ?

@andysendo It depends. On my amd hd580 unigine heaven is 104.3fps on gallium nine and 78.2fps on wine, but would that be the same ratio on your card ? The gap between Gallium nine and wine used to be a lot greater years ago, but the opengl driver improved a lot since.

To both: You can find bottlenecks with GALLIUM_HUD=fps,cpu0+cpu1+cpu2+cpu3,GPU-load (Assuming 4 core cpu. I don't know if GPU-load works on nouveau). If GPU load is close to 100% it means you are GPU limited. If one core is at 100%, it is cpu limited. If none are at 100%, there is an inefficiency in the driver or it is CPU<->GPU bandwidth limited.

axeldavy commented 5 years ago

@andysendo traces can be made with apitrace: https://github.com/iXit/wine-nine-standalone/wiki/apitrace But these are usually not useful to find perf issues. It's more useful to debug visual issues. Your perf gap 13fps -> 50fps is too big to be an inefficieny in gallium nine. The most likely explanation is a reclocking issue.

andysendo commented 5 years ago

i5-4300m running the game cpu load > 230 by top command. ---> reclocking issue. so nouveau is bad for old k1100m, nine cant deal with it.

WuShichao commented 5 years ago

@axeldavy All the games, same as nine turned off. But I remember it was fast enough when I run Windows 7 five years ago.

WuShichao commented 5 years ago

@axeldavy Should I set DRI3?

dhewg commented 5 years ago

It still sounds like gallium nine is not active for you guys. Can you please paste the output when launching some game?

iiv3 commented 5 years ago

Just a bit of info, k1100m seems to be a Kepler card and Nouveau lists it in NVE0 , the "power management" lists Engine recolocking and Memory reclocking as "Work in Progress". So... it may be nouveau bug, but it might be easier to fix (compared to same problem with newer cards that are not supported at all).

At least on radeon the gpu clocks could be checked in debugfs , e.g. cat /sys/kernel/debug/dri/0/*_pm_info. See if you have these with nouveau and if they change under load.

Also, make sure you do have firmware and kernel modules loaded without errors. (e.g. dmesg)

Try few more applications. HalfLife2 Lost Coast should be free tech demo, Unigine has a number of benchmarks. Check if OpenGL games also have problems. e.g. "Xonotic" is free and native Quake3-like game you can try. Actually can we see the output of glxinfo -B for the nvidia card?

Saroufim commented 5 years ago

I'm having the same problem with nouveau. Here's the output of glxinfo -B:

glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: nouveau (0x10de)
    Device: NVC1 (0xf02)
    Version: 19.2.0
    Accelerated: yes
    Video memory: 4090MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.3
    Max compat profile version: 4.3
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: nouveau
OpenGL renderer string: NVC1
OpenGL core profile version string: 4.3 (Core Profile) Mesa 19.2.0-rc1
OpenGL core profile shading language version string: 4.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.3 (Compatibility Profile) Mesa 19.2.0-rc1
OpenGL shading language version string: 4.30
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 19.2.0-rc1
Venemo commented 5 years ago

@Saroufim Which hardware do you experience that problem on?

Saroufim commented 5 years ago

Nvidia GeForce GT 730 detected by nouveau as NVIDIA GF108 (0c1100a1)

dhewg commented 4 years ago

To summarize: Different nvidia cards in use here, all using nouveau and the issue is most likely clocking issues k1100m reclocking is 'WIP', 7200gt 'MOSTLY', whatever that means. I don't see anything that we can fix, neither here, mesa or kernel. It's nvidia that intentionally blocking the clocking issue