Mesa (main): venus: add struct vn_image_memory_requirements
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Oct 28 00:33:48 UTC 2021
Module: Mesa
Branch: main
Commit: fc237f80c6142171df695ecbfc3c981262672997
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc237f80c6142171df695ecbfc3c981262672997
Author: Yiwei Zhang <zzyiwei at chromium.org>
Date: Thu Oct 21 06:06:10 2021 +0000
venus: add struct vn_image_memory_requirements
This aligns with vn_buffer_memory_requirements and can potentially
simplify future image memory requirements cache init.
Signed-off-by: Yiwei Zhang <zzyiwei at chromium.org>
Reviewed-by: Chia-I Wu <olvaffe at gmail.com>
Reviewed-by: Ryan Neph <ryanneph at google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13428>
---
src/virtio/vulkan/vn_device_memory.c | 5 ++---
src/virtio/vulkan/vn_image.c | 26 +++++++++++++-------------
src/virtio/vulkan/vn_image.h | 8 ++++++--
3 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/src/virtio/vulkan/vn_device_memory.c b/src/virtio/vulkan/vn_device_memory.c
index 43ae4d162a7..c281794e789 100644
--- a/src/virtio/vulkan/vn_device_memory.c
+++ b/src/virtio/vulkan/vn_device_memory.c
@@ -205,9 +205,8 @@ vn_device_memory_should_suballocate(const VkMemoryAllocateInfo *alloc_info,
const struct vn_image *img = vn_image_from_handle(dedicated->image);
if (img) {
- for (uint32_t i = 0; i < ARRAY_SIZE(img->dedicated_requirements);
- i++) {
- if (img->dedicated_requirements[i].requiresDedicatedAllocation)
+ for (uint32_t i = 0; i < ARRAY_SIZE(img->requirements); i++) {
+ if (img->requirements[i].dedicated.requiresDedicatedAllocation)
return false;
}
}
diff --git a/src/virtio/vulkan/vn_image.c b/src/virtio/vulkan/vn_image.c
index 88a3c7bce77..2dd63309927 100644
--- a/src/virtio/vulkan/vn_image.c
+++ b/src/virtio/vulkan/vn_image.c
@@ -60,16 +60,16 @@ vn_image_init_memory_requirements(struct vn_image *img,
break;
}
}
- assert(plane_count <= ARRAY_SIZE(img->memory_requirements));
+ assert(plane_count <= ARRAY_SIZE(img->requirements));
/* TODO add a per-device cache for the requirements */
for (uint32_t i = 0; i < plane_count; i++) {
- img->memory_requirements[i].sType =
+ img->requirements[i].memory.sType =
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
- img->memory_requirements[i].pNext = &img->dedicated_requirements[i];
- img->dedicated_requirements[i].sType =
+ img->requirements[i].memory.pNext = &img->requirements[i].dedicated;
+ img->requirements[i].dedicated.sType =
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
- img->dedicated_requirements[i].pNext = NULL;
+ img->requirements[i].dedicated.pNext = NULL;
}
VkDevice dev_handle = vn_device_to_handle(dev);
@@ -81,12 +81,12 @@ vn_image_init_memory_requirements(struct vn_image *img,
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
.image = img_handle,
},
- &img->memory_requirements[0]);
+ &img->requirements[0].memory);
/* AHB backed image requires dedicated allocation */
if (img->deferred_info) {
- img->dedicated_requirements[0].prefersDedicatedAllocation = VK_TRUE;
- img->dedicated_requirements[0].requiresDedicatedAllocation = VK_TRUE;
+ img->requirements[0].dedicated.prefersDedicatedAllocation = VK_TRUE;
+ img->requirements[0].dedicated.requiresDedicatedAllocation = VK_TRUE;
}
} else {
for (uint32_t i = 0; i < plane_count; i++) {
@@ -102,7 +102,7 @@ vn_image_init_memory_requirements(struct vn_image *img,
},
.image = img_handle,
},
- &img->memory_requirements[i]);
+ &img->requirements[i].memory);
}
}
}
@@ -314,7 +314,7 @@ vn_GetImageMemoryRequirements(VkDevice device,
{
const struct vn_image *img = vn_image_from_handle(image);
- *pMemoryRequirements = img->memory_requirements[0].memoryRequirements;
+ *pMemoryRequirements = img->requirements[0].memory.memoryRequirements;
}
void
@@ -366,13 +366,13 @@ vn_GetImageMemoryRequirements2(VkDevice device,
switch (u.pnext->sType) {
case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:
u.two->memoryRequirements =
- img->memory_requirements[plane].memoryRequirements;
+ img->requirements[plane].memory.memoryRequirements;
break;
case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
u.dedicated->prefersDedicatedAllocation =
- img->dedicated_requirements[plane].prefersDedicatedAllocation;
+ img->requirements[plane].dedicated.prefersDedicatedAllocation;
u.dedicated->requiresDedicatedAllocation =
- img->dedicated_requirements[plane].requiresDedicatedAllocation;
+ img->requirements[plane].dedicated.requiresDedicatedAllocation;
break;
default:
break;
diff --git a/src/virtio/vulkan/vn_image.h b/src/virtio/vulkan/vn_image.h
index a61319912cc..f91d5294aea 100644
--- a/src/virtio/vulkan/vn_image.h
+++ b/src/virtio/vulkan/vn_image.h
@@ -18,6 +18,11 @@
*/
#define VN_PRESENT_SRC_INTERNAL_LAYOUT VK_IMAGE_LAYOUT_GENERAL
+struct vn_image_memory_requirements {
+ VkMemoryRequirements2 memory;
+ VkMemoryDedicatedRequirements dedicated;
+};
+
struct vn_image_create_deferred_info {
VkImageCreateInfo create;
VkImageFormatListCreateInfo list;
@@ -29,8 +34,7 @@ struct vn_image {
VkSharingMode sharing_mode;
- VkMemoryRequirements2 memory_requirements[4];
- VkMemoryDedicatedRequirements dedicated_requirements[4];
+ struct vn_image_memory_requirements requirements[4];
bool is_wsi;
bool is_prime_blit_src;
More information about the mesa-commit
mailing list