Skip to content

Cities: Skylines (255710) #7529

@renatopereyra

Description

@renatopereyra

Compatibility Report

  • Name of the game with compatibility issues: Cities: Skylines
  • Steam AppID of the game: 255710

System Information

I confirm:

  • that I haven't found an existing compatibility report for this game.
  • that I have checked whether there are updates for my system available.

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_interop2 to 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:

  1. The GL_RENDERER/GL_VENDOR string corresponds to an AMD device (ANGLE vendor parsing here). It seems that ANGLE developers have determined that the AMD Windows GL driver has a bug with this extension so they work around internally and do not require it.
  2. The render process owns the window that it needs to render to. I don't know how the render process or the window process are created so I don't know why this appears to be true only some of the time. However, I have done some experimentation that suggests that the faster the CPU is, the more likely it is that the render process will own the window as well, thus preventing this issue from reproducing.

Support for this root-cause diagnosis:

  1. Proton logs from the i7-1165G7 (bad, not working):
    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).
  2. Proton logs from a Ryzen 7 5825U (good, working):
    amd-steam-255710.log.zip. Only one thread ever destroys a GL context and there is no accompanying ANGLE window destroyed.
  3. Steam stdout collected on the i7-1165G7 while launching Cities: Skylines with 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.
  4. Forcing the GL_RENDERER and GL_VENDOR string to match "AMD" (example) works around the issue in the i7-1165G7.

Additional notes:

  • Cities: Skylines defaults 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.
  • I believe this issue would reproduce with an NVIDIA GPU if the GL vendor and renderer were not already overridden in Wine

Reproduction

  • Launch Cities: Skylines with 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions