From 417370b3608a72dbbbce4e0dd9983fcb0d14cf41 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 10 Jul 2024 11:18:38 -0400 Subject: [PATCH] vk/image: fix view creation for planar video aspects drivers do implement this cc: mesa-stable Reviewed-by: Samuel Pitoiset Reviewed-by: Dave Airlie Part-of: (cherry picked from commit c4d6d9254ab2d9b92ee5ece4d6e4cf8fa3facc1a) --- .pick_status.json | 2 +- src/vulkan/runtime/vk_image.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 2f90c2bf757..8dfa572fe85 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -254,7 +254,7 @@ "description": "vk/image: fix view creation for planar video aspects", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/vulkan/runtime/vk_image.c b/src/vulkan/runtime/vk_image.c index 4f6479010ec..36740e00584 100644 --- a/src/vulkan/runtime/vk_image.c +++ b/src/vulkan/runtime/vk_image.c @@ -441,6 +441,12 @@ vk_image_view_init(struct vk_device *device, vk_image_expand_aspect_mask(image, range->aspectMask); assert(!(image_view->aspects & ~image->aspects)); + const VkImageUsageFlags video = VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR | + VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR | + VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR | + VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR | + VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR | + VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR; /* From the Vulkan 1.2.184 spec: * @@ -456,11 +462,10 @@ vk_image_view_init(struct vk_device *device, * be identical to the image format, and the sampler to be used with the * image view must enable sampler Y′CBCR conversion." * - * Since no one implements video yet, we can ignore the bits about video - * create flags and assume YCbCr formats match. */ if ((image->aspects & VK_IMAGE_ASPECT_PLANE_1_BIT) && - (range->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT)) + (range->aspectMask == VK_IMAGE_ASPECT_COLOR_BIT) && + !(image->usage & video)) assert(image_view->format == image->format); /* From the Vulkan 1.2.184 spec: