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);
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,
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,