7708744eb2
Backports Mesa main's unconditional flip of VK_EXT_legacy_dithering.
Pure-software composition; no new HW path. 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). Our r5 base
just hadn't picked up the cherry-pick.
Phase 7 verify on ohm (PineTab2 / RK3566 / Mali-G52 r1 MC1) with a
locally-built r6 lib at /tmp/r6_test_lib/:
Feature advertisement:
r5: VK_EXT_legacy_dithering not in extension list, legacyDithering=false
r6: VK_EXT_legacy_dithering rev 2 advertised, legacyDithering=true
dEQP subsets (delta):
dEQP-VK.api.*.legacy_dithering* r5/r6 both: 2 P / 0 F (identical)
dEQP-VK.renderpass.dithering.* r5/r6 both: 0 P / 0 F / 94 NS (identical)
dEQP-VK.renderpass2.dithering.* r5/r6 both: 0 P / 0 F / 94 NS (identical)
Net: zero regressions, advertisement-only delta as expected.
Second-model review (per bugfix-process step 4) traced the full code
path through vk_render_pass + panvk_vX_cmd_draw + panvk_vX_blend +
pan_format BFMT2. No interaction with our r1 nullDescriptor (disjoint
paths). Mesa upstream marks ext DONE for panvk in docs/features.txt.
ARM's own libmali r51p0 driver (BXODROIDN2PL, 2024-08) lists
VK_EXT_legacy_dithering in its Vulkan extension string table,
confirming the feature is shipped by ARM for Mali-G52-class hardware.
Follow-up out of scope: the 94 renderpass-dithering tests show as
NotSupported on both r5 and r6 — there's a separate panvk-side
prereq the dEQP harness checks (likely a specific format-feature
combination). Worth investigating in a future iteration.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
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,
|
|
};
|
|
}
|
|
|