From: marfrit-packages noether Subject: [PATCH] panvk: report fragmentStoresAndAtomics = true on Bifrost Backports Mesa main's unconditional advertisement of fragmentStoresAndAtomics for panvk (snapshot ref: src/panfrost/vulkan/ panvk_vX_physical_device.c at commit-time 2026-05-06; the line reads `.fragmentStoresAndAtomics = true,` on main with no PAN_ARCH gate). Motivation: Chromium Dawn's WebGPU initializer in third_party/dawn/src/dawn/native/vulkan/PhysicalDeviceVk.cpp:250 unconditionally rejects any Vulkan adapter that doesn't advertise this feature, causing Dawn to fall back to the SwiftShader CPU adapter on PineTab2 / RK3566 / Mali-G52 r1 MC1 (PAN_ARCH 7). With this patch the device advertises true, satisfying Dawn's gate. Tracked at https://git.reauktion.de/marfrit/panvk-bifrost/issues/2. The disjunction with `instance->force_enable_shader_atomics` is preserved as a kill-switch: in compiler terms it's dead code (`true || X == true`), but it leaves the DRI option `pan_force_enable_shader_atomics` semantically wired so future rebases or downstream debugging can see the link to the runtime knob. Caveat: the existing DRI option's description in src/util/driconf.h still labels this as "may not work reliably and is for debug purposes only". Mesa main's choice to ship it as default-on for all panvk architectures (including Bifrost, which is non-conformant per the PAN_I_WANT_A_BROKEN_VULKAN_DRIVER gate) reflects an upstream judgment that the practical risk is acceptable. Verify-before-ship for this package: dEQP-VK.glsl.atomic_operations.* + dEQP-VK.image.store.* deltas vs the r4 baseline must show no new fails. Pass counts may rise (tests that previously NotSupported now run); the load-bearing line is the Failed column staying at zero. --- src/panfrost/vulkan/panvk_vX_physical_device.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/panfrost/vulkan/panvk_vX_physical_device.c b/src/panfrost/vulkan/panvk_vX_physical_device.c --- a/src/panfrost/vulkan/panvk_vX_physical_device.c +++ b/src/panfrost/vulkan/panvk_vX_physical_device.c @@ -280,8 +280,7 @@ .vertexPipelineStoresAndAtomics = (PAN_ARCH >= 13 && instance->enable_vertex_pipeline_stores_atomics) || instance->force_enable_shader_atomics, - .fragmentStoresAndAtomics = - (PAN_ARCH >= 10) || instance->force_enable_shader_atomics, + .fragmentStoresAndAtomics = true || instance->force_enable_shader_atomics, .shaderTessellationAndGeometryPointSize = false, .shaderImageGatherExtended = true, .shaderStorageImageExtendedFormats = true,