[Bug 59370] New: WebView2 109: Window renders blank (white/black) - Chromium compositor D3D11 shared texture path broken
http://bugs.winehq.org/show_bug.cgi?id=59370 Bug ID: 59370 Summary: WebView2 109: Window renders blank (white/black) - Chromium compositor D3D11 shared texture path broken Product: Wine Version: 11.1 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: d3d Assignee: wine-bugs@list.winehq.org Reporter: stan@stanstaykov.com Distribution: --- Created attachment 80314 --> http://bugs.winehq.org/attachment.cgi?id=80314 Experiment Log WebView2-based applications (Superwhisper, and likely other Electron/Tauri/WebView2 apps) display blank white or black windows. The application launches, audio plays, windows appear, but no UI content is visible. Affected configurations: Native Wayland (winewayland.drv) XWayland Multiple Wine versions tested (11.x, custom builds) WebView2 runtime: 109.0.1518.78 Download link: https://superwhisper.com (free trial available) Root Cause Analysis Extensive debugging (50+ experiments) traced the failure to Wine's D3D11 shared texture and DirectComposition implementation. What Works Chromium renderer produces content - DevTools Protocol (CDP) screenshots show correct UI D3D11 device creation succeeds - Feature queries return expected values Draw calls execute - wined3d logs show active rendering ANGLE contexts created - eglInitialize, eglCreateContext, eglMakeCurrent succeed Wayland surfaces commit - SHM buffers are attached and committed What Fails No EGL surfaces created - eglCreateWindowSurface/eglCreatePbufferSurface never called (surfaceless ANGLE) No shared texture APIs called - IDXGIResource1::CreateSharedHandle and ID3D11Device::OpenSharedResource never invoked UpdateSubresource writes zeros - Texture uploads happen but data is all zeros PS shader resources are blank - Textures bound to pixel shader contain no data Final composite samples blank inputs - Even with forced patterns upstream, final pass reads zeros Architecture Mismatch Chromium's compositor architecture expects: ANGLE renders → D3D11 shared textures → viz compositor → DComp swapchain → present Wine's implementation gap: ANGLE runs surfaceless (no window/pbuffer surfaces) Chromium uses internal SharedImageBackingD3D for GPU→compositor handoff This shared-image mailbox system bypasses normal D3D11 API surfaces Wine's D3D11 never sees the actual rendered content Key Evidence Experiment AK (CDP screenshot): DevTools screenshot: NONBLANK (renderer works) Wayland SHM dump: BLANK (presentation broken) Experiment AP (libEGL proxy): eglInitialize: succeeds eglCreateContext: succeeds (multiple contexts) eglCreateWindowSurface: never called eglCreatePbufferSurface: never called eglSwapBuffers: never called Experiment BM (shared handle probe): CreateSharedHandle: never called OpenSharedResource: never called Experiment BT (UpdateSubresource trace): Uploads occur to textures later bound as SRVs All BGRA texture uploads have nz=0 (first 64 bytes zero) Data generation upstream is the failure point Reproduction Steps Install WebView2 runtime 109.0.1518.78 Install Superwhisper (or any WebView2-based app) Launch with Wine Observe blank white/black window (audio may play) Attempted Workarounds (all failed) DXVK (d3d11/dxgi replacement) Software rendering (llvmpipe) SwiftShader Vulkan ICD --disable-gpu / --disable-gpu-compositing / --in-process-gpu --disable-direct-composition Various ANGLE backends (--use-angle=gl, swiftshader, vulkan) Force builtin/native DLL combinations DComp stub implementations (even with successful Present calls) Forced texture writes (patterns appear in intermediate RTVs but not final output) Technical Attachments Full experiment log attached (~50 experiments with detailed findings). Impact This likely affects all WebView2-based Windows applications: Electron apps using WebView2 backend Tauri apps Native Windows apps embedding web content Any Chromium-embedded application using DirectComposition WebView2 adoption is growing rapidly, so this gap will affect an increasing number of applications. Suggested Fix Direction The shared-image path between ANGLE and Chromium's viz compositor needs Wine support for: D3D11 shared textures with NT handles - ID3D11Texture2D with D3D11_RESOURCE_MISC_SHARED_NTHANDLE Cross-process texture sharing - IDXGIResource1::CreateSharedHandle / ID3D11Device1::OpenSharedResource1 Keyed mutex synchronization - IDXGIKeyedMutex for producer/consumer sync Alternatively, a more invasive approach would be patching ANGLE's Windows backend to use a Wine-compatible sharing mechanism. keywords: d3d11, dxgi, dcomp, webview2 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59370 stan <stan@stanstaykov.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |ArchLinux -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59370 Eric Pouech <eric.pouech@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.pouech@gmail.com --- Comment #1 from Eric Pouech <eric.pouech@gmail.com> --- note: native webview2 will require many more features than what you list to work out of the box (dcomp, multiprocess support for surfaces, sandbox...) until all of this is fixed (but will likely take some time), you can try one or the other: - you can force your prefix version to Windows 8 (for which chromiums may use different default settings) - if the app (or underlying framework) doesn't explicitely require direct composition from webview2, forcing all these C/L args to chrome main process could help --disable-dwm-composition --disable-gpu-sandbox --disable-d3d11 --disable-sandbox --use-angle=d3d9 --disable-gpu -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59370 Zeb Figura <z.figura12@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE Status|UNCONFIRMED |RESOLVED --- Comment #2 from Zeb Figura <z.figura12@gmail.com> --- I think we can resolve this as a duplicate. *** This bug has been marked as a duplicate of bug 58921 *** -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=59370 Gijs Vermeulen <gijsvrm@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #3 from Gijs Vermeulen <gijsvrm@gmail.com> --- Closing DUPLICATE. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla