vulkan: Store the VkFormat in GskVulkanImage
authorBenjamin Otte <otte@redhat.com>
Sat, 17 Jun 2023 14:05:09 +0000 (16:05 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 19 Jun 2023 13:08:00 +0000 (15:08 +0200)
... and use that info when creating renderpasses.

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

index ed6aa2ae51ffe18cccaac3ebdbb2792cfd697414..030a3ac9794f0fa1dd7600d4462f1ca42b73ffe1 100644 (file)
@@ -35,6 +35,7 @@ struct _GskVulkanImage
   GdkVulkanContext *vulkan;
 
   GdkMemoryFormat format;
+  VkFormat vk_format;
   gsize width;
   gsize height;
   VkImageUsageFlags vk_usage;
@@ -581,6 +582,7 @@ gsk_vulkan_image_new (GdkVulkanContext      *context,
 
   self->vulkan = g_object_ref (context);
   self->format = format;
+  self->vk_format = vk_format->format;
   self->width = width;
   self->height = height;
   self->vk_usage = usage;
@@ -874,6 +876,7 @@ gsk_vulkan_image_new_for_swapchain (GdkVulkanContext *context,
   self->width = width;
   self->height = height;
   self->vk_image = image;
+  self->vk_format = format;
 
   gsk_vulkan_image_create_view (self,
                                 &(GskMemoryFormatInfo) {
@@ -1091,3 +1094,9 @@ gsk_vulkan_image_get_image_view (GskVulkanImage *self)
 {
   return self->vk_image_view;
 }
+
+VkFormat
+gsk_vulkan_image_get_vk_format (GskVulkanImage *self)
+{
+  return self->vk_format;
+}
index db7036b902b0ecb280dc5b1752ab562a6aac2dc4..25ab54ded44e5c5af62cd7bafeb08be30489fdd4 100644 (file)
@@ -84,6 +84,7 @@ gsize                   gsk_vulkan_image_get_width                      (GskVulk
 gsize                   gsk_vulkan_image_get_height                     (GskVulkanImage         *self);
 VkImage                 gsk_vulkan_image_get_image                      (GskVulkanImage         *self);
 VkImageView             gsk_vulkan_image_get_image_view                 (GskVulkanImage         *self);
+VkFormat                gsk_vulkan_image_get_vk_format                  (GskVulkanImage         *self);
 
 G_END_DECLS
 
index 3dce46d622ddc5633e22ac244c457f070a7c6bc5..b5a96eae7b21f9727bbd9689baad43a5e8fda053 100644 (file)
@@ -186,7 +186,7 @@ gsk_vulkan_render_pass_new (GdkVulkanContext      *context,
                                         .attachmentCount = 1,
                                         .pAttachments = (VkAttachmentDescription[]) {
                                            {
-                                              .format = gdk_vulkan_context_get_image_format (self->vulkan),
+                                              .format = gsk_vulkan_image_get_vk_format (target),
                                               .samples = VK_SAMPLE_COUNT_1_BIT,
                                               .loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
                                               .storeOp = VK_ATTACHMENT_STORE_OP_STORE,