diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index d0f4cc7ebe7..3a958573049 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -2699,12 +2699,13 @@ v3dv_BindImageMemory2(VkDevice _device, void v3dv_buffer_init(struct v3dv_device *device, - const VkBufferCreateInfo *pCreateInfo, - struct v3dv_buffer *buffer) + const VkBufferCreateInfo *pCreateInfo, + struct v3dv_buffer *buffer, + uint32_t alignment) { buffer->size = pCreateInfo->size; buffer->usage = pCreateInfo->usage; - buffer->alignment = V3D_NON_COHERENT_ATOM_SIZE; + buffer->alignment = alignment; } static void @@ -2751,7 +2752,7 @@ v3dv_GetDeviceBufferMemoryRequirementsKHR( V3DV_FROM_HANDLE(v3dv_device, device, _device); struct v3dv_buffer buffer = { 0 }; - v3dv_buffer_init(device, pInfo->pCreateInfo, &buffer); + v3dv_buffer_init(device, pInfo->pCreateInfo, &buffer, V3D_NON_COHERENT_ATOM_SIZE); get_buffer_memory_requirements(&buffer, pMemoryRequirements); } @@ -2806,7 +2807,7 @@ v3dv_CreateBuffer(VkDevice _device, if (buffer == NULL) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - v3dv_buffer_init(device, pCreateInfo, buffer); + v3dv_buffer_init(device, pCreateInfo, buffer, V3D_NON_COHERENT_ATOM_SIZE); /* Limit allocations to 32-bit */ const VkDeviceSize aligned_size = align64(buffer->size, buffer->alignment); diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index 5129ab2ade9..ac00eaa5e35 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -1246,7 +1246,8 @@ copy_image_linear_texel_buffer(struct v3dv_cmd_buffer *cmd_buffer, .usage = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, .sharingMode = VK_SHARING_MODE_EXCLUSIVE, }; - v3dv_buffer_init(cmd_buffer->device, &buf_create_info, &src_buffer); + v3dv_buffer_init(cmd_buffer->device, &buf_create_info, &src_buffer, + src->alignment); const VkBindBufferMemoryInfo buf_bind_info = { .sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 85209fc67a4..0628d4307d9 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -736,7 +736,8 @@ struct v3dv_buffer { void v3dv_buffer_init(struct v3dv_device *device, const VkBufferCreateInfo *pCreateInfo, - struct v3dv_buffer *buffer); + struct v3dv_buffer *buffer, + uint32_t alignment); void v3dv_buffer_bind_memory(const VkBindBufferMemoryInfo *info);