vulkan: Remove gsk_vulkan_image_new_from_data()
authorBenjamin Otte <otte@redhat.com>
Wed, 14 Jun 2023 01:26:04 +0000 (03:26 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 14 Jun 2023 01:34:07 +0000 (03:34 +0200)
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
gsk/vulkan/gskvulkanimageprivate.h

index e88c4a559e5ca8cebf54300a4d96d8188bf42a20..c7ec215c46f2020fd803a89183b7d550f1c76780 100644 (file)
@@ -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,
index fb311409b2644693536d61d88267ba45bf77d4e0..e11155564122818135e0ce93bd91d2943ba711c2 100644 (file)
@@ -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;