vulkan: Rename offscreenp to renderpassop
authorBenjamin Otte <otte@redhat.com>
Sun, 9 Jul 2023 20:33:54 +0000 (22:33 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Jul 2023 10:13:00 +0000 (12:13 +0200)
They should be used for all renderpasses, not just offscreens.

gsk/meson.build
gsk/vulkan/gskvulkanoffscreenop.c [deleted file]
gsk/vulkan/gskvulkanoffscreenopprivate.h [deleted file]
gsk/vulkan/gskvulkanrenderpass.c
gsk/vulkan/gskvulkanrenderpassop.c [new file with mode: 0644]
gsk/vulkan/gskvulkanrenderpassopprivate.h [new file with mode: 0644]

index 707851897c39f55552bfd317c5ca4b51aefeb0e6..224573db4201a0c76d1eb880263a101d72fbc869 100644 (file)
@@ -123,13 +123,13 @@ if have_vulkan
     'vulkan/gskvulkanlineargradientop.c',
     'vulkan/gskvulkanmaskop.c',
     'vulkan/gskvulkanmemory.c',
-    'vulkan/gskvulkanoffscreenop.c',
     'vulkan/gskvulkanop.c',
     'vulkan/gskvulkanoutsetshadowop.c',
     'vulkan/gskvulkanpushconstantsop.c',
     'vulkan/gskvulkanrender.c',
     'vulkan/gskvulkanrenderer.c',
     'vulkan/gskvulkanrenderpass.c',
+    'vulkan/gskvulkanrenderpassop.c',
     'vulkan/gskvulkanscissorop.c',
     'vulkan/gskvulkantextureop.c',
     'vulkan/gskvulkanuploadcairoop.c',
diff --git a/gsk/vulkan/gskvulkanoffscreenop.c b/gsk/vulkan/gskvulkanoffscreenop.c
deleted file mode 100644 (file)
index a464367..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "config.h"
-
-#include "gskvulkanoffscreenopprivate.h"
-
-#include "gskrendernodeprivate.h"
-#include "gskvulkanprivate.h"
-
-#include "gdk/gdkvulkancontextprivate.h"
-
-typedef struct _GskVulkanOffscreenOp GskVulkanOffscreenOp;
-
-struct _GskVulkanOffscreenOp
-{
-  GskVulkanOp op;
-
-  GskVulkanImage *image;
-  GskVulkanRenderPass *render_pass;
-};
-
-static void
-gsk_vulkan_offscreen_op_finish (GskVulkanOp *op)
-{
-  GskVulkanOffscreenOp *self = (GskVulkanOffscreenOp *) op;
-
-  g_object_unref (self->image);
-  gsk_vulkan_render_pass_free (self->render_pass);
-}
-
-static void
-gsk_vulkan_offscreen_op_print (GskVulkanOp *op,
-                               GString     *string,
-                               guint        indent)
-{
-  GskVulkanOffscreenOp *self = (GskVulkanOffscreenOp *) op;
-
-  print_indent (string, indent);
-  g_string_append_printf (string, "offscreen %zux%zu ",
-                          gsk_vulkan_image_get_width (self->image),
-                          gsk_vulkan_image_get_height (self->image));
-  print_newline (string);
-}
-
-static void
-gsk_vulkan_offscreen_op_upload (GskVulkanOp       *op,
-                                GskVulkanUploader *uploader)
-{
-}
-
-static gsize
-gsk_vulkan_offscreen_op_count_vertex_data (GskVulkanOp *op,
-                                           gsize        n_bytes)
-{
-  return n_bytes;
-}
-
-static void
-gsk_vulkan_offscreen_op_collect_vertex_data (GskVulkanOp *op,
-                                             guchar      *data)
-{
-}
-
-static void
-gsk_vulkan_offscreen_op_reserve_descriptor_sets (GskVulkanOp     *op,
-                                                 GskVulkanRender *render)
-{
-}
-
-static GskVulkanOp *
-gsk_vulkan_offscreen_op_command (GskVulkanOp      *op,
-                                 GskVulkanRender  *render,
-                                 VkPipelineLayout  pipeline_layout,
-                                 VkCommandBuffer   command_buffer)
-{
-  GskVulkanOffscreenOp *self = (GskVulkanOffscreenOp *) op;
-
-  return gsk_vulkan_render_draw_pass (render, self->render_pass, op->next);
-}
-
-static const GskVulkanOpClass GSK_VULKAN_OFFSCREEN_OP_CLASS = {
-  GSK_VULKAN_OP_SIZE (GskVulkanOffscreenOp),
-  GSK_VULKAN_STAGE_BEGIN_PASS,
-  NULL,
-  NULL,
-  gsk_vulkan_offscreen_op_finish,
-  gsk_vulkan_offscreen_op_print,
-  gsk_vulkan_offscreen_op_upload,
-  gsk_vulkan_offscreen_op_count_vertex_data,
-  gsk_vulkan_offscreen_op_collect_vertex_data,
-  gsk_vulkan_offscreen_op_reserve_descriptor_sets,
-  gsk_vulkan_offscreen_op_command
-};
-
-typedef struct _GskVulkanOffscreenEndOp GskVulkanOffscreenEndOp;
-
-struct _GskVulkanOffscreenEndOp
-{
-  GskVulkanOp op;
-
-  GskVulkanImage *image;
-};
-
-static void
-gsk_vulkan_offscreen_end_op_finish (GskVulkanOp *op)
-{
-  GskVulkanOffscreenEndOp *self = (GskVulkanOffscreenEndOp *) op;
-
-  g_object_unref (self->image);
-}
-
-static void
-gsk_vulkan_offscreen_end_op_print (GskVulkanOp *op,
-                                   GString     *string,
-                                   guint        indent)
-{
-  GskVulkanOffscreenEndOp *self = (GskVulkanOffscreenEndOp *) op;
-
-  print_indent (string, indent);
-  g_string_append_printf (string, "end offscreen ");
-  print_image (string, self->image);
-  print_newline (string);
-}
-
-static void
-gsk_vulkan_offscreen_end_op_upload (GskVulkanOp       *op,
-                                    GskVulkanUploader *uploader)
-{
-}
-
-static gsize
-gsk_vulkan_offscreen_end_op_count_vertex_data (GskVulkanOp *op,
-                                               gsize        n_bytes)
-{
-  return n_bytes;
-}
-
-static void
-gsk_vulkan_offscreen_end_op_collect_vertex_data (GskVulkanOp *op,
-                                                 guchar      *data)
-{
-}
-
-static void
-gsk_vulkan_offscreen_end_op_reserve_descriptor_sets (GskVulkanOp     *op,
-                                                     GskVulkanRender *render)
-{
-}
-
-static GskVulkanOp *
-gsk_vulkan_offscreen_end_op_command (GskVulkanOp      *op,
-                                     GskVulkanRender  *render,
-                                     VkPipelineLayout  pipeline_layout,
-                                     VkCommandBuffer   command_buffer)
-{
-  vkCmdEndRenderPass (command_buffer);
-
-  return op->next;
-}
-
-static const GskVulkanOpClass GSK_VULKAN_OFFSCREEN_END_OP_CLASS = {
-  GSK_VULKAN_OP_SIZE (GskVulkanOffscreenEndOp),
-  GSK_VULKAN_STAGE_END_PASS,
-  NULL,
-  NULL,
-  gsk_vulkan_offscreen_end_op_finish,
-  gsk_vulkan_offscreen_end_op_print,
-  gsk_vulkan_offscreen_end_op_upload,
-  gsk_vulkan_offscreen_end_op_count_vertex_data,
-  gsk_vulkan_offscreen_end_op_collect_vertex_data,
-  gsk_vulkan_offscreen_end_op_reserve_descriptor_sets,
-  gsk_vulkan_offscreen_end_op_command
-};
-
-GskVulkanImage *
-gsk_vulkan_offscreen_op (GskVulkanRender       *render,
-                         GdkVulkanContext      *context,
-                         const graphene_vec2_t *scale,
-                         const graphene_rect_t *viewport,
-                         GskRenderNode         *node)
-{
-  GskVulkanOffscreenOp *self;
-  GskVulkanOffscreenEndOp *end;
-  GskVulkanImage *image;
-  graphene_rect_t view;
-  cairo_region_t *clip;
-  float scale_x, scale_y;
-
-  scale_x = graphene_vec2_get_x (scale);
-  scale_y = graphene_vec2_get_y (scale);
-  view = GRAPHENE_RECT_INIT (scale_x * viewport->origin.x,
-                             scale_y * viewport->origin.y,
-                             ceil (scale_x * viewport->size.width),
-                             ceil (scale_y * viewport->size.height));
-
-  image = gsk_vulkan_image_new_for_offscreen (context,
-                                              gdk_vulkan_context_get_offscreen_format (context,
-                                                  gsk_render_node_get_preferred_depth (node)),
-                                              view.size.width, view.size.height);
-
-  self = (GskVulkanOffscreenOp *) gsk_vulkan_op_alloc (render, &GSK_VULKAN_OFFSCREEN_OP_CLASS);
-
-  self->image = image;
-
-  clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
-                                          0, 0,
-                                          gsk_vulkan_image_get_width (self->image),
-                                          gsk_vulkan_image_get_height (self->image)
-                                        });
-
-  self->render_pass = gsk_vulkan_render_pass_new (context,
-                                                  render,
-                                                  self->image,
-                                                  scale,
-                                                  &view,
-                                                  clip,
-                                                  node,
-                                                  FALSE);
-
-  cairo_region_destroy (clip);
-
-  /* This invalidates the self pointer */
-  gsk_vulkan_render_pass_add (self->render_pass, render, node);
-
-  end = (GskVulkanOffscreenEndOp *) gsk_vulkan_op_alloc (render, &GSK_VULKAN_OFFSCREEN_END_OP_CLASS);
-
-  end->image = g_object_ref (image);
-
-  return self->image;
-}
diff --git a/gsk/vulkan/gskvulkanoffscreenopprivate.h b/gsk/vulkan/gskvulkanoffscreenopprivate.h
deleted file mode 100644 (file)
index 52371b5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "gskvulkanopprivate.h"
-
-G_BEGIN_DECLS
-
-GskVulkanImage *        gsk_vulkan_offscreen_op                         (GskVulkanRender                *render,
-                                                                         GdkVulkanContext               *context,
-                                                                         const graphene_vec2_t          *scale,
-                                                                         const graphene_rect_t          *viewport,
-                                                                         GskRenderNode                  *node);
-
-G_END_DECLS
-
index c902c55802673ebef44df50150c291ccfa806289..edf1f3387d60ba248896583608c2f4f356591cac 100644 (file)
@@ -24,7 +24,7 @@
 #include "gskvulkanprivate.h"
 #include "gskvulkanrendererprivate.h"
 #include "gskvulkanimageprivate.h"
-#include "gskvulkanoffscreenopprivate.h"
+#include "gskvulkanrenderpassopprivate.h"
 #include "gskvulkanoutsetshadowopprivate.h"
 #include "gskvulkanpushconstantsopprivate.h"
 #include "gskvulkanscissoropprivate.h"
@@ -218,11 +218,11 @@ gsk_vulkan_render_pass_get_node_as_image (GskVulkanRenderPass       *self,
          */
         *tex_bounds = clipped;
 
-        result = gsk_vulkan_offscreen_op (render,
-                                          self->vulkan,
-                                          &state->scale,
-                                          &clipped,
-                                          node);
+        result = gsk_vulkan_render_pass_op_offscreen (render,
+                                                      self->vulkan,
+                                                      &state->scale,
+                                                      &clipped,
+                                                      node);
 
         return result;
       }
@@ -836,11 +836,11 @@ gsk_vulkan_render_pass_add_repeat_node (GskVulkanRenderPass       *self,
   if (graphene_rect_get_area (child_bounds) == 0)
     return TRUE;
 
-  image = gsk_vulkan_offscreen_op (render,
-                                   self->vulkan,
-                                   &state->scale,
-                                   child_bounds,
-                                   gsk_repeat_node_get_child (node));
+  image = gsk_vulkan_render_pass_op_offscreen (render,
+                                               self->vulkan,
+                                               &state->scale,
+                                               child_bounds,
+                                               gsk_repeat_node_get_child (node));
 
   gsk_vulkan_texture_op (render,
                          gsk_vulkan_clip_get_clip_type (&state->clip, &state->offset, &node->bounds),
diff --git a/gsk/vulkan/gskvulkanrenderpassop.c b/gsk/vulkan/gskvulkanrenderpassop.c
new file mode 100644 (file)
index 0000000..5308958
--- /dev/null
@@ -0,0 +1,228 @@
+#include "config.h"
+
+#include "gskvulkanrenderpassopprivate.h"
+
+#include "gskrendernodeprivate.h"
+#include "gskvulkanprivate.h"
+
+#include "gdk/gdkvulkancontextprivate.h"
+
+typedef struct _GskVulkanRenderPassOp GskVulkanRenderPassOp;
+
+struct _GskVulkanRenderPassOp
+{
+  GskVulkanOp op;
+
+  GskVulkanImage *image;
+  GskVulkanRenderPass *render_pass;
+};
+
+static void
+gsk_vulkan_render_pass_op_finish (GskVulkanOp *op)
+{
+  GskVulkanRenderPassOp *self = (GskVulkanRenderPassOp *) op;
+
+  g_object_unref (self->image);
+  gsk_vulkan_render_pass_free (self->render_pass);
+}
+
+static void
+gsk_vulkan_render_pass_op_print (GskVulkanOp *op,
+                                 GString     *string,
+                                 guint        indent)
+{
+  GskVulkanRenderPassOp *self = (GskVulkanRenderPassOp *) op;
+
+  print_indent (string, indent);
+  g_string_append_printf (string, "begin-render-pass %zux%zu ",
+                          gsk_vulkan_image_get_width (self->image),
+                          gsk_vulkan_image_get_height (self->image));
+  print_newline (string);
+}
+
+static void
+gsk_vulkan_render_pass_op_upload (GskVulkanOp       *op,
+                                  GskVulkanUploader *uploader)
+{
+}
+
+static gsize
+gsk_vulkan_render_pass_op_count_vertex_data (GskVulkanOp *op,
+                                             gsize        n_bytes)
+{
+  return n_bytes;
+}
+
+static void
+gsk_vulkan_render_pass_op_collect_vertex_data (GskVulkanOp *op,
+                                               guchar      *data)
+{
+}
+
+static void
+gsk_vulkan_render_pass_op_reserve_descriptor_sets (GskVulkanOp     *op,
+                                                   GskVulkanRender *render)
+{
+}
+
+static GskVulkanOp *
+gsk_vulkan_render_pass_op_command (GskVulkanOp      *op,
+                                   GskVulkanRender  *render,
+                                   VkPipelineLayout  pipeline_layout,
+                                   VkCommandBuffer   command_buffer)
+{
+  GskVulkanRenderPassOp *self = (GskVulkanRenderPassOp *) op;
+
+  return gsk_vulkan_render_draw_pass (render, self->render_pass, op->next);
+}
+
+static const GskVulkanOpClass GSK_VULKAN_RENDER_PASS_OP_CLASS = {
+  GSK_VULKAN_OP_SIZE (GskVulkanRenderPassOp),
+  GSK_VULKAN_STAGE_BEGIN_PASS,
+  NULL,
+  NULL,
+  gsk_vulkan_render_pass_op_finish,
+  gsk_vulkan_render_pass_op_print,
+  gsk_vulkan_render_pass_op_upload,
+  gsk_vulkan_render_pass_op_count_vertex_data,
+  gsk_vulkan_render_pass_op_collect_vertex_data,
+  gsk_vulkan_render_pass_op_reserve_descriptor_sets,
+  gsk_vulkan_render_pass_op_command
+};
+
+typedef struct _GskVulkanRenderPassEndOp GskVulkanRenderPassEndOp;
+
+struct _GskVulkanRenderPassEndOp
+{
+  GskVulkanOp op;
+
+  GskVulkanImage *image;
+};
+
+static void
+gsk_vulkan_render_pass_end_op_finish (GskVulkanOp *op)
+{
+  GskVulkanRenderPassEndOp *self = (GskVulkanRenderPassEndOp *) op;
+
+  g_object_unref (self->image);
+}
+
+static void
+gsk_vulkan_render_pass_end_op_print (GskVulkanOp *op,
+                                     GString     *string,
+                                     guint        indent)
+{
+  GskVulkanRenderPassEndOp *self = (GskVulkanRenderPassEndOp *) op;
+
+  print_indent (string, indent);
+  g_string_append_printf (string, "end-render-pass ");
+  print_image (string, self->image);
+  print_newline (string);
+}
+
+static void
+gsk_vulkan_render_pass_end_op_upload (GskVulkanOp       *op,
+                                      GskVulkanUploader *uploader)
+{
+}
+
+static gsize
+gsk_vulkan_render_pass_end_op_count_vertex_data (GskVulkanOp *op,
+                                                 gsize        n_bytes)
+{
+  return n_bytes;
+}
+
+static void
+gsk_vulkan_render_pass_end_op_collect_vertex_data (GskVulkanOp *op,
+                                                   guchar      *data)
+{
+}
+
+static void
+gsk_vulkan_render_pass_end_op_reserve_descriptor_sets (GskVulkanOp     *op,
+                                                       GskVulkanRender *render)
+{
+}
+
+static GskVulkanOp *
+gsk_vulkan_render_pass_end_op_command (GskVulkanOp      *op,
+                                       GskVulkanRender  *render,
+                                       VkPipelineLayout  pipeline_layout,
+                                       VkCommandBuffer   command_buffer)
+{
+  vkCmdEndRenderPass (command_buffer);
+
+  return op->next;
+}
+
+static const GskVulkanOpClass GSK_VULKAN_RENDER_PASS_END_OP_CLASS = {
+  GSK_VULKAN_OP_SIZE (GskVulkanRenderPassEndOp),
+  GSK_VULKAN_STAGE_END_PASS,
+  NULL,
+  NULL,
+  gsk_vulkan_render_pass_end_op_finish,
+  gsk_vulkan_render_pass_end_op_print,
+  gsk_vulkan_render_pass_end_op_upload,
+  gsk_vulkan_render_pass_end_op_count_vertex_data,
+  gsk_vulkan_render_pass_end_op_collect_vertex_data,
+  gsk_vulkan_render_pass_end_op_reserve_descriptor_sets,
+  gsk_vulkan_render_pass_end_op_command
+};
+
+GskVulkanImage *
+gsk_vulkan_render_pass_op_offscreen (GskVulkanRender       *render,
+                                     GdkVulkanContext      *context,
+                                     const graphene_vec2_t *scale,
+                                     const graphene_rect_t *viewport,
+                                     GskRenderNode         *node)
+{
+  GskVulkanRenderPassOp *self;
+  GskVulkanRenderPassEndOp *end;
+  GskVulkanImage *image;
+  graphene_rect_t view;
+  cairo_region_t *clip;
+  float scale_x, scale_y;
+
+  scale_x = graphene_vec2_get_x (scale);
+  scale_y = graphene_vec2_get_y (scale);
+  view = GRAPHENE_RECT_INIT (scale_x * viewport->origin.x,
+                             scale_y * viewport->origin.y,
+                             ceil (scale_x * viewport->size.width),
+                             ceil (scale_y * viewport->size.height));
+
+  image = gsk_vulkan_image_new_for_offscreen (context,
+                                              gdk_vulkan_context_get_offscreen_format (context,
+                                                  gsk_render_node_get_preferred_depth (node)),
+                                              view.size.width, view.size.height);
+
+  self = (GskVulkanRenderPassOp *) gsk_vulkan_op_alloc (render, &GSK_VULKAN_RENDER_PASS_OP_CLASS);
+
+  self->image = image;
+
+  clip = cairo_region_create_rectangle (&(cairo_rectangle_int_t) {
+                                          0, 0,
+                                          gsk_vulkan_image_get_width (self->image),
+                                          gsk_vulkan_image_get_height (self->image)
+                                        });
+
+  self->render_pass = gsk_vulkan_render_pass_new (context,
+                                                  render,
+                                                  self->image,
+                                                  scale,
+                                                  &view,
+                                                  clip,
+                                                  node,
+                                                  FALSE);
+
+  cairo_region_destroy (clip);
+
+  /* This invalidates the self pointer */
+  gsk_vulkan_render_pass_add (self->render_pass, render, node);
+
+  end = (GskVulkanRenderPassEndOp *) gsk_vulkan_op_alloc (render, &GSK_VULKAN_RENDER_PASS_END_OP_CLASS);
+
+  end->image = g_object_ref (image);
+
+  return self->image;
+}
diff --git a/gsk/vulkan/gskvulkanrenderpassopprivate.h b/gsk/vulkan/gskvulkanrenderpassopprivate.h
new file mode 100644 (file)
index 0000000..a320180
--- /dev/null
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "gskvulkanopprivate.h"
+
+G_BEGIN_DECLS
+
+GskVulkanImage *        gsk_vulkan_render_pass_op_offscreen             (GskVulkanRender                *render,
+                                                                         GdkVulkanContext               *context,
+                                                                         const graphene_vec2_t          *scale,
+                                                                         const graphene_rect_t          *viewport,
+                                                                         GskRenderNode                  *node);
+
+G_END_DECLS
+