gsk/vulkan/render: Download image before reset
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 14 Apr 2023 19:27:42 +0000 (16:27 -0300)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 14 Apr 2023 19:43:04 +0000 (16:43 -0300)
gsk_vulkan_render_download_target() currently resets the uploader
objects before downloading the image that it produces. This is
problematic because there might be unreleased buffers and images
in the command queue.

In particular, this can make validation layers complain about the
glyph atlas - of all things! - upload buffer being released while
still being used by the command queue.

Fix that by resetting the uploader after downloading the image.

gsk/vulkan/gskvulkanrender.c

index 586678c2e4c7b554d7a6397a6e5fce86ea571bfc..20ee28a218918c1a5e3d7ee3b92a1abc2d4c6d20 100644 (file)
@@ -647,9 +647,12 @@ gsk_vulkan_render_draw (GskVulkanRender *self)
 GdkTexture *
 gsk_vulkan_render_download_target (GskVulkanRender *self)
 {
+  GdkTexture *texture;
+
+  texture = gsk_vulkan_image_download (self->target, self->uploader);
   gsk_vulkan_uploader_reset (self->uploader);
 
-  return gsk_vulkan_image_download (self->target, self->uploader);
+  return texture;
 }
 
 static void