venus: add struct vn_buffer_memory_requirements

This will simplify later buffer cache api.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13428>
This commit is contained in:
Yiwei Zhang 2021-10-21 05:56:30 +00:00 committed by Marge Bot
parent 927dea7c34
commit b108e096d1
4 changed files with 18 additions and 14 deletions

View file

@ -1237,10 +1237,10 @@ vn_android_buffer_from_ahb(struct vn_device *dev,
* queried type bits from both buffer memory requirement and dma_buf fd
* properties.
*/
(*out_buf)->memory_requirements.memoryRequirements.memoryTypeBits &=
(*out_buf)->requirements.memory.memoryRequirements.memoryTypeBits &=
dev->ahb_buffer_memory_type_bits;
assert((*out_buf)->memory_requirements.memoryRequirements.memoryTypeBits);
assert((*out_buf)->requirements.memory.memoryRequirements.memoryTypeBits);
return VK_SUCCESS;
}

View file

@ -33,11 +33,11 @@ vn_buffer_init(struct vn_device *dev,
if (result != VK_SUCCESS)
return result;
buf->memory_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
buf->memory_requirements.pNext = &buf->dedicated_requirements;
buf->dedicated_requirements.sType =
buf->requirements.memory.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
buf->requirements.memory.pNext = &buf->requirements.dedicated;
buf->requirements.dedicated.sType =
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
buf->dedicated_requirements.pNext = NULL;
buf->requirements.dedicated.pNext = NULL;
vn_call_vkGetBufferMemoryRequirements2(
dev->instance, dev_handle,
@ -45,7 +45,7 @@ vn_buffer_init(struct vn_device *dev,
.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
.buffer = buf_handle,
},
&buf->memory_requirements);
&buf->requirements.memory);
return VK_SUCCESS;
}
@ -156,7 +156,7 @@ vn_GetBufferMemoryRequirements(VkDevice device,
{
const struct vn_buffer *buf = vn_buffer_from_handle(buffer);
*pMemoryRequirements = buf->memory_requirements.memoryRequirements;
*pMemoryRequirements = buf->requirements.memory.memoryRequirements;
}
void
@ -175,13 +175,13 @@ vn_GetBufferMemoryRequirements2(VkDevice device,
switch (u.pnext->sType) {
case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:
u.two->memoryRequirements =
buf->memory_requirements.memoryRequirements;
buf->requirements.memory.memoryRequirements;
break;
case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
u.dedicated->prefersDedicatedAllocation =
buf->dedicated_requirements.prefersDedicatedAllocation;
buf->requirements.dedicated.prefersDedicatedAllocation;
u.dedicated->requiresDedicatedAllocation =
buf->dedicated_requirements.requiresDedicatedAllocation;
buf->requirements.dedicated.requiresDedicatedAllocation;
break;
default:
break;

View file

@ -13,11 +13,15 @@
#include "vn_common.h"
struct vn_buffer_memory_requirements {
VkMemoryRequirements2 memory;
VkMemoryDedicatedRequirements dedicated;
};
struct vn_buffer {
struct vn_object_base base;
VkMemoryRequirements2 memory_requirements;
VkMemoryDedicatedRequirements dedicated_requirements;
struct vn_buffer_memory_requirements requirements;
};
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer,
base.base,

View file

@ -213,7 +213,7 @@ vn_device_memory_should_suballocate(const VkMemoryAllocateInfo *alloc_info,
}
const struct vn_buffer *buf = vn_buffer_from_handle(dedicated->buffer);
if (buf && buf->dedicated_requirements.requiresDedicatedAllocation)
if (buf && buf->requirements.dedicated.requiresDedicatedAllocation)
return false;
}