Mesa (main): vulkan/wsi: replace prime_blit_buffer by a bool

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jul 23 22:49:16 UTC 2021


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

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Fri Jul 23 14:31:30 2021 -0700

vulkan/wsi: replace prime_blit_buffer by a bool

venus only needs to know if a WSI image is a prime blit source.  In an
upcoming swapchain image rework, the prime blit destination is unknown
when the WSI image is created.  Replace prime_blit_buffer by a bool.

Signed-off-by: Chia-I Wu <olvaffe at gmail.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12046>

---

 src/virtio/vulkan/vn_command_buffer.c | 5 +++--
 src/virtio/vulkan/vn_image.h          | 2 +-
 src/virtio/vulkan/vn_wsi.c            | 2 +-
 src/vulkan/wsi/wsi_common.h           | 6 ++----
 src/vulkan/wsi/wsi_common_drm.c       | 2 +-
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c
index eb0a9f6d04e..afb2ed71299 100644
--- a/src/virtio/vulkan/vn_command_buffer.c
+++ b/src/virtio/vulkan/vn_command_buffer.c
@@ -132,7 +132,7 @@ vn_cmd_fix_image_memory_barrier(const struct vn_command_buffer *cmd,
       return;
 
    /* prime blit src or no layout transition */
-   if (img->prime_blit_buffer != VK_NULL_HANDLE ||
+   if (img->is_prime_blit_src ||
        out_barrier->oldLayout == out_barrier->newLayout) {
       if (out_barrier->oldLayout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR)
          out_barrier->oldLayout = VN_PRESENT_SRC_INTERNAL_LAYOUT;
@@ -1228,8 +1228,9 @@ vn_CmdCopyImageToBuffer(VkCommandBuffer commandBuffer,
        VN_PRESENT_SRC_INTERNAL_LAYOUT != VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) {
       srcImageLayout = VN_PRESENT_SRC_INTERNAL_LAYOUT;
 
+      /* sanity check */
       const struct vn_image *img = vn_image_from_handle(srcImage);
-      prime_blit = img->is_wsi && img->prime_blit_buffer == dstBuffer;
+      prime_blit = img->is_wsi && img->is_prime_blit_src;
       assert(prime_blit);
    }
 
diff --git a/src/virtio/vulkan/vn_image.h b/src/virtio/vulkan/vn_image.h
index 98469c60adf..a61319912cc 100644
--- a/src/virtio/vulkan/vn_image.h
+++ b/src/virtio/vulkan/vn_image.h
@@ -33,7 +33,7 @@ struct vn_image {
    VkMemoryDedicatedRequirements dedicated_requirements[4];
 
    bool is_wsi;
-   VkBuffer prime_blit_buffer;
+   bool is_prime_blit_src;
 
    /* For VK_ANDROID_native_buffer, the WSI image owns the memory, */
    VkDeviceMemory private_memory;
diff --git a/src/virtio/vulkan/vn_wsi.c b/src/virtio/vulkan/vn_wsi.c
index 72b274267fb..a1751e774e5 100644
--- a/src/virtio/vulkan/vn_wsi.c
+++ b/src/virtio/vulkan/vn_wsi.c
@@ -122,7 +122,7 @@ vn_wsi_create_image(struct vn_device *dev,
       return result;
 
    img->is_wsi = true;
-   img->prime_blit_buffer = wsi_info->prime_blit_buffer;
+   img->is_prime_blit_src = wsi_info->prime_blit_src;
 
    *out_img = img;
    return VK_SUCCESS;
diff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h
index d5367db3a94..adf275e8d48 100644
--- a/src/vulkan/wsi/wsi_common.h
+++ b/src/vulkan/wsi/wsi_common.h
@@ -47,10 +47,8 @@ struct wsi_image_create_info {
     const void *pNext;
     bool scanout;
 
-    /* If set, the buffer is the prime blit destination and the image is the
-     * source.
-     */
-    VkBuffer prime_blit_buffer;
+    /* if true, the image is a prime blit source */
+    bool prime_blit_src;
 };
 
 struct wsi_memory_allocate_info {
diff --git a/src/vulkan/wsi/wsi_common_drm.c b/src/vulkan/wsi/wsi_common_drm.c
index 70d934aef13..d9f445c93ef 100644
--- a/src/vulkan/wsi/wsi_common_drm.c
+++ b/src/vulkan/wsi/wsi_common_drm.c
@@ -502,7 +502,7 @@ wsi_create_prime_image(const struct wsi_swapchain *chain,
 
    const struct wsi_image_create_info image_wsi_info = {
       .sType = VK_STRUCTURE_TYPE_WSI_IMAGE_CREATE_INFO_MESA,
-      .prime_blit_buffer = image->prime.buffer,
+      .prime_blit_src = true,
    };
    const VkImageCreateInfo image_info = {
       .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,



More information about the mesa-commit mailing list