anv/image: Use aspects for computing full usage
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 14 May 2016 00:00:58 +0000 (17:00 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 17 May 2016 19:17:22 +0000 (12:17 -0700)
src/intel/vulkan/anv_image.c

index 704ca9f7caf5299d0453ff07f546ee73f5da8fa5..792645d5cea928d841485c8aa4bb084a9d95cae9 100644 (file)
@@ -161,7 +161,7 @@ make_surface(const struct anv_device *dev,
  */
 static VkImageUsageFlags
 anv_image_get_full_usage(const VkImageCreateInfo *info,
-                         const struct anv_format *format)
+                         VkImageAspectFlags aspects)
 {
    VkImageUsageFlags usage = info->usage;
 
@@ -183,7 +183,7 @@ anv_image_get_full_usage(const VkImageCreateInfo *info,
        */
       usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
 
-      if (anv_format_is_depth_or_stencil(format)) {
+      if (aspects & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
          /* vkCmdClearDepthStencilImage() only requires that
           * VK_IMAGE_USAGE_TRANSFER_SRC_BIT be set. In particular, it does
           * not require VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT. Meta
@@ -206,7 +206,6 @@ anv_image_create(VkDevice _device,
    ANV_FROM_HANDLE(anv_device, device, _device);
    const VkImageCreateInfo *pCreateInfo = create_info->vk_info;
    struct anv_image *image = NULL;
-   const struct anv_format *format = anv_format_for_vk_format(pCreateInfo->format);
    VkResult r;
 
    assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO);
@@ -231,7 +230,7 @@ anv_image_create(VkDevice _device,
    image->levels = pCreateInfo->mipLevels;
    image->array_size = pCreateInfo->arrayLayers;
    image->samples = pCreateInfo->samples;
-   image->usage = anv_image_get_full_usage(pCreateInfo, format);
+   image->usage = anv_image_get_full_usage(pCreateInfo, image->aspects);
    image->tiling = pCreateInfo->tiling;
 
    uint32_t b;