mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-15 14:50:06 +00:00
1385ffd2c2
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.
60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
#include "config.h"
|
|
|
|
#include "gskdebugprivate.h"
|
|
#include "gdk/gdkprivate.h"
|
|
|
|
static const GdkDebugKey gsk_debug_keys[] = {
|
|
{ "renderer", GSK_DEBUG_RENDERER, "General renderer information" },
|
|
{ "opengl", GSK_DEBUG_OPENGL, "OpenGL renderer information" },
|
|
{ "vulkan", GSK_DEBUG_VULKAN, "Vulkan renderer information" },
|
|
{ "shaders", GSK_DEBUG_SHADERS, "Information about shaders" },
|
|
{ "surface", GSK_DEBUG_SURFACE, "Information about surfaces" },
|
|
{ "fallback", GSK_DEBUG_FALLBACK, "Information about fallbacks" },
|
|
{ "glyphcache", GSK_DEBUG_GLYPH_CACHE, "Information about glyph caching" },
|
|
{ "verbose", GSK_DEBUG_VERBOSE, "Print verbose output while rendering" },
|
|
{ "geometry", GSK_DEBUG_GEOMETRY, "Show borders (when using cairo)" },
|
|
{ "full-redraw", GSK_DEBUG_FULL_REDRAW, "Force full redraws" },
|
|
{ "sync", GSK_DEBUG_SYNC, "Sync after each frame" },
|
|
{ "staging", GSK_DEBUG_STAGING, "Use a staging image for texture upload (Vulkan only)" },
|
|
{ "offload-disable", GSK_DEBUG_OFFLOAD_DISABLE, "Disable graphics offload" },
|
|
{ "cairo", GSK_DEBUG_CAIRO, "Overlay error pattern over Cairo drawing (finds fallbacks)" },
|
|
};
|
|
|
|
static guint gsk_debug_flags;
|
|
|
|
static void
|
|
init_debug_flags (void)
|
|
{
|
|
static gsize gsk_debug_flags__set;
|
|
|
|
if (g_once_init_enter (&gsk_debug_flags__set))
|
|
{
|
|
gsk_debug_flags = gdk_parse_debug_var ("GSK_DEBUG",
|
|
gsk_debug_keys,
|
|
G_N_ELEMENTS (gsk_debug_keys));
|
|
|
|
g_once_init_leave (&gsk_debug_flags__set, TRUE);
|
|
}
|
|
}
|
|
|
|
gboolean
|
|
gsk_check_debug_flags (GskDebugFlags flags)
|
|
{
|
|
init_debug_flags ();
|
|
return (gsk_debug_flags & flags) != 0;
|
|
}
|
|
|
|
GskDebugFlags
|
|
gsk_get_debug_flags (void)
|
|
{
|
|
init_debug_flags ();
|
|
return gsk_debug_flags;
|
|
}
|
|
|
|
void
|
|
gsk_set_debug_flags (GskDebugFlags flags)
|
|
{
|
|
init_debug_flags ();
|
|
gsk_debug_flags = flags;
|
|
}
|