vulkan: Use new upload method for texture uploads
authorBenjamin Otte <otte@redhat.com>
Wed, 14 Jun 2023 00:14:40 +0000 (02:14 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 14 Jun 2023 01:34:07 +0000 (03:34 +0200)
gsk_vulkan_image_new_from_texture() now uses the direct copy via
gdk_texture_downloader_download_into().

gsk/vulkan/gskvulkanimage.c

index 4e5ab9fd7c729ae574af8417fb6d825860102c0b..5ffaf0fde65f1a3a33d87e56afefdc05a585ec0b 100644 (file)
@@ -535,17 +535,15 @@ gsk_vulkan_image_new_from_texture (GskVulkanUploader *uploader,
 {
   GdkTextureDownloader *downloader;
   GskVulkanImage *result;
-  GBytes *bytes;
-  gsize stride;
+  GskVulkanImageMap map;
 
   downloader = gdk_texture_downloader_new (texture);
-  bytes = gdk_texture_downloader_download_bytes (downloader, &stride);
-  result = gsk_vulkan_image_new_from_data (uploader,
-                                           g_bytes_get_data (bytes, NULL),
-                                           gdk_texture_get_width (texture),
-                                           gdk_texture_get_height (texture),
-                                           stride);
-  g_bytes_unref (bytes);
+  result = gsk_vulkan_image_new_for_upload (uploader,
+                                            gdk_texture_get_width (texture),
+                                            gdk_texture_get_height (texture));
+  gsk_vulkan_image_map_memory (result, uploader, &map);
+  gdk_texture_downloader_download_into (downloader, map.data, map.stride);
+  gsk_vulkan_image_unmap_memory (result, uploader, &map);
   gdk_texture_downloader_free (downloader);
   return result;
 }