anv/image: allow VK_IMAGE_CREATE_ALIAS_BIT with a private binding.
authorHyunjun Ko <zzoon@igalia.com>
Wed, 12 Apr 2023 05:24:44 +0000 (14:24 +0900)
committerMarge Bot <emma+marge@anholt.net>
Fri, 19 May 2023 06:15:01 +0000 (06:15 +0000)
when the image is for video decoding.

Signed-off-by: Hyunjun Ko <zzoon@igalia.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22202>

src/intel/vulkan/anv_image.c

index 751e93c..267f783 100644 (file)
@@ -974,10 +974,12 @@ check_memory_bindings(const struct anv_device *device,
          : ANV_IMAGE_MEMORY_BINDING_MAIN;
 
       /* Aliasing is incompatible with the private binding because it does not
-       * live in a VkDeviceMemory.  The one exception is swapchain images.
+       * live in a VkDeviceMemory.  The exception is either swapchain images or
+       * that the private binding is for a video motion vector buffer.
        */
       assert(!(image->vk.create_flags & VK_IMAGE_CREATE_ALIAS_BIT) ||
              image->from_wsi ||
+             (plane->primary_surface.isl.usage & ISL_SURF_USAGE_VIDEO_DECODE_BIT) ||
              image->bindings[ANV_IMAGE_MEMORY_BINDING_PRIVATE].memory_range.size == 0);
 
       /* Check primary surface */