From f52f7bf8d5832be9b335fe8fe5daab99440f0a7d Mon Sep 17 00:00:00 2001 From: squidbus <1249084-squidbus@users.noreply.gitlab.freedesktop.org> Date: Fri, 15 May 2026 14:54:01 -0700 Subject: [PATCH] kk: Support attachment feedback loop extensions Metal GPU image optimization is disabled for attachment feedback usage since it causes some CTS flakes. Reviewed-by: Aitor Camacho Part-of: --- docs/features.txt | 4 ++-- src/kosmickrisp/vulkan/kk_image_layout.c | 10 ++++++++++ src/kosmickrisp/vulkan/kk_physical_device.c | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index 1584e24edd1..de164072c90 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -604,8 +604,8 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_acquire_drm_display DONE (anv, hk, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_acquire_xlib_display DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_astc_decode_mode DONE (panvk) - VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, lvp, panvk, radv, tu, vn) - VK_EXT_attachment_feedback_loop_layout DONE (anv, hk, lvp, nvk, panvk, radv, tu, v3dv, vn) + VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, kk, lvp, panvk, radv, tu, vn) + VK_EXT_attachment_feedback_loop_layout DONE (anv, hk, kk, lvp, nvk, panvk, radv, tu, v3dv, vn) VK_EXT_blend_operation_advanced DONE (hk, lvp, vn) VK_EXT_border_color_swizzle DONE (anv, hasvk, hk, lvp, nvk, panvk, pvr, radv/gfx10+, tu, v3dv, vn) VK_EXT_buffer_device_address DONE (anv, dzn/sm6.6+, hasvk, hk, kk, nvk, panvk, radv, vn) diff --git a/src/kosmickrisp/vulkan/kk_image_layout.c b/src/kosmickrisp/vulkan/kk_image_layout.c index 5b7b0a723f2..b88c0f46e0a 100644 --- a/src/kosmickrisp/vulkan/kk_image_layout.c +++ b/src/kosmickrisp/vulkan/kk_image_layout.c @@ -92,6 +92,16 @@ kk_image_layout_can_optimize(VkImageUsageFlags usage, VkImageTiling tiling, !util_format_is_compressed(format)) return false; + /* Attachment feedback usage may produce incorrect results with + * optimization, causing flakes in CTS + * + * E.g. `dEQP-VK.pipeline.monolithic.attachment_feedback_loop_layout.sampler. + * attachment_feedback_loop_optimal.sampled_image.image_type.2d_unnormalized. + * format.d16_unorm_depth_read_write_different_areas_dynamic_bad_static` + */ + if (usage & VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT) + return false; + return true; } diff --git a/src/kosmickrisp/vulkan/kk_physical_device.c b/src/kosmickrisp/vulkan/kk_physical_device.c index 19eeb07db2e..e9433c4966f 100644 --- a/src/kosmickrisp/vulkan/kk_physical_device.c +++ b/src/kosmickrisp/vulkan/kk_physical_device.c @@ -152,6 +152,8 @@ kk_get_device_extensions(const struct kk_instance *instance, #endif .KHR_workgroup_memory_explicit_layout = true, + .EXT_attachment_feedback_loop_layout = true, + .EXT_attachment_feedback_loop_dynamic_state = true, .EXT_calibrated_timestamps = true, .EXT_depth_clip_control = true, .EXT_extended_dynamic_state3 = true, @@ -359,6 +361,12 @@ kk_get_device_features( .formatA4R4G4B4 = true, .formatA4B4G4R4 = true, + /* VK_EXT_attachment_feedback_loop_layout */ + .attachmentFeedbackLoopLayout = true, + + /* VK_EXT_attachment_feedback_loop_dynamic_state */ + .attachmentFeedbackLoopDynamicState = true, + /* VK_EXT_depth_clip_control */ .depthClipControl = true,