You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
nvidia.lua forces LIBVA_DRIVER_NAME=nvidia on hybrid laptops where the iGPU drives the displays, breaking browser video (repro of #11168 on Arrow Lake + Blackwell) #11173
Intel Core Ultra 7 255H (Arrow Lake, Arc 130T/140T iGPU) + NVIDIA RTX PRO 500 Blackwell Laptop GPU, Omarchy 4.0.3-1
What's wrong?
Second independent reproduction of #11168 (closed by its author, not by a maintainer, and with no fix merged), this time on different hardware: an Arrow Lake iGPU with a Blackwell dGPU, and three displays.
default/hypr/nvidia.lua sets LIBVA_DRIVER_NAME=nvidia (plus NVD_BACKEND=direct and __GLX_VENDOR_LIBRARY_NAME=nvidia) whenever omarchy-hw-nvidia and omarchy-hw-nvidia-gsp succeed. It does not check whether NVIDIA is the GPU that actually renders or drives the displays. On this hybrid laptop NVIDIA drives neither, so browsers decode video on NVDEC while compositing on the Intel iGPU, and video playback breaks. Turning off hardware acceleration in the browser fixes it, which matches the cross-GPU dmabuf import failure described in #11168.
omarchy-hw-hybrid-gpu correctly returns true on this machine, but nvidia.lua never consults it or anything like it.
Steps to reproduce
Hybrid Intel + NVIDIA (GSP) laptop, with the displays wired to the Intel iGPU.
Log in to a stock Omarchy session. nvidia.lua exports LIBVA_DRIVER_NAME=nvidia.
Play a video in Chrome, Chromium or Brave with hardware acceleration on. Playback is broken.
Turn hardware acceleration off. Playback works.
Suggested fix
As in #11168: export LIBVA_DRIVER_NAME=nvidia only when NVIDIA is the compositor's render device, not merely present. Checking which GPU drives the connected displays (or AQ_DRM_DEVICES when set) would cover it. Alternatively, leave LIBVA_DRIVER_NAME unset on hybrid systems; libva already picks the right driver per render node. __GLX_VENDOR_LIBRARY_NAME=nvidia comes from the same branch and probably deserves the same condition.
Workaround
In ~/.config/hypr/hyprland.lua, after require("default.hypr.omarchy"):
Thanks! I had the same problem with video playback.
System: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] + NVIDIA Corporation GA106M [GeForce RTX 3050 Ti Mobile / Max-Q].
Fix applied: hl.env("LIBVA_DRIVER_NAME", "iHD")`
A counter-case worth factoring into the fix here, because the obvious version of it would regress my machine.
AMD Renoir iGPU (0000:06:00.0) + GTX 1650 Mobile (0000:01:00.0), Omarchy 4.0.4-1, Aquamarine 0.15.0. Same mismatch you describe — nvidia.lua exports LIBVA_DRIVER_NAME=nvidia while Aquamarine renders on the iGPU — and the same symptom, Chromium flickering on video.
But here the wiring is the other way round: my only external display (DP-1) is physically on the NVIDIA card, and only the internal eDP-1 is on the iGPU. So "the iGPU drives the displays → stop exporting NVIDIA VA-API" is not the right rule for this machine. NVIDIA genuinely owns the output being looked at; the thing that is wrong is the render device, not the VA-API driver. Fixing it by making NVIDIA primary (AQ_DRM_DEVICES NVIDIA-first) resolved the flicker and kept NVDEC.
So the invariant that covers both cases isn't "follow the iGPU" — it's the VA-API driver and the Aquamarine render device must agree, and the render device should be the GPU that owns the connected outputs. On your machine that lands on Intel; on mine it lands on NVIDIA.
Concretely, a check keyed on omarchy-hw-hybrid-gpu plus "is any connected connector on the NVIDIA card?" would separate the two, where a check keyed on "is the iGPU rendering?" would not. Full write-up of my side, including two Aquamarine mgpu footguns that show up once NVIDIA is made primary: #12289
Duplicate of #8215 — same root cause (nvidia.lua forces LIBVA_DRIVER_NAME=nvidia on hybrid laptops). See that issue for full details, regression history, and workaround.
Local fix: browser launchers export LIBVA_DRIVER_NAME=iHD + MESA_LOADER_DRIVER_OVERRIDE=iris scoped to browser processes only (system stays on NVIDIA for games/CUDA).
Thanks for the detailed second reproduction. This is the same bug as #8215, which is older and still open: default/hypr/nvidia.lua exporting LIBVA_DRIVER_NAME=nvidia (and __GLX_VENDOR_LIBRARY_NAME=nvidia) whenever a GSP-era NVIDIA GPU is present, so a browser compositing on the iGPU decodes on NVDEC and cannot import the frames. Same mechanism, same symptom, same fix.
Where it stands, checked against the source:
quattro already changes this in 6ecf4bf ("Only force NVIDIA VA-API/GLX env when NVIDIA drives the display"): LIBVA_DRIVER_NAME and __GLX_VENDOR_LIBRARY_NAME are now set only when bin/omarchy-hw-nvidia-display says NVIDIA owns boot_vga. It is not in v4.0.4, so it reaches users with the next release. On a machine like yours, where the Intel iGPU is the boot display and drives every output, that gate leaves both variables unset and libva picks iHD for the render node the browser uses. Your hl.env workaround remains the way to get there before then.
This was reviewed by Claude Opus 5.5 alone. The second opinion (Codex Medium) answers, but its daily review budget was already spent, so it did not check this, and without it the bot does not close a duplicate. The issue stays open for the maintainer to close in favour of #8215. Nothing was run on a worker, since none has hybrid GPU hardware; the comparison is from the reports and the code on quattro.
Looks like this is the same hybrid LIBVA issue as #8215 / #11168.
On current quattro, default/hypr/nvidia.lua already gates LIBVA_DRIVER_NAME / __GLX_VENDOR_LIBRARY_NAME on omarchy-hw-nvidia-display (landed via #11690). If you're still on 4.0.4 without that, see backport #13902.
Can we close this as fixed-on-quattro and keep discussion on #8215?
Closing this as a duplicate of #8215, which is older and still open. Both report the same bug on hybrid Intel + NVIDIA laptops whose displays are on the iGPU: default/hypr/nvidia.lua exports LIBVA_DRIVER_NAME=nvidia (and __GLX_VENDOR_LIBRARY_NAME=nvidia) whenever a GSP-era NVIDIA GPU is present, so a browser compositing on the iGPU decodes on NVDEC and the cross-GPU frame import breaks playback. Same cause, same symptom, same fix.
Nothing new since the last comment here changes where it stands: on quattro, 6ecf4bf gates both variables on bin/omarchy-hw-nvidia-display, so a machine like this one, with every output on the Intel iGPU, leaves them unset. Discussion of the fix and of the counter-case @RajdeepVerma raised, an external display wired to the NVIDIA card, continues on #8215.
Claude Opus 5.5 compared the two reports and checked nvidia.lua on quattro; Codex Medium was asked separately whether they are the same item before this was closed. Nothing was run on a worker, since none has hybrid GPU hardware. If this turns out to be a different problem, it can be reopened.
Activity
danielalbornozm commentedon Sep 11, 2026
Thanks! I had the same problem with video playback.
System: Intel Corporation Alder Lake-P GT2 [Iris Xe Graphics] + NVIDIA Corporation GA106M [GeForce RTX 3050 Ti Mobile / Max-Q].
Fix applied:
hl.env("LIBVA_DRIVER_NAME","iHD")`RajdeepVerma commentedon Sep 17, 2026
A counter-case worth factoring into the fix here, because the obvious version of it would regress my machine.
AMD Renoir iGPU (
0000:06:00.0) + GTX 1650 Mobile (0000:01:00.0), Omarchy 4.0.4-1, Aquamarine 0.15.0. Same mismatch you describe —nvidia.luaexportsLIBVA_DRIVER_NAME=nvidiawhile Aquamarine renders on the iGPU — and the same symptom, Chromium flickering on video.But here the wiring is the other way round: my only external display (
DP-1) is physically on the NVIDIA card, and only the internaleDP-1is on the iGPU. So "the iGPU drives the displays → stop exporting NVIDIA VA-API" is not the right rule for this machine. NVIDIA genuinely owns the output being looked at; the thing that is wrong is the render device, not the VA-API driver. Fixing it by making NVIDIA primary (AQ_DRM_DEVICESNVIDIA-first) resolved the flicker and kept NVDEC.So the invariant that covers both cases isn't "follow the iGPU" — it's the VA-API driver and the Aquamarine render device must agree, and the render device should be the GPU that owns the connected outputs. On your machine that lands on Intel; on mine it lands on NVIDIA.
Concretely, a check keyed on
omarchy-hw-hybrid-gpuplus "is any connected connector on the NVIDIA card?" would separate the two, where a check keyed on "is the iGPU rendering?" would not. Full write-up of my side, including two Aquamarine mgpu footguns that show up once NVIDIA is made primary: #12289andyholst commentedon Sep 22, 2026
Duplicate of #8215 — same root cause (
nvidia.luaforcesLIBVA_DRIVER_NAME=nvidiaon hybrid laptops). See that issue for full details, regression history, and workaround.Local fix: browser launchers export
LIBVA_DRIVER_NAME=iHD+MESA_LOADER_DRIVER_OVERRIDE=irisscoped to browser processes only (system stays on NVIDIA for games/CUDA).omarchybot commentedon Oct 11, 2026
Thanks for the detailed second reproduction. This is the same bug as #8215, which is older and still open:
default/hypr/nvidia.luaexportingLIBVA_DRIVER_NAME=nvidia(and__GLX_VENDOR_LIBRARY_NAME=nvidia) whenever a GSP-era NVIDIA GPU is present, so a browser compositing on the iGPU decodes on NVDEC and cannot import the frames. Same mechanism, same symptom, same fix.Where it stands, checked against the source:
quattroalready changes this in 6ecf4bf ("Only force NVIDIA VA-API/GLX env when NVIDIA drives the display"):LIBVA_DRIVER_NAMEand__GLX_VENDOR_LIBRARY_NAMEare now set only whenbin/omarchy-hw-nvidia-displaysays NVIDIA ownsboot_vga. It is not in v4.0.4, so it reaches users with the next release. On a machine like yours, where the Intel iGPU is the boot display and drives every output, that gate leaves both variables unset and libva picksiHDfor the render node the browser uses. Yourhl.envworkaround remains the way to get there before then.This was reviewed by Claude Opus 5.5 alone. The second opinion (Codex Medium) answers, but its daily review budget was already spent, so it did not check this, and without it the bot does not close a duplicate. The issue stays open for the maintainer to close in favour of #8215. Nothing was run on a worker, since none has hybrid GPU hardware; the comparison is from the reports and the code on
quattro.jandrusk commentedon Oct 13, 2026
Looks like this is the same hybrid LIBVA issue as #8215 / #11168.
On current
quattro,default/hypr/nvidia.luaalready gatesLIBVA_DRIVER_NAME/__GLX_VENDOR_LIBRARY_NAMEonomarchy-hw-nvidia-display(landed via #11690). If you're still on 4.0.4 without that, see backport #13902.Can we close this as fixed-on-quattro and keep discussion on #8215?
omarchybot commentedon Oct 14, 2026
Closing this as a duplicate of #8215, which is older and still open. Both report the same bug on hybrid Intel + NVIDIA laptops whose displays are on the iGPU:
default/hypr/nvidia.luaexportsLIBVA_DRIVER_NAME=nvidia(and__GLX_VENDOR_LIBRARY_NAME=nvidia) whenever a GSP-era NVIDIA GPU is present, so a browser compositing on the iGPU decodes on NVDEC and the cross-GPU frame import breaks playback. Same cause, same symptom, same fix.Nothing new since the last comment here changes where it stands: on
quattro, 6ecf4bf gates both variables onbin/omarchy-hw-nvidia-display, so a machine like this one, with every output on the Intel iGPU, leaves them unset. Discussion of the fix and of the counter-case @RajdeepVerma raised, an external display wired to the NVIDIA card, continues on #8215.Claude Opus 5.5 compared the two reports and checked
nvidia.luaonquattro; Codex Medium was asked separately whether they are the same item before this was closed. Nothing was run on a worker, since none has hybrid GPU hardware. If this turns out to be a different problem, it can be reopened.