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.