Mesa (main): v3dv: keep track of whether an image may be backed by external memory

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 27 07:23:13 UTC 2021


Module: Mesa
Branch: main
Commit: e60b009271faa4b42ed20872d6ec08afbee058b4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e60b009271faa4b42ed20872d6ec08afbee058b4

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed May 26 09:33:12 2021 +0200

v3dv: keep track of whether an image may be backed by external memory

Such images will always require dedicated allocations.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11002>

---

 src/broadcom/vulkan/v3dv_image.c   | 4 ++++
 src/broadcom/vulkan/v3dv_private.h | 1 +
 2 files changed, 5 insertions(+)

diff --git a/src/broadcom/vulkan/v3dv_image.c b/src/broadcom/vulkan/v3dv_image.c
index f1b06586ede..b42ccd25f66 100644
--- a/src/broadcom/vulkan/v3dv_image.c
+++ b/src/broadcom/vulkan/v3dv_image.c
@@ -296,6 +296,9 @@ v3dv_CreateImage(VkDevice _device,
          modifier = DRM_FORMAT_MOD_LINEAR;
    }
 
+   const VkExternalMemoryImageCreateInfo *external_info =
+      vk_find_struct_const(pCreateInfo->pNext, EXTERNAL_MEMORY_IMAGE_CREATE_INFO);
+
    /* 1D and 1D_ARRAY textures are always raster-order */
    VkImageTiling tiling;
    if (pCreateInfo->imageType == VK_IMAGE_TYPE_1D)
@@ -332,6 +335,7 @@ v3dv_CreateImage(VkDevice _device,
    image->drm_format_mod = modifier;
    image->tiling = tiling;
    image->tiled = tiling == VK_IMAGE_TILING_OPTIMAL;
+   image->external = external_info != NULL;
 
    image->cpp = vk_format_get_blocksize(image->vk_format);
 
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index 90a14206757..cf04f556a32 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -518,6 +518,7 @@ struct v3dv_image {
 
    uint64_t drm_format_mod;
    bool tiled;
+   bool external;
 
    struct v3d_resource_slice slices[V3D_MAX_MIP_LEVELS];
    uint64_t size; /* Total size in bytes */



More information about the mesa-commit mailing list