summaryrefslogtreecommitdiff
path: root/src/intel
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2021-01-28 14:33:19 -0600
committerMarge Bot <eric+marge@anholt.net>2021-02-01 18:54:24 +0000
commitf51155a349186ebf567218eba11e65be2cfb214c (patch)
treea20c38831a371fc454434ea12303bcc9d07fdfe6 /src/intel
parent3536bec0fa01908a1afd28bb3596927c22a98573 (diff)
anv: Make Get*MemoryRequirements a wrapper
Instead of making Get*MemoryRequirements2 call the legacy version to fill out the base struct, put everything in Get*MemoryRequirements2 and make the old one a trivial wrapper. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8676>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/vulkan/anv_device.c79
1 files changed, 45 insertions, 34 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index d00933601fd..42024f869b3 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -3948,12 +3948,28 @@ VkResult anv_InvalidateMappedMemoryRanges(
}
void anv_GetBufferMemoryRequirements(
- VkDevice _device,
- VkBuffer _buffer,
+ VkDevice device,
+ VkBuffer buffer,
VkMemoryRequirements* pMemoryRequirements)
{
- ANV_FROM_HANDLE(anv_buffer, buffer, _buffer);
+ VkBufferMemoryRequirementsInfo2 info = {
+ .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+ .buffer = buffer,
+ };
+ VkMemoryRequirements2 reqs = {
+ .sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+ };
+ anv_GetBufferMemoryRequirements2(device, &info, &reqs);
+ *pMemoryRequirements = reqs.memoryRequirements;
+}
+
+void anv_GetBufferMemoryRequirements2(
+ VkDevice _device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
ANV_FROM_HANDLE(anv_device, device, _device);
+ ANV_FROM_HANDLE(anv_buffer, buffer, pInfo->buffer);
/* The Vulkan spec (git aaed022) says:
*
@@ -3970,8 +3986,8 @@ void anv_GetBufferMemoryRequirements(
if (buffer->usage & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)
alignment = MAX2(alignment, ANV_UBO_ALIGNMENT);
- pMemoryRequirements->size = buffer->size;
- pMemoryRequirements->alignment = alignment;
+ pMemoryRequirements->memoryRequirements.size = buffer->size;
+ pMemoryRequirements->memoryRequirements.alignment = alignment;
/* Storage and Uniform buffers should have their size aligned to
* 32-bits to avoid boundary checks when last DWord is not complete.
@@ -3981,18 +3997,9 @@ void anv_GetBufferMemoryRequirements(
if (device->robust_buffer_access &&
(buffer->usage & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT ||
buffer->usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT))
- pMemoryRequirements->size = align_u64(buffer->size, 4);
+ pMemoryRequirements->memoryRequirements.size = align_u64(buffer->size, 4);
- pMemoryRequirements->memoryTypeBits = memory_types;
-}
-
-void anv_GetBufferMemoryRequirements2(
- VkDevice _device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
- anv_GetBufferMemoryRequirements(_device, pInfo->buffer,
- &pMemoryRequirements->memoryRequirements);
+ pMemoryRequirements->memoryRequirements.memoryTypeBits = memory_types;
vk_foreach_struct(ext, pMemoryRequirements->pNext) {
switch (ext->sType) {
@@ -4011,12 +4018,28 @@ void anv_GetBufferMemoryRequirements2(
}
void anv_GetImageMemoryRequirements(
- VkDevice _device,
- VkImage _image,
+ VkDevice device,
+ VkImage image,
VkMemoryRequirements* pMemoryRequirements)
{
- ANV_FROM_HANDLE(anv_image, image, _image);
+ VkImageMemoryRequirementsInfo2 info = {
+ .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+ .image = image,
+ };
+ VkMemoryRequirements2 reqs = {
+ .sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+ };
+ anv_GetImageMemoryRequirements2(device, &info, &reqs);
+ *pMemoryRequirements = reqs.memoryRequirements;
+}
+
+void anv_GetImageMemoryRequirements2(
+ VkDevice _device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
ANV_FROM_HANDLE(anv_device, device, _device);
+ ANV_FROM_HANDLE(anv_image, image, pInfo->image);
/* The Vulkan spec (git aaed022) says:
*
@@ -4029,21 +4052,9 @@ void anv_GetImageMemoryRequirements(
*/
uint32_t memory_types = (1ull << device->physical->memory.type_count) - 1;
- pMemoryRequirements->size = image->size;
- pMemoryRequirements->alignment = image->alignment;
- pMemoryRequirements->memoryTypeBits = memory_types;
-}
-
-void anv_GetImageMemoryRequirements2(
- VkDevice _device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
- ANV_FROM_HANDLE(anv_device, device, _device);
- ANV_FROM_HANDLE(anv_image, image, pInfo->image);
-
- anv_GetImageMemoryRequirements(_device, pInfo->image,
- &pMemoryRequirements->memoryRequirements);
+ pMemoryRequirements->memoryRequirements.size = image->size;
+ pMemoryRequirements->memoryRequirements.alignment = image->alignment;
+ pMemoryRequirements->memoryRequirements.memoryTypeBits = memory_types;
vk_foreach_struct_const(ext, pInfo->pNext) {
switch (ext->sType) {