mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-24 11:40:25 +01:00
v3dv: pass alignment to v3dv_buffer_init
Although for any buffer created by the user, or any API that can be called by the user (like GetDeviceBufferMemoryRequirements) the alignment is V3D_NON_COHERENT_ATOM_SIZE, there are internal uses of a buffer that could require a fine-grained alignment (like when used as a alias for a image, that has different alignment requirements). Note that an alternative would have created a v3dv_buffer_init_with_alignment (or similar name), but this option seemed easier. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19950>
This commit is contained in:
parent
77f4885ccb
commit
aa31d38bcf
3 changed files with 10 additions and 7 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue