gdk: Replace prefers_high_depth with depth
authorBenjamin Otte <otte@redhat.com>
Fri, 16 Jun 2023 06:00:19 +0000 (08:00 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 18 Jun 2023 12:28:39 +0000 (14:28 +0200)
Now that we track depth, we can also pass it into the GDK frame code.

For now it's just passed along, code acts the same as with
prefers_high_depth.

16 files changed:
gdk/broadway/gdkcairocontext-broadway.c
gdk/broadway/gdkdrawcontext-broadway.c
gdk/gdkdrawcontext.c
gdk/gdkdrawcontextprivate.h
gdk/gdkglcontext.c
gdk/gdkvulkancontext.c
gdk/macos/gdkmacoscairocontext.c
gdk/macos/gdkmacosglcontext.c
gdk/wayland/gdkcairocontext-wayland.c
gdk/wayland/gdkglcontext-wayland.c
gdk/win32/gdkcairocontext-win32.c
gdk/win32/gdkglcontext-win32-egl.c
gdk/win32/gdkglcontext-win32-wgl.c
gdk/win32/gdkvulkancontext-win32.c
gdk/x11/gdkcairocontext-x11.c
gsk/gl/gskglrenderer.c

index c2924bdf295be837ec076788a14d289b54bb4c6a..314ebf54a029c689e9d225a3baa4f2222eb47dd6 100644 (file)
@@ -34,7 +34,7 @@ gdk_broadway_cairo_context_dispose (GObject *object)
 
 static void
 gdk_broadway_cairo_context_begin_frame (GdkDrawContext *draw_context,
-                                        gboolean        prefers_high_depth,
+                                        GdkMemoryDepth  depth,
                                         cairo_region_t *region)
 {
   GdkBroadwayCairoContext *self = GDK_BROADWAY_CAIRO_CONTEXT (draw_context);
index da65aab78abd314184a71772ad7910a088282794..85ab2bd6f981cbedc2fda6f87150387d04bfdbe3 100644 (file)
@@ -34,7 +34,7 @@ gdk_broadway_draw_context_dispose (GObject *object)
 
 static void
 gdk_broadway_draw_context_begin_frame (GdkDrawContext *draw_context,
-                                       gboolean        prefers_high_depth,
+                                       GdkMemoryDepth  depth,
                                        cairo_region_t *region)
 {
   GdkBroadwayDrawContext *self = GDK_BROADWAY_DRAW_CONTEXT (draw_context);
index e461ebdd282b2a48338a63cb790433938331307f..7a22c49b766d5c88957bf77510fb187a3bc9c6b5 100644 (file)
@@ -311,19 +311,20 @@ gdk_draw_context_begin_frame (GdkDrawContext       *context,
   g_return_if_fail (priv->surface != NULL);
   g_return_if_fail (region != NULL);
 
-  gdk_draw_context_begin_frame_full (context, FALSE, region);
+  gdk_draw_context_begin_frame_full (context, GDK_MEMORY_U8, region);
 }
 
 /*
- * @prefers_high_depth: %TRUE to request a higher bit depth
+ * @depth: best depth to render in
  *
- * If high depth is preferred, GDK will see about providing a rendering target
- * that supports higher bit depth than 8 bits per channel. Typically this means
- * a target supporting 16bit floating point pixels, but that is not guaranteed.
+ * If the given depth is not `GDK_MEMORY_U8`, GDK will see about providing a
+ * rendering target that supports a higher bit depth than 8 bits per channel.
+ * Typically this means a target supporting 16bit floating point pixels, but
+ * that is not guaranteed.
  *
  * This is only a request and if the GDK backend does not support HDR rendering
  * or does not consider it worthwhile, it may choose to not honor the request.
- * It may also choose to provide high depth even if it was not requested.
+ * It may also choose to provide a differnet depth even if it was not requested.
  * Typically the steps undertaken by a backend are:
  * 1. Check if high depth is supported by this drawing backend.
  * 2. Check if the compositor supports high depth.
@@ -333,12 +334,12 @@ gdk_draw_context_begin_frame (GdkDrawContext       *context,
  * In either of those cases, the context will usually choose to not honor the request.
  *
  * The rendering code must be able to deal with content in any bit depth, no matter
- * the preference. The prefers_high_depth argument is only a hint and GDK is free
+ * the preference. The depth argument is only a hint and GDK is free
  * to choose.
  */
 void
 gdk_draw_context_begin_frame_full (GdkDrawContext       *context,
-                                   gboolean              prefers_high_depth,
+                                   GdkMemoryDepth        depth,
                                    const cairo_region_t *region)
 {
   GdkDrawContextPrivate *priv = gdk_draw_context_get_instance_private (context);
@@ -365,12 +366,12 @@ gdk_draw_context_begin_frame_full (GdkDrawContext       *context,
     }
 
   if (gdk_display_get_debug_flags (priv->display) & GDK_DEBUG_HIGH_DEPTH)
-    prefers_high_depth = TRUE;
+    depth = GDK_MEMORY_FLOAT32;
 
   priv->frame_region = cairo_region_copy (region);
   priv->surface->paint_context = g_object_ref (context);
 
-  GDK_DRAW_CONTEXT_GET_CLASS (context)->begin_frame (context, prefers_high_depth, priv->frame_region);
+  GDK_DRAW_CONTEXT_GET_CLASS (context)->begin_frame (context, depth, priv->frame_region);
 
   cairo_region_intersect_rectangle (priv->frame_region,
                                     &(cairo_rectangle_int_t) {
index e7ab10898ca7a729f01046f3936f8d7ff7318dd3..ecc1412cc9a5eb478d7e8f126daf420f706b8341 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "gdkdrawcontext.h"
 
+#include "gdkmemoryformatprivate.h"
+
 G_BEGIN_DECLS
 
 #define GDK_DRAW_CONTEXT_CLASS(klass)  (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAW_CONTEXT, GdkDrawContextClass))
@@ -40,7 +42,7 @@ struct _GdkDrawContextClass
   GObjectClass parent_class;
 
   void                  (* begin_frame)                         (GdkDrawContext         *context,
-                                                                 gboolean                prefers_high_depth,
+                                                                 GdkMemoryDepth          depth,
                                                                  cairo_region_t         *update_area);
   void                  (* end_frame)                           (GdkDrawContext         *context,
                                                                  cairo_region_t         *painted);
@@ -50,7 +52,7 @@ struct _GdkDrawContextClass
 void                    gdk_draw_context_surface_resized        (GdkDrawContext         *context);
 
 void                    gdk_draw_context_begin_frame_full       (GdkDrawContext         *context,
-                                                                 gboolean                prefers_high_depth,
+                                                                 GdkMemoryDepth          depth,
                                                                  const cairo_region_t   *region);
 G_END_DECLS
 
index 97ffe71a903a37601a7f86453a9145f5e6486603..eeba765d5ce0e9e6316d1769e4dcc28d66b53b4f 100644 (file)
@@ -581,7 +581,7 @@ gdk_gl_context_get_scale (GdkGLContext *self)
 
 static void
 gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context,
-                                 gboolean        prefers_high_depth,
+                                 GdkMemoryDepth  depth,
                                  cairo_region_t *region)
 {
   GdkGLContext *context = GDK_GL_CONTEXT (draw_context);
@@ -597,7 +597,7 @@ gdk_gl_context_real_begin_frame (GdkDrawContext *draw_context,
 
 #ifdef HAVE_EGL
   if (priv->egl_context)
-    gdk_surface_ensure_egl_surface (surface, prefers_high_depth);
+    gdk_surface_ensure_egl_surface (surface, depth != GDK_MEMORY_U8);
 #endif
 
   damage = GDK_GL_CONTEXT_GET_CLASS (context)->get_damage (context);
index 93bf2ce917f4f52dd35ea63100ca8068970425ac..ac16ec1551fec81f914aa07fd14cd9a1b54b8290 100644 (file)
@@ -520,7 +520,7 @@ device_supports_incremental_present (VkPhysicalDevice device)
 
 static void
 gdk_vulkan_context_begin_frame (GdkDrawContext *draw_context,
-                                gboolean        prefers_high_depth,
+                                GdkMemoryDepth  depth,
                                 cairo_region_t *region)
 {
   GdkVulkanContext *context = GDK_VULKAN_CONTEXT (draw_context);
index 31eecd5df682ab2bd94c48af28007709463677a8..17c2b32811dbdc993b0b4a2913498b7ab4c1b634 100644 (file)
@@ -190,7 +190,7 @@ copy_surface_data (GdkMacosBuffer       *from,
 
 static void
 _gdk_macos_cairo_context_begin_frame (GdkDrawContext *draw_context,
-                                      gboolean        prefers_high_depth,
+                                      GdkMemoryDepth  depth,
                                       cairo_region_t *region)
 {
   GdkMacosCairoContext *self = (GdkMacosCairoContext *)draw_context;
index 0503c2b0f6fb69974c19df5320479f1836af5e8c..87e6e19fe0ace90c13f0af02297c0899f4109989 100644 (file)
@@ -480,7 +480,7 @@ gdk_macos_gl_context_real_realize (GdkGLContext  *context,
 
 static void
 gdk_macos_gl_context_begin_frame (GdkDrawContext *context,
-                                  gboolean        prefers_high_depth,
+                                  GdkMemoryDepth  depth,
                                   cairo_region_t *region)
 {
   GdkMacosGLContext *self = (GdkMacosGLContext *)context;
index 2e4ad16477cf72131a147d64b08a3cde4a4e3f7a..33cee7012e1cb6ccb29f0207c9605523a635415a 100644 (file)
@@ -145,7 +145,7 @@ gdk_wayland_cairo_context_create_surface (GdkWaylandCairoContext *self)
 
 static void
 gdk_wayland_cairo_context_begin_frame (GdkDrawContext *draw_context,
-                                       gboolean        prefers_high_depth,
+                                       GdkMemoryDepth  depth,
                                        cairo_region_t *region)
 {
   GdkWaylandCairoContext *self = GDK_WAYLAND_CAIRO_CONTEXT (draw_context);
index b236854ba9622c60c6b7eb27a87bacac00fe8a26..fcf4ace15250fce928c51e6d50eb5a69f03f3f89 100644 (file)
@@ -48,12 +48,12 @@ G_DEFINE_TYPE (GdkWaylandGLContext, gdk_wayland_gl_context, GDK_TYPE_GL_CONTEXT)
 
 static void
 gdk_wayland_gl_context_begin_frame (GdkDrawContext *draw_context,
-                                    gboolean        prefers_high_depth,
+                                    GdkMemoryDepth  depth,
                                     cairo_region_t *region)
 {
   gdk_wayland_surface_ensure_wl_egl_window (gdk_draw_context_get_surface (draw_context));
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->begin_frame (draw_context, prefers_high_depth, region);
+  GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->begin_frame (draw_context, depth, region);
 }
 
 static void
index e6cfb66c4dbbc4b0dec165a8ae94a099f5e06ce9..f69731c0b14635f8695552f8a527bc711202e00c 100644 (file)
@@ -53,7 +53,7 @@ create_cairo_surface_for_surface (GdkSurface *surface,
 
 static void
 gdk_win32_cairo_context_begin_frame (GdkDrawContext *draw_context,
-                                     gboolean        prefers_high_depth,
+                                     GdkMemoryDepth  depth,
                                      cairo_region_t *region)
 {
   GdkWin32CairoContext *self = GDK_WIN32_CAIRO_CONTEXT (draw_context);
index 82019d6e6ceb1c9411abe9e14e07948b63fab112..07e7892a7473922092e3cd2fbc878b5eb73433b9 100644 (file)
@@ -109,12 +109,12 @@ gdk_win32_gl_context_egl_end_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_win32_gl_context_egl_begin_frame (GdkDrawContext *draw_context,
-                                      gboolean        prefers_high_depth,
+                                      GdkMemoryDepth  depth,
                                       cairo_region_t *update_area)
 {
   gdk_win32_surface_handle_queued_move_resize (draw_context);
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area);
+  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_egl_parent_class)->begin_frame (draw_context, depth, update_area);
 }
 
 static void
index 055c8a6b939d735db329ace81121273312fbc022..d5f8ce56b14ac33518ee77f14e14ddda9b445739 100644 (file)
@@ -118,12 +118,12 @@ gdk_win32_gl_context_wgl_end_frame (GdkDrawContext *draw_context,
 
 static void
 gdk_win32_gl_context_wgl_begin_frame (GdkDrawContext *draw_context,
-                                      gboolean        prefers_high_depth,
+                                      GdkMemoryDepth  depth,
                                       cairo_region_t *update_area)
 {
   gdk_win32_surface_handle_queued_move_resize (draw_context);
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area);
+  GDK_DRAW_CONTEXT_CLASS (gdk_win32_gl_context_wgl_parent_class)->begin_frame (draw_context, depth, update_area);
 }
 
 static int
index e31bc3839fefba28626c6b8d031a0be7231c0c3c..eacbf5c814fc37858d23f5a5c5d5ce5cb4c22d63 100644 (file)
@@ -66,12 +66,12 @@ gdk_win32_vulkan_context_create_surface (GdkVulkanContext *context,
 
 static void
 gdk_win32_vulkan_context_begin_frame (GdkDrawContext *draw_context,
-                                      gboolean        prefers_high_depth,
+                                      GdkMemoryDepth  depth,
                                       cairo_region_t *update_area)
 {
   gdk_win32_surface_handle_queued_move_resize (draw_context);
 
-  GDK_DRAW_CONTEXT_CLASS (gdk_win32_vulkan_context_parent_class)->begin_frame (draw_context, prefers_high_depth, update_area);
+  GDK_DRAW_CONTEXT_CLASS (gdk_win32_vulkan_context_parent_class)->begin_frame (draw_context, depth, update_area);
 }
 
 static void
index 6a9a3fdc84c16ce27e9e434a39061b1f853eb761..9e99c89baaf23f99c8a57d810a1be4daa05d8fc6 100644 (file)
@@ -55,7 +55,7 @@ create_cairo_surface_for_surface (GdkSurface *surface)
 
 static void
 gdk_x11_cairo_context_begin_frame (GdkDrawContext *draw_context,
-                                   gboolean        prefers_high_depth,
+                                   GdkMemoryDepth  depth,
                                    cairo_region_t *region)
 {
   GdkX11CairoContext *self = GDK_X11_CAIRO_CONTEXT (draw_context);
index ab3f93cf6418edb36bfd876a833cec810128cc3e..d61a42258c5399b375f2302a8a250d69e4f35e35 100644 (file)
@@ -296,7 +296,7 @@ gsk_gl_renderer_render (GskRenderer          *renderer,
   viewport.size.height = gdk_surface_get_height (surface) * scale;
 
   gdk_draw_context_begin_frame_full (GDK_DRAW_CONTEXT (self->context),
-                                     gsk_render_node_get_preferred_depth (root) != GDK_MEMORY_U8,
+                                     gsk_render_node_get_preferred_depth (root),
                                      update_area);
 
   gdk_gl_context_make_current (self->context);