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