diff --git a/src/vulkan/runtime/vk_image.c b/src/vulkan/runtime/vk_image.c index 09acb91be1e..fca763c9ae9 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: