Chromium Video Rendering Issue After Omarchy (Hyprland) Update

The error (failed to create GL representation)

After the most recent Omarchy update (Dec 14, 2025), launching Chromium (from the console), returns multiple (as in endless) copies of the following error:

ERR: ImageEGL.cpp:112 (operator()): eglCreateImage failed with 0x00003009
[6859:6859:1214/132211.510928:ERROR:ui/gl/scoped_egl_image.cc:23] Failed to create EGLImage: EGL_SUCCESS
[6859:6859:1214/132211.511064:ERROR:ui/ozone/common/native_pixmap_egl_binding.cc:76] Unable to initialize binding from pixmap
[6859:6859:1214/132211.511202:ERROR:gpu/command_buffer/service/shared_image/ozone_image_backing.cc:316] OzoneImageBacking::ProduceSkiaGanesh failed to create GL representation
[6859:6859:1214/132211.511314:ERROR:gpu/command_buffer/service/shared_image/shared_image_manager.cc:404] SharedImageManager::ProduceSkia: Trying to produce a Skia representation from an incompatible backing: OzoneImageBacking

The relevant part of the error seems to be failed to create GL representation.

From Claude:

OzoneImageBacking::ProduceSkiaGanesh failed to create GL representation suggests Mesa’s GBM (Generic Buffer Management) can’t create EGL images properly - this is the part that handles sharing GPU memory between Wayland, Mesa, and Chromium.

What is a GL representation?

GL refers to Graphics Library, most commonly OpenGL. An OpenGL representation is a description of 2D or 3D vector graphics and the processes used to turn that data into a final image on the screen, using an API that interacts with the GPU.

Disable GPU composting as a temporary fix

Add the following to .config/chromium-flags.conf:

--disable-gpu-compositing

Possible alternate fix (see https://github.com/basecamp/omarchy/issues/3891):

--use-gl=desktop

What is a hybrid GPU?

A hybrid GPU system uses two graphics processors — a low-power integrated GPU (iGPU) and a (more powerful) discrete GPU (dGPU). Apparently to balance performance and energy efficiency. The iGPU is expected to handle basic tasks (browsing, video) and the dGPU is expected to handle demanding apps, games, video editing, etc.

Get GPU info for machine

List PCI devices

The lspci command lists all PCI hardware, including graphics cards:

❯ lspci | grep -E "VGA|3D|Display"
00:02.0 VGA compatible controller: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] (rev 01)
01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1)

Alternatively, the lshw (list hardware) command provides more structured output:

❯ sudo lshw -C display
  *-display
       description: VGA compatible controller
       product: TigerLake-LP GT2 [Iris Xe Graphics]
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       logical name: /dev/fb0
       version: 01
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=i915 latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
       resources: iomemory:620-61f iomemory:400-3ff irq:156 memory:622c000000-622cffffff memory:4000000000-400fffffff ioport:4000(size=64) memory:c0000-dffff memory:4010000000-4016ffffff memory:4020000000-40ffffffff
  *-display
       description: VGA compatible controller
       product: GA106M [GeForce RTX 3060 Mobile / Max-Q]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
       configuration: driver=nvidia latency=0
       resources: iomemory:600-5ff iomemory:620-61f irq:145 memory:83000000-83ffffff memory:6000000000-61ffffffff memory:6200000000-6201ffffff ioport:3000(size=128) memory:84000000-8407ffff

Check current GPU driver setup

# Check if NVIDIA drivers are installed
❯ nvidia-smi  # command
Sun Dec 14 20:21:35 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.105.08             Driver Version: 580.105.08     CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3060 ...    Off |   00000000:01:00.0 Off |                  N/A |
| N/A   42C    P8              9W /   60W |      89MiB /   6144MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A             993      G   /usr/lib/Xorg                             4MiB |
|    0   N/A  N/A            1364      G   Hyprland                                  2MiB |
|    0   N/A  N/A            1493    C+G   /usr/bin/walker                          46MiB |
+-----------------------------------------------------------------------------------------+

# Check which GPU is being used; provides details about the currently used OpenGL renderer,
# this can help confirm if the correct drivers are being used
❯ glxinfo | grep "OpenGL renderer"  # command
OpenGL renderer string: NVIDIA GeForce RTX 3060 Laptop GPU/PCIe/SSE2

Which GPU is chromium using on my machine?

Browse to chrome://gpu/ and look at the GL_RENDERER line:

ANGLE (Intel, Mesa Intel(R) Iris(R) Xe Graphics (TGL GT2), OpenGL ES 3.2 Mesa 25.2.7-arch1.1)

It’s using Intel, Mesa.

What is Mesa (in the context of graphics rendering)?

Mesa is an open-source implementation of various graphics API specifications: OpenGL, Vulkan, etc. Mesa is a part of the graphics driver stack:

  • API implementation: Mesa translates calls from graphics APIs (like an application’s request to draw a shape) into commands that the specific GPU hardware can understand

  • Open-Source drivers: Mesa hosts a collection of open-source user-space drivers for various hardware vendors: AMD, Intel (relevant to me), Nvidia, …

  • Hardware interfacing: the Linux graphics architecture typically splits the driver into two parts:

    • kernel-space driver: part of the Linux kernel and handles low-level interactin, memory management, and initial configuration of the physical hardward

    • user-space driver: this is where mesa resides. It sits on top of the kernel driver and provides the high-level API implementation for applications.

Here’s Claude’s description of Mesa:

  1. Open-source GPU drivers - Provides drivers for Intel, AMD, and other GPUs
  2. OpenGL/Vulkan implementation - Implements graphics APIs that applications use 3.Interface layer - Sits between applications (like Chromium) and the kernel’s DRM (Direct Rendering Manager) subsystem

So the flow is: Chromium → Mesa → Kernel DRM → GPU hardware

What is GPU compositing?

GPU compositing uses the Graphics Processing Unit (GPU) to combine multiple visual elements (layers, images, textures) into a single final image for display, speeding up processes like web rendering, video editing, or 3D scene assembly by using the GPU’s parallel processing power instead of letting the CPU take care of everything. The GPU takes over the final “flattening” of layers.

What is ozone platform?

The term ozone-platform comes up a lot in discussions related to configuring Chromium on Hyprland. Here’s my current ~/.config/chromium-flags.conf file, with references to ozone-platform:

--ozone-platform=wayland
--ozone-platform-hint=wayland
--enable-features=TouchpadOverscrollHistoryNavigation
--load-extension=~/.local/share/omarchy/default/chromium/extensions/copy-url
# Chromium crash workaround for Wayland color management on Hyprland - see https://github.com/hyprwm/Hyprland/issues/11957
--disable-features=WaylandWpColorManagerV1

# tmp fix for Mesa issue
--disable-gpu-compositing

Ozone platform is Chromium’s graphics/input layer for cross-platform compatibility. That (somewhat) explains --ozone-platform=wayland and ozone-platform-hint=wayland. It acts as an adapter, translating Chromium’s needs into command for underlying systems like X11 or Wayland.

Here’s the ozone related part of the original error message:

[6859:6859:1214/132211.511064:ERROR:ui/ozone/common/native_pixmap_egl_binding.cc:76] Unable to initialize binding from pixmap

My guess about the cause of the issue

I updated Omarchy today (December 14th). Omarchy pulls updates from its own pacman mirror (I need to confirm what’s going on with this). Mesa in Arch was updated on December 12th (mesa 1:25.3.1-2). The current version of mesa that’s available for Omarchy is:

❯ pacman -Q mesa
mesa 1:25.2.7-1