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

Revert "tools: Drop support for the gl renderer"

See merge request GNOME/gtk!7778
This commit is contained in:
Benjamin Otte
2024-10-01 23:57:20 +00:00
2 changed files with 28 additions and 22 deletions

View File

@@ -459,18 +459,6 @@ replay_create_test (GskRenderNode *node,
/* Check that the node didn't grow. */
if (!graphene_rect_contains_rect (&node_bounds, &result_bounds))
g_test_fail_printf ("Node bounds grew");
else if (!graphene_rect_equal (&node_bounds, &result_bounds))
{
GskRenderNode *nodes[2];
/* Add a transparent color node to pad the bounds */
nodes[0] = gsk_color_node_new (&(GdkRGBA) { 0,0,0,0 },
&node_bounds);
nodes[1] = result;
result = gsk_container_node_new (nodes, 2);
gsk_render_node_unref (nodes[0]);
gsk_render_node_unref (nodes[1]);
}
return result;
}
@@ -517,20 +505,18 @@ clip_create_reference (GskRenderer *renderer,
{
const cairo_rectangle_int_t *int_clip = data;
GskRenderNode *texture_node, *reference_node;
graphene_rect_t clip_rect;
graphene_rect_t texture_bounds, clip_rect;
GdkTexture *result;
gsk_rect_from_cairo (&clip_rect, int_clip);
texture_bounds = GRAPHENE_RECT_INIT (0,
0,
gdk_texture_get_width (texture),
gdk_texture_get_height (texture));
texture_node = gsk_texture_node_new (texture,
&GRAPHENE_RECT_INIT (
0,
0,
gdk_texture_get_width (texture),
gdk_texture_get_height (texture)
));
texture_node = gsk_texture_node_new (texture, &texture_bounds);
reference_node = gsk_clip_node_new (texture_node, &clip_rect);
result = gsk_renderer_render_texture (renderer, reference_node, NULL);
result = gsk_renderer_render_texture (renderer, reference_node, &texture_bounds);
gsk_render_node_unref (reference_node);
gsk_render_node_unref (texture_node);
@@ -583,11 +569,17 @@ colorflip_create_reference (GskRenderer *renderer,
return result;
}
typedef enum
{
KEEP_BOUNDS = (1 << 0),
} TestFlags;
typedef struct _TestSetup TestSetup;
struct _TestSetup
{
const char *name;
const char *description;
TestFlags flags;
gpointer (* setup) (GskRenderNode *node);
void (* free) (gpointer data);
GskRenderNode * (* create_test) (GskRenderNode *node,
@@ -631,12 +623,14 @@ static const TestSetup test_setups[] = {
{
.name = "replay",
.description = "Do replay test",
.flags = KEEP_BOUNDS,
.create_test = replay_create_test,
.create_reference = NULL,
},
{
.name = "clip",
.description = "Do clip test",
.flags = KEEP_BOUNDS,
.setup = clip_setup,
.free = g_free,
.create_test = clip_create_test,
@@ -659,8 +653,17 @@ run_single_test (const TestSetup *setup,
{
GskRenderNode *test;
GdkTexture *reference, *rendered, *diff;
graphene_rect_t test_bounds, *render_bounds;
gpointer test_data;
if (setup->flags & KEEP_BOUNDS)
{
gsk_render_node_get_bounds (org_test, &test_bounds);
render_bounds = &test_bounds;
}
else
render_bounds = NULL;
if (setup->setup)
test_data = setup->setup (org_test);
else
@@ -674,7 +677,7 @@ run_single_test (const TestSetup *setup,
else
test = gsk_render_node_ref (org_test);
rendered = gsk_renderer_render_texture (renderer, test, NULL);
rendered = gsk_renderer_render_texture (renderer, test, render_bounds);
save_image (rendered, file_name, setup->name, ".out.png");
if (setup->create_reference)

View File

@@ -89,6 +89,9 @@ get_renderer_for_name (const char *renderer_name)
#endif
else if (g_ascii_strcasecmp (renderer_name, "cairo") == 0)
return gsk_cairo_renderer_new ();
else if (g_ascii_strcasecmp (renderer_name, "opengl") == 0 ||
g_ascii_strcasecmp (renderer_name, "gl") == 0)
return gsk_gl_renderer_new ();
else if (g_ascii_strcasecmp (renderer_name, "ngl") == 0)
return gsk_ngl_renderer_new ();
#ifdef GDK_RENDERING_VULKAN