anv: handle new VkBufferViewUsageCreateInfoKHR
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 8 Mar 2023 11:33:21 +0000 (13:33 +0200)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 31 Aug 2023 13:02:52 +0000 (16:02 +0300)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24387>

src/intel/vulkan/anv_image.c

index a0760d2..d2d01d6 100644 (file)
@@ -2951,6 +2951,11 @@ anv_CreateBufferView(VkDevice _device,
    if (!view)
       return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
 
+   const VkBufferUsageFlags2CreateInfoKHR *view_usage_info =
+      vk_find_struct_const(pCreateInfo->pNext, BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR);
+   const VkBufferUsageFlags buffer_usage =
+      view_usage_info != NULL ? view_usage_info->usage : buffer->vk.usage;
+
    struct anv_format_plane format;
    format = anv_get_format_plane(device->info, pCreateInfo->format,
                                  0, VK_IMAGE_TILING_LINEAR);
@@ -2961,7 +2966,7 @@ anv_CreateBufferView(VkDevice _device,
 
    view->address = anv_address_add(buffer->address, pCreateInfo->offset);
 
-   if (buffer->vk.usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
+   if (buffer_usage & VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT) {
       view->general.state = maybe_alloc_surface_state(device);
 
       anv_fill_buffer_view_surface_state(device,
@@ -2974,7 +2979,7 @@ anv_CreateBufferView(VkDevice _device,
       view->general.state = ANV_STATE_NULL;
    }
 
-   if (buffer->vk.usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) {
+   if (buffer_usage & VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT) {
       view->storage.state = maybe_alloc_surface_state(device);
 
       anv_fill_buffer_view_surface_state(device,