Yes, we should probably extend the override to Intel in this case for the present Proton hacks to work, similar to how that is currently done for Nvidia. I will look at a bit more details at some moment and fix that in Proton.
I propose these next steps:
WGL_NV_DX_interop2.Optional, though I think would be good to have:
@gofman I'm happy to drive myself and put something up for review unless there is a preference against that.
Yes, sure, thanks! In that case I'd suggest to open PR to Proton/Wine against experimental_9.0 branch (https://github.com/ValveSoftware/wine/tree/experimental_9.0) and ping me there. I'd rename WINE_GL_HIDE_NVIDIA to WINE_GL_SPOOF_AMD (it is not autoset from anywhere besides the same function in winex11.drv/opengl.c), and change the condition so instead of checking for NVIDIA presence it would check for AMD absence.
I went with the name WINE_GL_VENDOR_REPORT_AMD for maximum clarity. PTAL
A fix for Intel GPUs merged into ValveSoftware/wine. I'll close this. I am independently looking into implementing WGL_NV_DX_interop2 into upstream Wine.
Probably doesn't make sense to close until it is in stable Proton (currently only in Proton Experiemntal [bleeding-edge] branch).
Yes, having the extension supported in upstream Wine is most interesting, if that is possible.
Do you by chance know of other usages of this extension beside game launchers?
No, I don't have any statistics of using it. Note that the launcher concerned here doesn't use it without a Proton hack forcing GL for CEF, otherwise the launcher uses Angle in d3d mode and doesn't use GL at all.
proton 8.0x1 2024-02proton 8.0-5x1 2024-02WINE_GL_VENDOR_REPORT_AMDx1 2024-03WINE_GL_HIDE_NVIDIAx1 2024-02WINE_GL_SPOOF_AMDx1 2024-02
Compatibility Report
System Information
I confirm:
Symptoms
When running on an Intel iGPU, Paradox Launcher does not always open when attempting to launch
Cities: Skylines. Though this issue was initially observed in an ChromeOS Intel device, the symptoms reproduce in Ubuntu 23.10 devices with similar SOCs. This issue does not reproduce on ChromeOS or Ubuntu AMD devices. Logs and descriptions here are from Ubuntu to remain as generic as possible. This issue is ported from Mesa per request from @gofman.I believe this issue originates from this line in ANGLE, which the Paradox Launcher is configured to use. The ANGLE link shows the logic ANGLE uses to determine whether it needs to require
WGL_NV_DX_interop2to render. Proton does not support this extension so whenever ANGLE determines that it needs it, rendering fails, which results in the Paradox Launcher failing to open.Assuming I've root-caused the problem correctly, there are two situations in which ANGLE will not require
WGL_NV_DX_interop2:Support for this root-cause diagnosis:
intel-steam-255710.log.zip. There are numerous instances across multiple TIDs of GL contexts being destroyed (
wglMakeCurrent... newContext 0000000000000000) shortly before ANGLE windows are destroyed ("ANGLE Intermedi" [0002] WM_DESTROY sent from self).amd-steam-255710.log.zip. Only one thread ever destroys a GL context and there is no accompanying ANGLE window destroyed.
Cities: Skylineswith Proton 8.0-5:intel-steam-stdout-255710.log. There are multiple error logs indicating that ANGLE failed to initialize due to the missing
WGL_NV_DX_interop2.Additional notes:
Cities: Skylinesdefaults to Linux native but we use the Steam Deck compatibility tool mappings in ChromeOS so by default we are using Proton 8.0 for this game.Reproduction
Cities: Skylineswith Proton 8.0 or Experimental on an Intel device multiple times. After the first launch, some of the time the launcher may never show or show only after a long time.