brave-vulkan complaining about missing implementations #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
WARNING: panvk is not a conformant Vulkan implementation, testing use only.
Warning: Vulkan fragmentStoresAndAtomics feature required.
at InitializeImpl (../../third_party/dawn/src/dawn/native/vulkan/PhysicalDeviceVk.cpp:250)
Warning: Couldn't get proc eglChooseConfig
at LoadClientProcs (../../third_party/dawn/src/dawn/native/opengl/EGLFunctions.cpp:119)
Warning: Couldn't get proc eglChooseConfig
at LoadClientProcs (../../third_party/dawn/src/dawn/native/opengl/EGLFunctions.cpp:119)
[10698:10698:0523/042454.465617:ERROR:services/video_capture/video_capture_service_impl.cc:200] Bind context provider failed.
[10431:10431:0523/042503.595671:ERROR:ui/gfx/x/atom_cache.cc:234] Add application/vnd.portal.filetransfer to kAtomsToCache
[10431:10431:0523/042503.595917:ERROR:ui/gfx/x/atom_cache.cc:234] Add application/vnd.portal.files to kAtomsToCache
[10431:10500:0523/042507.088087:ERROR:content/browser/browser_main_loop.cc:274] GLib: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
[10431:10499:0523/042507.088105:ERROR:content/browser/browser_main_loop.cc:274] GLib: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
[10431:10501:0523/042507.088578:ERROR:content/browser/browser_main_loop.cc:274] GLib: g_main_context_pop_thread_default: assertion 'stack != NULL' failed
[10431:10431:0523/050438.428486:ERROR:mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:748] Message 1 rejected by interface blink.mojom.WidgetHost
[10431:10431:0523/050451.101779:ERROR:components/dbus/xdg/request.cc:169] Request cancelled by user.
[10467:10475:0523/052540.458234:ERROR:net/socket/ssl_client_socket_impl.cc:924] handshake failed; returned -1, SSL error code 1, net_error -101
[10467:10475:0523/052607.606506:ERROR:net/socket/ssl_client_socket_impl.cc:924] handshake failed; returned -1, SSL error code 1, net_error -100
Investigation log (2026-05-23)
What was confirmed
The cited Dawn warning fires because panvk-bifrost on Mesa 26.0.6 reports
fragmentStoresAndAtomics = falsefor Bifrost (PAN_ARCH 7). Sources:mesa-26.0.6/src/panfrost/vulkan/panvk_vX_physical_device.c:.fragmentStoresAndAtomics = (PAN_ARCH >= 10) || instance->force_enable_shader_atomics= trueunconditional — but Mesa main also explicitly considers panvk-on-Bifrost non-conformant.What the workaround does
Mesa 26.0.6 ships a DRI option
pan_force_enable_shader_atomics(driconfpanvk). Drop in~/.drirc:After this,
vulkaninforeports bothfragmentStoresAndAtomicsandvertexPipelineStoresAndAtomicsastrue, and the cited "feature required" warning disappears from brave-vulkan stderr.What the workaround did not fix
Dawn still falls back to
SwiftShader Device (LLVM 10.0.0)for WebGPU.fragmentStoresAndAtomicswas the first feature Dawn's PhysicalDeviceVk init checks; with that fixed, Dawn rejects the panvk adapter silently at some subsequent check (no stderr warning emitted). Need to readthird_party/dawn/src/dawn/native/vulkan/PhysicalDeviceVk.cpp:InitializeImplto enumerate the full requirement list — Dawn checks features in sequence and only logs the first failure.Side observation: GPU compositing flapping
Independent of the Dawn issue, brave's high-level
gpu_compositingstate on this device is brittle:environment.d+ Plasma.desktopoverride +systemctl --user import-environment), chrome://gpu reported Compositing: Hardware accelerated, WebGL/WebGPU clean.Compositing: Software onlywithgpu_compositingexplicitly disabled, even with no drirc, fresh boot, and identical brave-vulkan flags.Local Stategpublock is empty ({}) andexited_cleanly: True— so the persistent-state-poison hypothesis is wrong.--ignore-gpu-blocklistis set;--flag-switches-begin --flag-switches-endis empty; cmdline has no--disable-gpu*flags. Source is therefore neither — possibly an early Vulkan init failure that doesn't surface to stderr.--enable-logging=stderr --v=1 --vmodule=*gpu*=2,*vulkan*=2) on this brave build doesn't emit detail from the gpu-process — likely chromium source-file renames since those vmodule patterns were canonical.Recommended next iterations
Phase 0 / Phase 3 deeper: read
PhysicalDeviceVk.cppsource for the full feature requirement list Dawn enforces; produce a delta between panvk-bifrost's advertised features and Dawn's requirements. This tells us whether the gap is one more feature (small patch) or many features (big campaign or structural "won't fit").Independent compositing investigation: the drirc-flip effect on
gpu_compositingis non-monotonic in this session and needs an instrumentation pass that doesn't depend on chrome://gpu rendering (which uses Polymer/shadow DOM and is hard to extract from). Candidate:strace -f -e openaton the gpu-process during early init to see which mesa libraries get touched and which fail.Upstream signal: Mesa main flipped
fragmentStoresAndAtomicsto unconditionaltrue. If we believe their judgment, we can carry a smallmesa-panvk-bifrostr5 patch doing the same. The 0001-0004 lineage already establishes the precedent. Risk: shaders using actual fragment stores on Bifrost may fail at runtime — needs a CTS subset run to verify before shipping.Open question for issue author
The original symptom that opened this issue was a stderr line during brave-vulkan startup. Was the operator-visible symptom: (a) a perf regression (slow video / slow scrolling), or (b) just the warning text in journalctl with no visible behavior change? If (b), this issue can be tracked as "cosmetic until Dawn matters". If (a), the priority is finding what actually broke compositing, since the fragmentStoresAndAtomics warning is downstream of that.
🤖 investigation by Claude Opus 4.7 / claude-noether
Resolution
Shipped via marfrit-packages#92 → CI run #171 → published as
mesa-panvk-bifrost-26.0.6.r5-1-aarch64.pkg.tar.xzatpackages.reauktion.de/arch/aarch64/.Three-point ship-check (on ohm, fresh
pacman -S)No
~/.drircrequired.What the patch does
Backports Mesa main's unconditional
.fragmentStoresAndAtomics = trueflip insrc/panfrost/vulkan/panvk_vX_physical_device.c. Kept the|| instance->force_enable_shader_atomicsdisjunction as a documented kill-switch (the compiler folds it totruebut the link to the DRI optionpan_force_enable_shader_atomicsstays semantically wired for rebases / downstream debugging).Phase 7 verify (dEQP)
dEQP-VK.glsl.atomic_operations.*dEQP-VK.image.store.*What this does NOT fix
Dawn still falls back to SwiftShader CPU adapter on this device —
fragmentStoresAndAtomicswas the first feature itsPhysicalDeviceVk.cpp:InitializeImplcheck rejected; with that gate cleared, Dawn presumably rejects on a subsequent silent check (no further stderr warning emitted). That work is a separate iteration; opening a follow-up issue if WebGPU HW-accel becomes a need.Closing this issue with the warning resolved at its layer.