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 * queried type bits from both buffer memory requirement and dma_buf fd
* properties. * properties.
*/ */
(*out_buf)->memory_requirements.memoryRequirements.memoryTypeBits &= (*out_buf)->requirements.memory.memoryRequirements.memoryTypeBits &=
dev->ahb_buffer_memory_type_bits; dev->ahb_buffer_memory_type_bits;
assert((*out_buf)->memory_requirements.memoryRequirements.memoryTypeBits); assert((*out_buf)->requirements.memory.memoryRequirements.memoryTypeBits);
return VK_SUCCESS; return VK_SUCCESS;
} }

View file

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

View file

@ -13,11 +13,15 @@
#include "vn_common.h" #include "vn_common.h"
struct vn_buffer_memory_requirements {
VkMemoryRequirements2 memory;
VkMemoryDedicatedRequirements dedicated;
};
struct vn_buffer { struct vn_buffer {
struct vn_object_base base; struct vn_object_base base;
VkMemoryRequirements2 memory_requirements; struct vn_buffer_memory_requirements requirements;
VkMemoryDedicatedRequirements dedicated_requirements;
}; };
VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer, VK_DEFINE_NONDISP_HANDLE_CASTS(vn_buffer,
base.base, 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); 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; return false;
} }