Merge branch 'wip/otte/for-main' into 'main'

rendernode: Use different hilights

See merge request GNOME/gtk!6694
This commit is contained in:
Matthias Clasen
2023-12-27 22:15:05 +00:00
7 changed files with 29 additions and 55 deletions

View File

@@ -389,8 +389,6 @@ gsk_gl_renderer_render (GskRenderer *renderer,
gsk_gl_driver_begin_frame (self->driver, self->command_queue);
job = gsk_gl_render_job_new (self->driver, &viewport, scale, render_region, 0, clear_framebuffer);
if (GSK_RENDERER_DEBUG_CHECK (GSK_RENDERER (self), FALLBACK))
gsk_gl_render_job_set_debug_fallback (job, TRUE);
gsk_gl_render_job_render (job, root);
gsk_gl_driver_end_frame (self->driver);
gsk_gl_render_job_free (job);
@@ -475,8 +473,6 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer,
{
gsk_gl_driver_begin_frame (self->driver, self->command_queue);
job = gsk_gl_render_job_new (self->driver, viewport, 1, NULL, render_target->framebuffer_id, TRUE);
if (GSK_RENDERER_DEBUG_CHECK (GSK_RENDERER (self), FALLBACK))
gsk_gl_render_job_set_debug_fallback (job, TRUE);
gsk_gl_render_job_render_flipped (job, root);
texture_id = gsk_gl_driver_release_render_target (self->driver, render_target, FALSE);
texture = gsk_gl_driver_create_gdk_texture (self->driver, texture_id, gdk_format);

View File

@@ -167,9 +167,6 @@ struct _GskGLRenderJob
guint source_is_glyph_atlas : 1;
/* If we should be rendering red zones over fallback nodes */
guint debug_fallback : 1;
/* In some cases we might want to avoid clearing the framebuffer
* because we're going to render over the existing contents.
*/
@@ -1232,22 +1229,6 @@ gsk_gl_render_job_visit_as_fallback (GskGLRenderJob *job,
cairo_rectangle (cr, 0, 0, surface_width / fabs (scale_x), surface_height / fabs (scale_y));
cairo_fill (cr);
cairo_restore (cr);
if (job->debug_fallback)
{
cairo_move_to (cr, 0, 0);
cairo_rectangle (cr, 0, 0, node->bounds.size.width, node->bounds.size.height);
if (GSK_RENDER_NODE_TYPE (node) == GSK_CAIRO_NODE)
cairo_set_source_rgba (cr, 0.3, 0, 1, 0.25);
else
cairo_set_source_rgba (cr, 1, 0, 0, 0.25);
cairo_fill_preserve (cr);
if (GSK_RENDER_NODE_TYPE (node) == GSK_CAIRO_NODE)
cairo_set_source_rgba (cr, 0.3, 0, 1, 1);
else
cairo_set_source_rgba (cr, 1, 0, 0, 1);
cairo_stroke (cr);
}
cairo_destroy (cr);
/* Create texture to upload */
@@ -4580,15 +4561,6 @@ gsk_gl_render_job_render (GskGLRenderJob *job,
gdk_profiler_add_mark (start_time, GDK_PROFILER_CURRENT_TIME-start_time, "Execute GL command queue", "");
}
void
gsk_gl_render_job_set_debug_fallback (GskGLRenderJob *job,
gboolean debug_fallback)
{
g_return_if_fail (job != NULL);
job->debug_fallback = !!debug_fallback;
}
static int
get_framebuffer_format (GdkGLContext *context,
guint framebuffer)

View File

@@ -33,6 +33,4 @@ void gsk_gl_render_job_render (GskGLRenderJob *job
GskRenderNode *root);
void gsk_gl_render_job_render_flipped (GskGLRenderJob *job,
GskRenderNode *root);
void gsk_gl_render_job_set_debug_fallback (GskGLRenderJob *job,
gboolean debug_fallback);

View File

@@ -9,7 +9,7 @@ static const GdkDebugKey gsk_debug_keys[] = {
{ "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" },
{ "fallback", GSK_DEBUG_FALLBACK, "Information about fallback usage in renderers" },
{ "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)" },

View File

@@ -434,11 +434,18 @@ gsk_render_node_draw_fallback (GskRenderNode *node,
/* pink, black
* black, pink
*/
static const guint32 pixels[] = { 0xFFFF00CC, 0xFF000000,
0xFF000000, 0xFFFF00CC };
static const guint32 fallback_pixels[] = { 0xFFFF00CC, 0xFF000000,
0xFF000000, 0xFFFF00CC };
static const guint32 cairo_pixels[] = { 0xFF9900FF, 0xFF000000,
0xFF000000, 0xFF9900FF };
const guint32 *pixels;
cairo_surface_t *surface;
cairo_save (cr);
if (GSK_RENDER_NODE_TYPE (node) == GSK_CAIRO_NODE)
pixels = cairo_pixels;
else
pixels = fallback_pixels;
surface = cairo_image_surface_create_for_data ((guchar *) pixels,
CAIRO_FORMAT_ARGB32,
2, 2,

View File

@@ -92,7 +92,7 @@ struct _GtkInspectorVisual
GtkWidget *debug_box;
GtkWidget *fps_switch;
GtkWidget *updates_switch;
GtkWidget *fallback_switch;
GtkWidget *cairo_switch;
GtkWidget *baselines_switch;
GtkWidget *layout_switch;
GtkWidget *focus_switch;
@@ -388,25 +388,25 @@ updates_activate (GtkSwitch *sw,
}
static void
fallback_activate (GtkSwitch *sw,
GParamSpec *pspec,
GtkInspectorVisual *vis)
cairo_activate (GtkSwitch *sw,
GParamSpec *pspec,
GtkInspectorVisual *vis)
{
GtkInspectorWindow *iw;
gboolean fallback;
gboolean active;
guint flags;
GList *toplevels, *l;
fallback = gtk_switch_get_active (sw);
active = gtk_switch_get_active (sw);
iw = GTK_INSPECTOR_WINDOW (gtk_widget_get_root (GTK_WIDGET (vis)));
if (iw == NULL)
return;
flags = gsk_get_debug_flags ();
if (fallback)
flags = flags | GSK_DEBUG_FALLBACK;
if (active)
flags = flags | GSK_DEBUG_CAIRO;
else
flags = flags & ~GSK_DEBUG_FALLBACK;
flags = flags & ~GSK_DEBUG_CAIRO;
gsk_set_debug_flags (flags);
toplevels = gtk_window_list_toplevels ();
@@ -1055,9 +1055,9 @@ row_activated (GtkListBox *box,
GtkSwitch *sw = GTK_SWITCH (vis->updates_switch);
gtk_switch_set_active (sw, !gtk_switch_get_active (sw));
}
else if (gtk_widget_is_ancestor (vis->fallback_switch, GTK_WIDGET (row)))
else if (gtk_widget_is_ancestor (vis->cairo_switch, GTK_WIDGET (row)))
{
GtkSwitch *sw = GTK_SWITCH (vis->fallback_switch);
GtkSwitch *sw = GTK_SWITCH (vis->cairo_switch);
gtk_switch_set_active (sw, !gtk_switch_get_active (sw));
}
else if (gtk_widget_is_ancestor (vis->baselines_switch, GTK_WIDGET (row)))
@@ -1199,7 +1199,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_scale_adjustment);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, fps_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, updates_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, fallback_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, cairo_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, baselines_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, layout_switch);
gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, focus_switch);
@@ -1208,7 +1208,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass)
gtk_widget_class_bind_template_callback (widget_class, fps_activate);
gtk_widget_class_bind_template_callback (widget_class, updates_activate);
gtk_widget_class_bind_template_callback (widget_class, fallback_activate);
gtk_widget_class_bind_template_callback (widget_class, cairo_activate);
gtk_widget_class_bind_template_callback (widget_class, direction_changed);
gtk_widget_class_bind_template_callback (widget_class, baselines_activate);
gtk_widget_class_bind_template_callback (widget_class, layout_activate);

View File

@@ -427,23 +427,24 @@
</child>
<child>
<object class="GtkListBoxRow">
<property name="tooltip-text" translatable="yes">Tints all the places where the current renderer uses Cairo instead of the GPU.</property>
<child>
<object class="GtkBox">
<property name="spacing">40</property>
<child>
<object class="GtkLabel" id="fallback_label">
<property name="label" translatable="yes">Show Fallback Rendering</property>
<object class="GtkLabel" id="cairo_label">
<property name="label" translatable="yes">Show Cairo Rendering</property>
<property name="halign">start</property>
<property name="valign">baseline</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkSwitch" id="fallback_switch">
<object class="GtkSwitch" id="cairo_switch">
<property name="halign">end</property>
<property name="valign">center</property>
<property name="hexpand">1</property>
<signal name="notify::active" handler="fallback_activate"/>
<signal name="notify::active" handler="cairo_activate"/>
</object>
</child>
</object>
@@ -718,7 +719,7 @@
<widget name="hidpi_label"/>
<widget name="animation_label"/>
<widget name="updates_label"/>
<widget name="fallback_label"/>
<widget name="cairo_label"/>
<widget name="baselines_label"/>
<widget name="layout_label_box"/>
<widget name="focus_label"/>