From 7f26f5a160bef828f27486f76e21fc07f247ee00 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 14 Jun 2023 03:26:04 +0200 Subject: [PATCH] vulkan: Remove gsk_vulkan_image_new_from_data() This is unused now that all the code uses map/unmap. The only thing that map/unmap doesn't do that the old code did, was use a staging image instead as alternative to a staging buffer for image uploads. However, that code is not necessary for anything, so I'm sure we can do without. --- gsk/vulkan/gskvulkanimage.c | 261 ----------------------------- gsk/vulkan/gskvulkanimageprivate.h | 5 - 2 files changed, 266 deletions(-) diff --git a/gsk/vulkan/gskvulkanimage.c b/gsk/vulkan/gskvulkanimage.c index e88c4a559e..c7ec215c46 100644 --- a/gsk/vulkan/gskvulkanimage.c +++ b/gsk/vulkan/gskvulkanimage.c @@ -254,43 +254,6 @@ gsk_vulkan_image_new (GdkVulkanContext *context, return self; } -static void -gsk_vulkan_image_upload_data (GskVulkanImage *self, - const guchar *data, - gsize width, - gsize height, - gsize data_stride) -{ - VkImageSubresource image_res; - VkSubresourceLayout image_layout; - gsize mem_stride; - guchar *mem; - - image_res.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - image_res.mipLevel = 0; - image_res.arrayLayer = 0; - - mem_stride = width * 4; - vkGetImageSubresourceLayout (gdk_vulkan_context_get_device (self->vulkan), - self->vk_image, &image_res, &image_layout); - - mem = gsk_vulkan_memory_map (self->memory) + image_layout.offset; - - if (image_layout.rowPitch == width * 4 && data_stride == mem_stride) - { - memcpy (mem, data, data_stride * height); - } - else - { - for (gsize i = 0; i < height; i++) - { - memcpy (mem + i * image_layout.rowPitch, data + i * data_stride, width * 4); - } - } - - gsk_vulkan_memory_unmap (self->memory); -} - static void gsk_vulkan_image_ensure_view (GskVulkanImage *self, VkFormat format) @@ -320,215 +283,6 @@ gsk_vulkan_image_ensure_view (GskVulkanImage *self, &self->vk_image_view); } -static GskVulkanImage * -gsk_vulkan_image_new_from_data_via_staging_buffer (GskVulkanUploader *uploader, - const guchar *data, - gsize width, - gsize height, - gsize stride) -{ - GskVulkanImage *self; - GskVulkanBuffer *staging; - gsize buffer_size = width * height * 4; - guchar *mem; - - staging = gsk_vulkan_buffer_new_staging (uploader->vulkan, buffer_size); - mem = gsk_vulkan_buffer_map (staging); - - if (stride == width * 4) - { - memcpy (mem, data, stride * height); - } - else - { - for (gsize i = 0; i < height; i++) - { - memcpy (mem + i * width * 4, data + i * stride, width * 4); - } - } - - gsk_vulkan_buffer_unmap (staging); - - gsk_vulkan_uploader_add_buffer_barrier (uploader, - FALSE, - &(VkBufferMemoryBarrier) { - .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, - .srcAccessMask = VK_ACCESS_HOST_WRITE_BIT, - .dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT, - .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, - .buffer = gsk_vulkan_buffer_get_buffer (staging), - .offset = 0, - .size = buffer_size, - }); - - self = gsk_vulkan_image_new (uploader->vulkan, - width, - height, - VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT, - VK_IMAGE_LAYOUT_UNDEFINED, - VK_ACCESS_TRANSFER_WRITE_BIT, - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - - gsk_vulkan_uploader_add_image_barrier (uploader, - FALSE, - self, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT); - - vkCmdCopyBufferToImage (gsk_vulkan_uploader_get_copy_buffer (uploader), - gsk_vulkan_buffer_get_buffer (staging), - self->vk_image, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, - (VkBufferImageCopy[1]) { - { - .bufferOffset = 0, - .imageSubresource = { - .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .mipLevel = 0, - .baseArrayLayer = 0, - .layerCount = 1 - }, - .imageOffset = { 0, 0, 0 }, - .imageExtent = { - .width = width, - .height = height, - .depth = 1 - } - } - }); - - gsk_vulkan_uploader_add_image_barrier (uploader, - TRUE, - self, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_SHADER_READ_BIT); - - uploader->staging_buffer_free_list = g_slist_prepend (uploader->staging_buffer_free_list, staging); - - gsk_vulkan_image_ensure_view (self, VK_FORMAT_B8G8R8A8_UNORM); - - return self; -} - -static GskVulkanImage * -gsk_vulkan_image_new_from_data_via_staging_image (GskVulkanUploader *uploader, - const guchar *data, - gsize width, - gsize height, - gsize stride) -{ - GskVulkanImage *self, *staging; - - staging = gsk_vulkan_image_new (uploader->vulkan, - width, - height, - VK_IMAGE_TILING_LINEAR, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_TRANSFER_SRC_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_ACCESS_TRANSFER_WRITE_BIT, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - - gsk_vulkan_image_upload_data (staging, data, width, height, stride); - - self = gsk_vulkan_image_new (uploader->vulkan, - width, - height, - VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT, - VK_IMAGE_LAYOUT_UNDEFINED, - VK_ACCESS_TRANSFER_WRITE_BIT, - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); - - gsk_vulkan_uploader_add_image_barrier (uploader, - FALSE, - staging, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - VK_ACCESS_TRANSFER_READ_BIT); - - gsk_vulkan_uploader_add_image_barrier (uploader, - FALSE, - self, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - VK_ACCESS_TRANSFER_WRITE_BIT); - - vkCmdCopyImage (gsk_vulkan_uploader_get_copy_buffer (uploader), - staging->vk_image, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - self->vk_image, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, - &(VkImageCopy) { - .srcSubresource = { - .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .mipLevel = 0, - .baseArrayLayer = 0, - .layerCount = 1 - }, - .srcOffset = { 0, 0, 0 }, - .dstSubresource = { - .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .mipLevel = 0, - .baseArrayLayer = 0, - .layerCount = 1 - }, - .dstOffset = { 0, 0, 0 }, - .extent = { - .width = width, - .height = height, - .depth = 1 - } - }); - - gsk_vulkan_uploader_add_image_barrier (uploader, - TRUE, - self, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_SHADER_READ_BIT); - - uploader->staging_image_free_list = g_slist_prepend (uploader->staging_image_free_list, staging); - - gsk_vulkan_image_ensure_view (self, VK_FORMAT_B8G8R8A8_UNORM); - - return self; -} - -static GskVulkanImage * -gsk_vulkan_image_new_from_data_directly (GskVulkanUploader *uploader, - const guchar *data, - gsize width, - gsize height, - gsize stride) -{ - GskVulkanImage *self; - - self = gsk_vulkan_image_new (uploader->vulkan, - width, - height, - VK_IMAGE_TILING_LINEAR, - VK_IMAGE_USAGE_SAMPLED_BIT, - VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_ACCESS_HOST_WRITE_BIT, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - - gsk_vulkan_image_upload_data (self, data, width, height, stride); - - gsk_vulkan_uploader_add_image_barrier (uploader, - TRUE, - self, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, - VK_ACCESS_SHADER_READ_BIT); - - gsk_vulkan_image_ensure_view (self, VK_FORMAT_B8G8R8A8_UNORM); - - return self; -} - GskVulkanImage * gsk_vulkan_image_new_from_texture (GskVulkanUploader *uploader, GdkTexture *texture) @@ -548,21 +302,6 @@ gsk_vulkan_image_new_from_texture (GskVulkanUploader *uploader, return result; } -GskVulkanImage * -gsk_vulkan_image_new_from_data (GskVulkanUploader *uploader, - const guchar *data, - gsize width, - gsize height, - gsize stride) -{ - if (GSK_DEBUG_CHECK (VULKAN_STAGING_BUFFER)) - return gsk_vulkan_image_new_from_data_via_staging_buffer (uploader, data, width, height, stride); - else if (GSK_DEBUG_CHECK (VULKAN_STAGING_IMAGE)) - return gsk_vulkan_image_new_from_data_via_staging_image (uploader, data, width, height, stride); - else - return gsk_vulkan_image_new_from_data_directly (uploader, data, width, height, stride); -} - GskVulkanImage * gsk_vulkan_image_new_for_upload (GskVulkanUploader *uploader, gsize width, diff --git a/gsk/vulkan/gskvulkanimageprivate.h b/gsk/vulkan/gskvulkanimageprivate.h index fb311409b2..e111555641 100644 --- a/gsk/vulkan/gskvulkanimageprivate.h +++ b/gsk/vulkan/gskvulkanimageprivate.h @@ -26,11 +26,6 @@ GskVulkanImage * gsk_vulkan_image_new_for_swapchain (GdkVulk gsize height); GskVulkanImage * gsk_vulkan_image_new_from_texture (GskVulkanUploader *uploader, GdkTexture *texture); -GskVulkanImage * gsk_vulkan_image_new_from_data (GskVulkanUploader *uploader, - const guchar *data, - gsize width, - gsize height, - gsize stride); typedef struct { guchar *data; -- 2.30.2