gtk/gsk/gskdebugprivate.h
Benjamin Otte 1385ffd2c2 gsk: Repurpose GSK_DEBUG=cairo
Use it to overlay an error pattern over all Cairo drawing done by
renderers.

This has 2 purposes:
1. It allows detecting fallbacks in GPU renderers.
2. Application code can use it to detect where it is using Cairo
   drawing.

As such, it is meant to trigger both with cairo nodes as well as when
renderers fallback for regular nodes.

The old use of the debug flag - which were 2 not very useful print
statements - was removed.
2023-12-26 05:31:05 +01:00

51 lines
1.8 KiB
C

#pragma once
#include <glib.h>
#include "gdk/gdkdebugprivate.h"
G_BEGIN_DECLS
typedef enum {
GSK_DEBUG_RENDERER = 1 << 0,
GSK_DEBUG_OPENGL = 1 << 1,
GSK_DEBUG_SHADERS = 1 << 2,
GSK_DEBUG_SURFACE = 1 << 3,
GSK_DEBUG_VULKAN = 1 << 4,
GSK_DEBUG_FALLBACK = 1 << 5,
GSK_DEBUG_GLYPH_CACHE = 1 << 6,
GSK_DEBUG_VERBOSE = 1 << 7,
/* flags below may affect behavior */
GSK_DEBUG_GEOMETRY = 1 << 8,
GSK_DEBUG_FULL_REDRAW = 1 << 9,
GSK_DEBUG_SYNC = 1 << 10,
GSK_DEBUG_STAGING = 1 << 11,
GSK_DEBUG_OFFLOAD_DISABLE = 1 << 12,
GSK_DEBUG_CAIRO = 1 << 13,
} GskDebugFlags;
#define GSK_DEBUG_ANY ((1 << 13) - 1)
GskDebugFlags gsk_get_debug_flags (void);
void gsk_set_debug_flags (GskDebugFlags flags);
gboolean gsk_check_debug_flags (GskDebugFlags flags);
#define GSK_DEBUG_CHECK(type) G_UNLIKELY (gsk_check_debug_flags (GSK_DEBUG_ ## type))
#define GSK_RENDERER_DEBUG_CHECK(renderer,type) \
G_UNLIKELY ((gsk_renderer_get_debug_flags (renderer) & GSK_DEBUG_ ## type) != 0)
#define GSK_RENDERER_DEBUG(renderer,type,...) \
G_STMT_START { \
if (GSK_RENDERER_DEBUG_CHECK (renderer,type)) \
gdk_debug_message (__VA_ARGS__); \
} G_STMT_END
#define GSK_DEBUG(type,...) \
G_STMT_START { \
if (GSK_DEBUG_CHECK (type)) \
gdk_debug_message (__VA_ARGS__); \
} G_STMT_END
G_END_DECLS