From a183cac8aad9a3163bec256a23b7f8d4501cf193 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 7 Aug 2026 14:55:27 +0200 Subject: [PATCH] diag(vkdecode): log maxLevelIdc beside the decode flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Arc returned decode_flags=0b1100 = 12 with a fully populated base struct (15 DPB slots, 8192x8192 max extent). Neither COINCIDE (0x1) nor DISTINCT (0x2) is set, and 0x4|0x8 are not defined for that field at all — but 12 IS STD_VIDEO_H265_LEVEL_IDC_6_2, and VkVideoDecodeCapabilitiesKHR and VkVideoDecodeH265CapabilitiesKHR have identical layouts (sType, pNext, one u32). So the suspicion is that we are reading H.265's maxLevelIdc where the decode flags belong. Logging both settles it: if max_level_idc comes back as 1 or 2 the two structs are crossed, and the refusal is ours rather than the driver's. --- crates/pf-vkdecode/src/caps_h265.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/pf-vkdecode/src/caps_h265.rs b/crates/pf-vkdecode/src/caps_h265.rs index bed9cce1..d19852e7 100644 --- a/crates/pf-vkdecode/src/caps_h265.rs +++ b/crates/pf-vkdecode/src/caps_h265.rs @@ -320,6 +320,8 @@ pub(crate) unsafe fn query_h265_caps( codec = "H.265", ?capability_flags, ?decode_flags, + decode_flags_raw = decode_flags.as_raw(), + max_level_idc, max_dpb_slots, max_active_reference_pictures, ?min_coded_extent,