diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build index 2f5e0ce04b..99e61c27d5 100644 --- a/testsuite/gsk/meson.build +++ b/testsuite/gsk/meson.build @@ -1,5 +1,5 @@ compare_render = executable('compare-render', - ['compare-render.c', '../reftests/reftest-compare.c', 'replay-node.c'], + ['compare-render.c', '../reftests/reftest-compare.c', 'replay-node.c', '../gdk/udmabuf.c'], dependencies: libgtk_static_dep, c_args: common_cflags + ['-DGTK_COMPILATION'], ) diff --git a/testsuite/gsk/replay-node.c b/testsuite/gsk/replay-node.c index 8a51a54bfb..13cc804ef5 100644 --- a/testsuite/gsk/replay-node.c +++ b/testsuite/gsk/replay-node.c @@ -1,6 +1,7 @@ #include #include #include +#include "../gdk/udmabuf.h" void replay_node (GskRenderNode *node, GtkSnapshot *snapshot); @@ -113,7 +114,23 @@ replay_texture_node (GskRenderNode *node, GtkSnapshot *snapshot) graphene_rect_t bounds; gsk_render_node_get_bounds (node, &bounds); + g_object_ref (texture); + + if (g_test_rand_bit ()) + { + GdkTexture *t; + + t = udmabuf_texture_from_texture (texture, NULL); + if (t) + { + g_object_unref (texture); + texture = t; + } + } + gtk_snapshot_append_texture (snapshot, texture, &bounds); + + g_object_unref (texture); } static void @@ -327,7 +344,30 @@ replay_texture_scale_node (GskRenderNode *node, GtkSnapshot *snapshot) graphene_rect_t bounds; gsk_render_node_get_bounds (node, &bounds); + g_object_ref (texture); + + if (g_test_rand_bit ()) + { + GdkTexture *t; + GError *error = NULL; + + t = udmabuf_texture_from_texture (texture, &error); + if (t) + { + g_test_message ("Using dmabuf texture"); + g_object_unref (texture); + texture = t; + } + else + { + g_test_message ("Creating dmabuf texture failed: %s", error->message); + g_error_free (error); + } + } + gtk_snapshot_append_scaled_texture (snapshot, texture, filter, &bounds); + + g_object_unref (texture); } static void