Skip to content

Compiled ungoogled-chromium fails GPU initialization on Windows Server 2016 while official binary works #508

@rajch3

Description

@rajch3

Environment

  • Build Machine: Windows 11
  • Target Machine: Windows Server 2016 (Build 14393.693)
  • Visual Studio: 2022
  • Chromium Version: 141.0.7390.122
  • Repository: ungoogled-chromium-windows (tag: 141.0.7390.122-1.1)

I compiled ungoogled-chromium from source using the official build process (python3 build.py) following the exact
tagged release. The compiled binary fails to initialize GPU/WebGL on Windows Server 2016, while the official
pre-built binary from the same version works perfectly with the same command-line flags.

  1. Clone and build:
    git clone --recurse-submodules https://github.com/ungoogled-software/ungoogled-chromium-windows.git
    cd ungoogled-chromium-windows
    git checkout --recurse-submodules 141.0.7390.122-1.1
    python3 build.py

  2. Run on Windows Server 2016 with flags:
    chrome.exe --ignore-gpu-blocklist --enable-unsafe-swiftshader --use-gl=angle --use-angle=swiftshader

Expected Behavior (Official Binary)

chrome://gpu shows:
Graphics Feature Status

  • WebGL: Hardware accelerated
  • WebGL2: Hardware accelerated
  • Canvas: Hardware accelerated
  • Compositing: Hardware accelerated
    ...

Problems Detected

  • WebGPU has been disabled via blocklist or the command line.
  • Some drivers are unable to reset the D3D device in the GPU process sandbox
  • Disable KHR_blend_equation_advanced until cc shaders are updated

Actual Behavior (Self-Compiled Binary)

chrome://gpu shows:
Graphics Feature Status

  • WebGL: Disabled
  • WebGL2: Disabled
  • Canvas: Software only. Hardware acceleration disabled
  • Compositing: Software only. Hardware acceleration disabled
  • OpenGL: Disabled
    ...

Problems Detected

  • WebGPU has been disabled via blocklist or the command line.
  • WebGL2 has been disabled via blocklist or the command line.
  • Accelerated rasterization has been disabled
  • Accelerated video encode has been disabled
  • Accelerated video decode has been disabled
  • WebGL has been disabled via blocklist or the command line.
  • Gpu compositing has been disabled
  • Accelerated 2D canvas is unavailable

Log Messages

[ERROR:components\viz\service\main\viz_main_impl.cc:189] : Exiting GPU process due to errors during initialization
[ERROR:gpu\ipc\service\gpu_channel_manager.cc:925] : Failed to create GLES3 context, fallback to GLES2.
[ERROR:gpu\ipc\service\gpu_channel_manager.cc:936] : ContextResult::kFatalFailure: Failed to create shared context
for virtualization.

Key Observations

  1. Official binary works perfectly - WebGL accelerated, no GPU process crashes
  2. Self-compiled binary fails - GPU process crashes during initialization, all GPU features disabled
  3. Same source code - Both built from identical commit (b477534e7e10d193e916cd4e2967c589383625b2)
  4. Same DLL size - chrome.dll is 244MB in both builds
  5. --ignore-gpu-blocklist flag has no effect in self-compiled binary
  6. Copying GPU DLLs from official to compiled build doesn't help
  7. Issue is specific to Windows Server 2016 - Works fine on Windows 10/11 with GPU

Questions

  1. Are official binaries built with different compiler flags or on a specific OS version?
  2. Is there a known incompatibility when building on Windows 11 for Windows Server 2016 target?
  3. Why does --ignore-gpu-blocklist work in official binaries but not self-compiled ones?
  4. What could cause GPU initialization to fail in self-compiled but not official binaries from identical source?

Additional Information

  • Build configuration used: Default flags.windows.gn + ungoogled-chromium/flags.gn
  • Both builds have enable_swiftshader=false in args.gn
  • SwiftShader DLLs (libEGL.dll, libGLESv2.dll, vk_swiftshader.dll) are present in both
  • The official binary successfully enables SwiftShader-based WebGL on Windows Server 2016
  • Self-compiled binary cannot initialize GPU context at all

Any guidance on what might be different between official builds and self-compiled builds that would cause this GPU
initialization failure would be greatly appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions