popsUlfr / Proton

Compatibility tool for Steam Play based on Wine and additional components. Gallium Nine with some extras.
Other
50 stars 1 forks source link

Show Gallium Nine status #3

Closed rea987 closed 5 years ago

rea987 commented 5 years ago

Feature Request

Show Gallium Nine status

I confirm:

Description

A terminal output or log to show whether Gallium Nine is/was active or not

Justification [optional]

It is unclear if current build of Proton with Gallium Nine patches use native Direct3D or not

Information

As some games show Steam Overlay and some don't, I suspect that the games that do show Steam Overlay fails to utilize Gallium Nine. After all, native Steam client isn't supposed to use Direct3D 9 natively. As wine-d3d9-staging does show Native Direct3D 9 status, same would be beneficial for this project.

screen

https://wiki.ixit.cz/d3d9

References [optional]

https://github.com/popsUlfr/Proton/issues/2#issuecomment-449633390 https://github.com/popsUlfr/Proton/issues/2#issuecomment-449777838

andy-d1969 commented 5 years ago

You can create a file ~/.steam/compatibilitytools.d/Proton_3.16-5_Gallium_Nine_Extras_0.1.1/user_settings.py with the following content: user_settings = {
"WINEDEBUG": "+d3d9,+d3dadapter9"
}
Then add PROTON_LOG=1 to the launch options of the game. This will dump a log file to your home directory containing Native Direct3D 9 is active. if gallium nine works. If you want to see the performance you can add GALLIUM_HUD=simple,fps to the launch options.

rea987 commented 5 years ago

https://github.com/popsUlfr/Proton/issues/3#issuecomment-449839486

Thanks @andy-d1969, that worked! As a side note, I confirm that Steam Overlay doesn't work when Gallium Nine is active. So, if you see Steam Overlay functioning properly, then Gallium Nine certainly doesn't. As I am unsure if Steam Overlay issue is fixable, I can take it as an unintended workaround for Gallium Nine status.

popsUlfr commented 5 years ago

For the steam overlay to work, gallium nine would need to be wrapped in an opengl context. I don't know if it is possible but in theory one would need to intercept the d3d9 Present call and send the backbuffer to the opengl swapchain call. This is sure to cost some performance though.