Merge pull request 'mesa-panvk-bifrost: r5 -> r6 — advertise VK_EXT_legacy_dithering on Bifrost' (#94) from claude-noether/marfrit-packages:noether/mesa-panvk-bifrost-r6-legacy-dithering into main
build and publish packages / distcc-avahi-aarch64 (push) Successful in 6s
build and publish packages / mesa-panvk-bifrost-aarch64 (push) Successful in 5m50s
build and publish packages / mesa-panvk-bifrost-video-aarch64 (push) Successful in 4s
build and publish packages / lmcp-any (push) Successful in 4s
build and publish packages / lmcp-debian (push) Successful in 6s
build and publish packages / claude-his-any (push) Successful in 6s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 9s
build and publish packages / claude-his-debian (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-debian (push) Successful in 8s
build and publish packages / libva-v4l2-request-fourier-aarch64 (push) Successful in 8s
build and publish packages / daedalus-v4l2-debian (push) Successful in 9s
build and publish packages / mpv-fourier-aarch64 (push) Successful in 5s
build and publish packages / libva-v4l2-request-fourier-debian (push) Successful in 5s
build and publish packages / daedalus-v4l2-dkms-debian (push) Successful in 4s
build and publish packages / mpv-fourier-debian (push) Successful in 6s
build and publish packages / distcc-avahi-aarch64 (push) Successful in 6s
build and publish packages / mesa-panvk-bifrost-aarch64 (push) Successful in 5m50s
build and publish packages / mesa-panvk-bifrost-video-aarch64 (push) Successful in 4s
build and publish packages / lmcp-any (push) Successful in 4s
build and publish packages / lmcp-debian (push) Successful in 6s
build and publish packages / claude-his-any (push) Successful in 6s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 9s
build and publish packages / claude-his-debian (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-debian (push) Successful in 8s
build and publish packages / libva-v4l2-request-fourier-aarch64 (push) Successful in 8s
build and publish packages / daedalus-v4l2-debian (push) Successful in 9s
build and publish packages / mpv-fourier-aarch64 (push) Successful in 5s
build and publish packages / libva-v4l2-request-fourier-debian (push) Successful in 5s
build and publish packages / daedalus-v4l2-dkms-debian (push) Successful in 4s
build and publish packages / mpv-fourier-debian (push) Successful in 6s
Reviewed-on: #94
This commit was merged in pull request #94.
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
From: marfrit-packages noether <claude-noether@reauktion.de>
|
||||||
|
Subject: [PATCH] panvk: advertise VK_EXT_legacy_dithering on Bifrost
|
||||||
|
|
||||||
|
Backports Mesa main's flip — vanilla 26.0.6 doesn't have the extension
|
||||||
|
in the panvk advertisement list; main does (line 172 / 647 on snapshot
|
||||||
|
617da94, 2026-05-06).
|
||||||
|
|
||||||
|
VK_EXT_legacy_dithering exposes the classic OpenGL-style dithering
|
||||||
|
behavior to Vulkan apps. Pure-software composition; no new HW path.
|
||||||
|
ARM's own libmali driver release r51p0 (BXODROIDN2PL, Aug 2024) lists
|
||||||
|
this extension in its Vulkan implementation for ODROID-N2 boards
|
||||||
|
using the same Mali-G52 architecture family — confirms ARM ships it
|
||||||
|
for Mali-G52-class hardware.
|
||||||
|
|
||||||
|
Consumer benefit: dithering matters for low-bit-depth framebuffers
|
||||||
|
(RGB565 / RGB5A1 — common on portable / battery-saving renders)
|
||||||
|
where banding is visible. DXVK / vkd3d-proton both opt in when
|
||||||
|
available.
|
||||||
|
|
||||||
|
Verify-before-ship: vulkaninfo lists the extension and
|
||||||
|
VkPhysicalDeviceLegacyDitheringFeaturesEXT.legacyDithering == true.
|
||||||
|
|
||||||
|
Cross-refs:
|
||||||
|
- marfrit/panvk-bifrost research/r6_r7_mali_g52_feature_audit_2026-05-24.md
|
||||||
|
- ARM blob r51p0 strings dump (in-blob extension confirmed)
|
||||||
|
|
||||||
|
---
|
||||||
|
src/panfrost/vulkan/panvk_vX_physical_device.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
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
|
||||||
|
@@ -156,6 +156,7 @@
|
||||||
|
.EXT_image_drm_format_modifier = true,
|
||||||
|
.EXT_image_robustness = true,
|
||||||
|
.EXT_index_type_uint8 = true,
|
||||||
|
+ .EXT_legacy_dithering = true,
|
||||||
|
.EXT_line_rasterization = true,
|
||||||
|
.EXT_load_store_op_none = true,
|
||||||
|
.EXT_non_seamless_cube_map = true,
|
||||||
|
@@ -552,6 +553,9 @@
|
||||||
|
|
||||||
|
/* VK_EXT_multisampled_render_to_single_sampled */
|
||||||
|
.multisampledRenderToSingleSampled = true,
|
||||||
|
+
|
||||||
|
+ /* VK_EXT_legacy_dithering */
|
||||||
|
+ .legacyDithering = true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
pkgname=mesa-panvk-bifrost
|
pkgname=mesa-panvk-bifrost
|
||||||
_mesaver=26.0.6
|
_mesaver=26.0.6
|
||||||
pkgver=26.0.6.r5
|
pkgver=26.0.6.r6
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Patched Mesa libvulkan_panfrost.so exposing Bifrost-gen Mali to Vulkan apps (panvk-bifrost campaign)"
|
pkgdesc="Patched Mesa libvulkan_panfrost.so exposing Bifrost-gen Mali to Vulkan apps (panvk-bifrost campaign)"
|
||||||
arch=('aarch64')
|
arch=('aarch64')
|
||||||
@@ -82,6 +82,7 @@ source=(
|
|||||||
"0003-panvk-bifrost-vk-ext-transform-feedback.patch"
|
"0003-panvk-bifrost-vk-ext-transform-feedback.patch"
|
||||||
"0004-panvk-bifrost-xfb-primitive-decomposition.patch"
|
"0004-panvk-bifrost-xfb-primitive-decomposition.patch"
|
||||||
"0005-panvk-bifrost-fragment-stores-atomics.patch"
|
"0005-panvk-bifrost-fragment-stores-atomics.patch"
|
||||||
|
"0006-panvk-bifrost-legacy-dithering.patch"
|
||||||
"brave-vulkan"
|
"brave-vulkan"
|
||||||
"icd.json"
|
"icd.json"
|
||||||
)
|
)
|
||||||
@@ -94,6 +95,7 @@ sha256sums=(
|
|||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
)
|
)
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
@@ -140,6 +142,16 @@ prepare() {
|
|||||||
# dEQP-VK.image.store.* show no new Failed vs r4 baseline.
|
# dEQP-VK.image.store.* show no new Failed vs r4 baseline.
|
||||||
patch -p1 < "${srcdir}/0005-panvk-bifrost-fragment-stores-atomics.patch"
|
patch -p1 < "${srcdir}/0005-panvk-bifrost-fragment-stores-atomics.patch"
|
||||||
|
|
||||||
|
# r6 (2026-05-25): advertise VK_EXT_legacy_dithering. Backports Mesa
|
||||||
|
# main's unconditional flip. Pure-software composition; vk_render_pass
|
||||||
|
# already gates on enabled_features.legacyDithering and panvk_vX_blend
|
||||||
|
# + pan_format already plumb the dithered BLEND descriptor (BFMT2 table
|
||||||
|
# has MALI_BLEND_AU encodings for RGB565/RGB5A1/RGBA4/RGB10A2 on
|
||||||
|
# PAN_ARCH 7). Closes the EXT_legacy_dithering gap surfaced by
|
||||||
|
# marfrit/panvk-bifrost research/r6_r7_*. ARM blob r51p0 confirms the
|
||||||
|
# extension as Mali-G52-architecture supported.
|
||||||
|
patch -p1 < "${srcdir}/0006-panvk-bifrost-legacy-dithering.patch"
|
||||||
|
|
||||||
# Sanity-check the patches landed.
|
# Sanity-check the patches landed.
|
||||||
grep -q "KHR_robustness2 = true," src/panfrost/vulkan/panvk_vX_physical_device.c
|
grep -q "KHR_robustness2 = true," src/panfrost/vulkan/panvk_vX_physical_device.c
|
||||||
grep -q "EXT_robustness2 = true," src/panfrost/vulkan/panvk_vX_physical_device.c
|
grep -q "EXT_robustness2 = true," src/panfrost/vulkan/panvk_vX_physical_device.c
|
||||||
@@ -153,6 +165,9 @@ prepare() {
|
|||||||
grep -q "panvk_per_arch(nir_lower_xfb)" src/panfrost/vulkan/panvk_vX_shader.c
|
grep -q "panvk_per_arch(nir_lower_xfb)" src/panfrost/vulkan/panvk_vX_shader.c
|
||||||
# r5 sanity: fragmentStoresAndAtomics = true patch landed
|
# r5 sanity: fragmentStoresAndAtomics = true patch landed
|
||||||
grep -q "fragmentStoresAndAtomics = true ||" src/panfrost/vulkan/panvk_vX_physical_device.c
|
grep -q "fragmentStoresAndAtomics = true ||" src/panfrost/vulkan/panvk_vX_physical_device.c
|
||||||
|
# r6 sanity: VK_EXT_legacy_dithering advertised
|
||||||
|
grep -q '\.EXT_legacy_dithering = true,' src/panfrost/vulkan/panvk_vX_physical_device.c
|
||||||
|
grep -q '\.legacyDithering = true,' src/panfrost/vulkan/panvk_vX_physical_device.c
|
||||||
grep -q "xfb_topology" src/panfrost/vulkan/panvk_shader.h
|
grep -q "xfb_topology" src/panfrost/vulkan/panvk_shader.h
|
||||||
grep -q "panvk_xfb_topology" src/panfrost/vulkan/panvk_shader.h
|
grep -q "panvk_xfb_topology" src/panfrost/vulkan/panvk_shader.h
|
||||||
test -f src/panfrost/vulkan/panvk_vX_xfb_lower.c
|
test -f src/panfrost/vulkan/panvk_vX_xfb_lower.c
|
||||||
|
|||||||
Reference in New Issue
Block a user