The game's 3D views (galaxy map, etc.) are completely blank; the Vue UI around them renders normally. There is no in-game GPU
warning and no errors in the Chromium console or from Dawn. Setting Settings > Graphics > Anti-aliasing to off or SMAA fixes it;
the default, 4x MSAA, breaks it.
The game is an Electron 42.7.1 / Chromium 148 app rendering with three.js's WebGPU renderer. With the game's own --enable-logging=stderr --log-level=0 output in the Proton log, the renderer compiles ~147 shader programs and issues draws with no
validation errors, but nothing reaches the screen.
I reduced it to a small WebGPU page run in the same Electron build under Proton: in Dawn's D3D12 backend on vkd3d-proton, every
render pass with a 4-sample color attachment and a resolveTarget leaves the resolve target untouched.
same Electron, native Linux (Dawn Vulkan backend, same GPU)
12/12 ok
24/24 ok
4/4 ok
(24 = color rgba8unorm/rgba16float/bgra8unorm x depth none/depth24plus-stencil8/depth32float/depth24plus x storeOp store/discard.)
With Dawn's nonzero_clear_resources_on_creation_for_testing toggle on, the failing resolve targets read back the fill pattern
(255,255,255,255) unchanged, so the resolve is skipped or a no-op rather than being cleared later. These Dawn toggles did not help: emulate_store_and_msaa_resolve, clear_color_with_draw, lazy_clear_resource_on_first_use (disabled), d3d12_create_not_zeroed_heap
(disabled), d3d12_use_64kb_alignment_msaa_texture, always_resolve_into_zero_level_and_layer. Chromium --disable-gpu-compositing, --disable-direct-composition, --in-process-gpu did not help either.
Raw D3D12 test (no Dawn)
A small D3D12 program (d3d12-repro/resolve.cpp) that clears a 4x MSAA texture and resolves it with ResolveSubresource, ResolveSubresourceRegion and a render-pass ending-access resolve works on vkd3d-proton in all 64 combinations I tried (RGBA8 and
RGBA16F; typed and typeless; created in RENDER_TARGET/RESOLVE_DEST or COMMON with explicit barriers; with and without CREATE_NOT_ZEROED). One silent failure mode I found: if the MSAA source is not transitioned to RESOLVE_SOURCE before ResolveSubresource, vkd3d-proton does nothing and leaves the destination unchanged, which matches the symptom. I could not capture
Dawn's actual D3D12 call sequence (vkd3d-proton release builds have no trace output), so I don't know whether Dawn issues an unusual
state sequence or vkd3d-proton mishandles a legal one.
Reproduction
Game:
Install "Imperium of the Stars Demo" (5198340), run with Proton Experimental, start a new game.
Leave Anti-aliasing on the default (4x MSAA): the 3D view is blank. Switch to off or SMAA: it renders.
Without the game (attached imperium-msaa-repro.zip):
Download Electron 42.7.1 for Windows (electron-v42.7.1-win32-x64.zip from the Electron GitHub releases).
In a Proton prefix run electron.exe <path to webgpu-repro> <path to results.json> (e.g. proton run electron.exe ...).
In results.json, configs entries with samples: 4 have "ok": false and read back zeros; manual entries are "ok": true.
(The present entries are window-capture checks and are unreliable on some setups.)
Log: PROTON_LOG=1 %command% --enable-logging=stderr --log-level=0 run with AA on the default 4x MSAA is attached as steam-5198340.log.gz. It was taken on Proton Experimental (experimental-11.0-20261014) with WINEDEBUG=-all,+debugstr to keep it small (the default PROTON_LOG=1+seh,+unwind output reached 10 GB in ten minutes on Proton 10.0
and stalled shader warm-up). It shows vkd3d-proton build 0bb64c56c8f0dcc, DXVK v3.1.1-97-ga78a467, RADV on the RX 6800 XT, and the game
compiling 151 shader programs without errors while the 3D view stays blank.
Compatibility Report
System Information
I confirm:
steam-5198340.log.gz
imperium-msaa-repro.zip
.)
Symptoms
The game's 3D views (galaxy map, etc.) are completely blank; the Vue UI around them renders normally. There is no in-game GPU
warning and no errors in the Chromium console or from Dawn. Setting Settings > Graphics > Anti-aliasing to off or SMAA fixes it;
the default, 4x MSAA, breaks it.
The game is an Electron 42.7.1 / Chromium 148 app rendering with three.js's WebGPU renderer. With the game's own
--enable-logging=stderr --log-level=0output in the Proton log, the renderer compiles ~147 shader programs and issues draws with novalidation errors, but nothing reaches the screen.
I reduced it to a small WebGPU page run in the same Electron build under Proton: in Dawn's D3D12 backend on vkd3d-proton, every
render pass with a 4-sample color attachment and a
resolveTargetleaves the resolve target untouched.resolveTarget(24 = color rgba8unorm/rgba16float/bgra8unorm x depth none/depth24plus-stencil8/depth32float/depth24plus x storeOp store/discard.)
With Dawn's
nonzero_clear_resources_on_creation_for_testingtoggle on, the failing resolve targets read back the fill pattern(255,255,255,255) unchanged, so the resolve is skipped or a no-op rather than being cleared later. These Dawn toggles did not help:
emulate_store_and_msaa_resolve,clear_color_with_draw,lazy_clear_resource_on_first_use(disabled),d3d12_create_not_zeroed_heap(disabled),
d3d12_use_64kb_alignment_msaa_texture,always_resolve_into_zero_level_and_layer. Chromium--disable-gpu-compositing,--disable-direct-composition,--in-process-gpudid not help either.Raw D3D12 test (no Dawn)
A small D3D12 program (
d3d12-repro/resolve.cpp) that clears a 4x MSAA texture and resolves it withResolveSubresource,ResolveSubresourceRegionand a render-pass ending-access resolve works on vkd3d-proton in all 64 combinations I tried (RGBA8 andRGBA16F; typed and typeless; created in RENDER_TARGET/RESOLVE_DEST or COMMON with explicit barriers; with and without
CREATE_NOT_ZEROED). One silent failure mode I found: if the MSAA source is not transitioned toRESOLVE_SOURCEbeforeResolveSubresource, vkd3d-proton does nothing and leaves the destination unchanged, which matches the symptom. I could not captureDawn's actual D3D12 call sequence (vkd3d-proton release builds have no trace output), so I don't know whether Dawn issues an unusual
state sequence or vkd3d-proton mishandles a legal one.
Reproduction
Game:
Without the game (attached
imperium-msaa-repro.zip):electron-v42.7.1-win32-x64.zipfrom the Electron GitHub releases).electron.exe <path to webgpu-repro> <path to results.json>(e.g.proton run electron.exe ...).results.json,configsentries withsamples: 4have"ok": falseand read back zeros;manualentries are"ok": true.(The
presententries are window-capture checks and are unreliable on some setups.)Log:
PROTON_LOG=1 %command% --enable-logging=stderr --log-level=0run with AA on the default 4x MSAA is attached assteam-5198340.log.gz. It was taken on Proton Experimental (experimental-11.0-20261014) withWINEDEBUG=-all,+debugstrto keep it small (the defaultPROTON_LOG=1+seh,+unwindoutput reached 10 GB in ten minutes on Proton 10.0and stalled shader warm-up). It shows vkd3d-proton build 0bb64c56c8f0dcc, DXVK v3.1.1-97-ga78a467, RADV on the RX 6800 XT, and the game
compiling 151 shader programs without errors while the 3D view stays blank.