diff --git a/src/vulkan/anv_cmd_buffer.c b/src/vulkan/anv_cmd_buffer.c index 0531cd80f4f..fa6943689d8 100644 --- a/src/vulkan/anv_cmd_buffer.c +++ b/src/vulkan/anv_cmd_buffer.c @@ -731,8 +731,8 @@ anv_cmd_buffer_emit_binding_table(struct anv_cmd_buffer *cmd_buffer, case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: surface_state = desc->buffer_view->surface_state; - bo = desc->buffer_view->buffer->bo; - bo_offset = desc->buffer_view->buffer->offset; + bo = desc->buffer_view->bo; + bo_offset = desc->buffer_view->offset; break; case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: diff --git a/src/vulkan/anv_image.c b/src/vulkan/anv_image.c index 3b3751ad1e1..dcad2affb2c 100644 --- a/src/vulkan/anv_image.c +++ b/src/vulkan/anv_image.c @@ -512,7 +512,9 @@ anv_CreateBufferView(VkDevice _device, if (!view) return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); - view->buffer = buffer; + view->bo = buffer->bo; + view->offset = buffer->offset + pCreateInfo->offset; + view->surface_state = anv_state_pool_alloc(&device->surface_state_pool, 64, 64); @@ -520,7 +522,7 @@ anv_CreateBufferView(VkDevice _device, anv_format_for_vk_format(pCreateInfo->format); anv_fill_buffer_surface_state(device, view->surface_state.map, format, - pCreateInfo->offset, pCreateInfo->range, + view->offset, pCreateInfo->range, format->isl_layout->bpb / 8); *pView = anv_buffer_view_to_handle(view); diff --git a/src/vulkan/anv_private.h b/src/vulkan/anv_private.h index 07854d3e357..d2b65711fc4 100644 --- a/src/vulkan/anv_private.h +++ b/src/vulkan/anv_private.h @@ -1517,7 +1517,9 @@ gen9_image_view_init(struct anv_image_view *iview, struct anv_cmd_buffer *cmd_buffer); struct anv_buffer_view { - struct anv_buffer *buffer; + struct anv_bo *bo; + uint32_t offset; /**< Offset into bo. */ + struct anv_state surface_state; };