vulkan: Pass format to offscreen creation function
authorBenjamin Otte <otte@redhat.com>
Wed, 14 Jun 2023 19:32:26 +0000 (21:32 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 19 Jun 2023 13:08:00 +0000 (15:08 +0200)
That way, the offscreen can create images of different types.

Its not used in this commit, but will come in handy when we want to
support high bit depth.

gsk/vulkan/gskvulkanimage.c
gsk/vulkan/gskvulkanimageprivate.h
gsk/vulkan/gskvulkanrenderer.c
gsk/vulkan/gskvulkanrenderpass.c

index d289f7834f653970a0f5741e1875cf30818e96e0..a209f16a52df6f57319b45acfaf27c3f9a77923e 100644 (file)
@@ -766,13 +766,14 @@ gsk_vulkan_image_new_for_atlas (GdkVulkanContext *context,
 
 GskVulkanImage *
 gsk_vulkan_image_new_for_offscreen (GdkVulkanContext *context,
+                                    GdkMemoryFormat   preferred_format,
                                     gsize             width,
                                     gsize             height)
 {
   GskVulkanImage *self;
 
   self = gsk_vulkan_image_new (context,
-                               GDK_MEMORY_DEFAULT,
+                               preferred_format,
                                width,
                                height,
                                VK_IMAGE_TILING_OPTIMAL,
index cb87e93bdb274be348b09caf55593eba1d0bfa44..c7e66ccd3d64f6d40193e1efff49c1176131604f 100644 (file)
@@ -44,6 +44,7 @@ GskVulkanImage *        gsk_vulkan_image_new_for_atlas                  (GdkVulk
                                                                          gsize                   width,
                                                                          gsize                   height);
 GskVulkanImage *        gsk_vulkan_image_new_for_offscreen              (GdkVulkanContext       *context,
+                                                                         GdkMemoryFormat         preferred_format,
                                                                          gsize                   width,
                                                                          gsize                   height);
 
index a163e25350ef657a76ad76e7a0d18ea2e4c21596..c51fd81ac3264b4083d724dbc23daaba9e909eae 100644 (file)
@@ -285,6 +285,7 @@ gsk_vulkan_renderer_render_texture (GskRenderer           *renderer,
                                          ceil (viewport->size.width),
                                          ceil (viewport->size.height));
   image = gsk_vulkan_image_new_for_offscreen (self->vulkan,
+                                              GDK_MEMORY_DEFAULT,
                                               rounded_viewport.size.width,
                                               rounded_viewport.size.height);
 
index 0a641b6238f89f84445d1b574ccefdd203405f8a..9b9054f88b91833e1270a5288896063cbd3a2e63 100644 (file)
@@ -1249,6 +1249,7 @@ gsk_vulkan_render_pass_render_offscreen (GdkVulkanContext      *vulkan,
                              ceil (scale_y * viewport->size.height));
 
   result = gsk_vulkan_image_new_for_offscreen (vulkan,
+                                               GDK_MEMORY_DEFAULT,
                                                view.size.width, view.size.height);
 
 #ifdef G_ENABLE_DEBUG