[gtk+/wip/baedert/gl: 137/146] testsuite: Add selected gl renderer test node files
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/baedert/gl: 137/146] testsuite: Add selected gl renderer test node files
- Date: Thu, 28 Dec 2017 15:56:31 +0000 (UTC)
commit 8312ee0ebea6fad22490fd3aef17132cc259ac25
Author: Timm Bäder <mail baedert org>
Date: Mon Dec 25 12:56:21 2017 +0100
testsuite: Add selected gl renderer test node files
testsuite/gsk/compare-render.c | 137 ++++++++++++++++++++
testsuite/gsk/meson.build | 37 ++++++
testsuite/gsk/outset_shadow_blurred_offset.gl.png | Bin 0 -> 118 bytes
testsuite/gsk/outset_shadow_blurred_offset.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_blurred_simple.gl.png | Bin 0 -> 1405 bytes
testsuite/gsk/outset_shadow_blurred_simple.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_blurred_simple2.gl.png | Bin 0 -> 344 bytes
testsuite/gsk/outset_shadow_blurred_simple2.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_blurred_small.gl.png | Bin 0 -> 114 bytes
testsuite/gsk/outset_shadow_blurred_small.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_offset_both.gl.png | Bin 0 -> 712 bytes
testsuite/gsk/outset_shadow_offset_both.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_offsetx.gl.png | Bin 0 -> 391 bytes
testsuite/gsk/outset_shadow_offsetx.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_offsety.gl.png | Bin 0 -> 385 bytes
testsuite/gsk/outset_shadow_offsety.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_rounded1.gl.png | Bin 0 -> 360 bytes
testsuite/gsk/outset_shadow_rounded1.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_rounded2.gl.png | Bin 0 -> 360 bytes
testsuite/gsk/outset_shadow_rounded2.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_rounded_top.gl.png | Bin 0 -> 256 bytes
testsuite/gsk/outset_shadow_rounded_top.node | Bin 0 -> 208 bytes
testsuite/gsk/outset_shadow_simple.gl.png | Bin 0 -> 396 bytes
testsuite/gsk/outset_shadow_simple.node | Bin 0 -> 208 bytes
24 files changed, 174 insertions(+), 0 deletions(-)
---
diff --git a/testsuite/gsk/compare-render.c b/testsuite/gsk/compare-render.c
new file mode 100644
index 0000000..f83e4e0
--- /dev/null
+++ b/testsuite/gsk/compare-render.c
@@ -0,0 +1,137 @@
+#include <string.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include "reftest-compare.h"
+
+char *
+file_replace_extension (const char *old_file,
+ const char *old_ext,
+ const char *new_ext)
+{
+ GString *file = g_string_new (NULL);
+
+ if (g_str_has_suffix (old_file, old_ext))
+ g_string_append_len (file, old_file, strlen (old_file) - strlen (old_ext));
+ else
+ g_string_append (file, old_file);
+
+ g_string_append (file, new_ext);
+
+ return g_string_free (file, FALSE);
+}
+
+static char *
+get_output_file (const char *file,
+ const char *orig_ext,
+ const char *new_ext)
+{
+ const char *dir;
+ char *result, *base;
+ char *name;
+
+ dir = g_get_tmp_dir ();
+ base = g_path_get_basename (file);
+ name = file_replace_extension (base, orig_ext, new_ext);
+
+ result = g_strconcat (dir, G_DIR_SEPARATOR_S, name, NULL);
+
+ g_free (base);
+ g_free (name);
+
+ return result;
+}
+
+static void
+save_image (cairo_surface_t *surface,
+ const char *test_name,
+ const char *extension)
+{
+ char *filename = get_output_file (test_name, ".node", extension);
+
+ g_test_message ("Storing test result image at %s", filename);
+ g_assert (cairo_surface_write_to_png (surface, filename) == CAIRO_STATUS_SUCCESS);
+ g_free (filename);
+}
+
+/*
+ * Arguments:
+ * 1) .node file to compare
+ * 2) .png file to compare the rendered .node file to
+ */
+int
+main (int argc, char **argv)
+{
+ cairo_surface_t *reference_surface = NULL;
+ cairo_surface_t *rendered_surface = NULL;
+ cairo_surface_t *diff_surface = NULL;
+ GdkTexture *texture;
+ GskRenderer *renderer;
+ GdkWindow *window;
+ GskRenderNode *node;
+ const char *node_file;
+ const char *png_file;
+
+ g_assert (argc == 3);
+
+ gtk_init ();
+
+ node_file = argv[1];
+ png_file = argv[2];
+
+ window = gdk_window_new_toplevel (gdk_display_get_default(), 10 , 10);
+ renderer = gsk_renderer_new_for_window (window);
+
+ g_test_message ("Node file: '%s'\n", node_file);
+ g_test_message ("PNG file: '%s'\n", png_file);
+
+ /* Load the render node from the given .node file */
+ {
+ GBytes *bytes;
+ GError *error = NULL;
+ gsize len;
+ char *contents;
+
+ if (!g_file_get_contents (node_file, &contents, &len, &error))
+ {
+ g_test_message ("Could not open node file: %s\n", error->message);
+ g_clear_error (&error);
+ g_test_fail ();
+ return -1;
+ }
+
+ bytes = g_bytes_new_take (contents, len);
+ node = gsk_render_node_deserialize (bytes, &error);
+ g_bytes_unref (bytes);
+
+ g_assert (node != NULL);
+ }
+
+ /* Render the .node file and download to cairo surface */
+ texture = gsk_renderer_render_texture (renderer, node, NULL);
+ g_assert (texture != NULL);
+
+ rendered_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
+ gdk_texture_get_width (texture),
+ gdk_texture_get_height (texture));
+ gdk_texture_download (texture,
+ cairo_image_surface_get_data (rendered_surface),
+ cairo_image_surface_get_stride (rendered_surface));
+ cairo_surface_mark_dirty (rendered_surface);
+
+ /* Load the given reference png file */
+ reference_surface = cairo_image_surface_create_from_png (png_file);
+ g_assert (reference_surface != NULL);
+
+ /* Now compare the two */
+ diff_surface = reftest_compare_surfaces (rendered_surface, reference_surface);
+
+ save_image (rendered_surface, node_file, ".out.png");
+
+ if (diff_surface)
+ save_image (diff_surface, node_file, ".diff.png");
+
+ g_assert (diff_surface == NULL);
+
+ return 0;
+}
diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build
index 65c065f..a2f6318 100644
--- a/testsuite/gsk/meson.build
+++ b/testsuite/gsk/meson.build
@@ -10,6 +10,14 @@ test_render_nodes = executable(
install_dir: testexecdir
)
+compare_render = executable(
+ 'compare-render',
+ ['compare-render.c', 'reftest-compare.c'],
+ dependencies: libgtk_dep,
+ install: get_option('install-tests'),
+ install_dir: testexecdir
+)
+
test('nodes (cairo)', test_render_nodes,
args: [ '--tap', '-k' ],
env: [ 'GIO_USE_VOLUME_MONITOR=unix',
@@ -22,6 +30,35 @@ test('nodes (cairo)', test_render_nodes,
],
suite: 'gsk')
+# Interesting render nodes proven to be rendered 'correctly' by the GL renderer.
+gl_tests = [
+ ['outset shadow simple', 'outset_shadow_simple.node', 'outset_shadow_simple.gl.png'],
+ ['outset shadow offset x', 'outset_shadow_offsetx.node', 'outset_shadow_offsetx.gl.png'],
+ ['outset shadow offset y', 'outset_shadow_offsety.node', 'outset_shadow_offsety.gl.png'],
+ ['outset shadow offset both', 'outset_shadow_offset_both.node', 'outset_shadow_offset_both.gl.png'],
+ ['outset shadow rounded1', 'outset_shadow_rounded1.node', 'outset_shadow_rounded1.gl.png'],
+ ['outset shadow rounded2', 'outset_shadow_rounded2.node', 'outset_shadow_rounded2.gl.png'],
+ ['outset shadow rounded top', 'outset_shadow_rounded_top.node', 'outset_shadow_rounded_top.gl.png'],
+ ['outset shadow blurred simple', 'outset_shadow_blurred_simple.node',
'outset_shadow_blurred_simple.gl.png'],
+ ['outset shadow blurred small', 'outset_shadow_blurred_small.node', 'outset_shadow_blurred_small.gl.png'],
+ ['outset shadow blurred offset', 'outset_shadow_blurred_offset.node',
'outset_shadow_blurred_offset.gl.png'],
+]
+
+foreach gl_test : gl_tests
+ test(gl_test[0], compare_render,
+ args: [join_paths(meson.current_source_dir(), gl_test[1]),
+ join_paths(meson.current_source_dir(), gl_test[2])],
+ env: [ 'GIO_USE_VOLUME_MONITOR=unix',
+ 'GSETTINGS_BACKEND=memory',
+ 'GTK_CSD=1',
+ 'G_ENABLE_DIAGNOSTIC=0',
+ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()),
+ 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()),
+ 'GSK_RENDERER=opengl'
+ ],
+ suite: 'gsk')
+endforeach
+
if have_vulkan
test('nodes (vulkan)', test_render_nodes,
args: [ '--tap', '-k' ],
diff --git a/testsuite/gsk/outset_shadow_blurred_offset.gl.png
b/testsuite/gsk/outset_shadow_blurred_offset.gl.png
new file mode 100644
index 0000000..f4d0f4b
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_offset.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_blurred_offset.node b/testsuite/gsk/outset_shadow_blurred_offset.node
new file mode 100644
index 0000000..7d982d6
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_offset.node differ
diff --git a/testsuite/gsk/outset_shadow_blurred_simple.gl.png
b/testsuite/gsk/outset_shadow_blurred_simple.gl.png
new file mode 100644
index 0000000..bcd96d8
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_simple.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_blurred_simple.node b/testsuite/gsk/outset_shadow_blurred_simple.node
new file mode 100644
index 0000000..66b38b9
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_simple.node differ
diff --git a/testsuite/gsk/outset_shadow_blurred_simple2.gl.png
b/testsuite/gsk/outset_shadow_blurred_simple2.gl.png
new file mode 100644
index 0000000..96a2ba7
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_simple2.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_blurred_simple2.node
b/testsuite/gsk/outset_shadow_blurred_simple2.node
new file mode 100644
index 0000000..59f250c
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_simple2.node differ
diff --git a/testsuite/gsk/outset_shadow_blurred_small.gl.png
b/testsuite/gsk/outset_shadow_blurred_small.gl.png
new file mode 100644
index 0000000..880db76
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_small.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_blurred_small.node b/testsuite/gsk/outset_shadow_blurred_small.node
new file mode 100644
index 0000000..291389a
Binary files /dev/null and b/testsuite/gsk/outset_shadow_blurred_small.node differ
diff --git a/testsuite/gsk/outset_shadow_offset_both.gl.png b/testsuite/gsk/outset_shadow_offset_both.gl.png
new file mode 100644
index 0000000..0b69710
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offset_both.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_offset_both.node b/testsuite/gsk/outset_shadow_offset_both.node
new file mode 100644
index 0000000..014d8ce
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offset_both.node differ
diff --git a/testsuite/gsk/outset_shadow_offsetx.gl.png b/testsuite/gsk/outset_shadow_offsetx.gl.png
new file mode 100644
index 0000000..7ae6367
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offsetx.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_offsetx.node b/testsuite/gsk/outset_shadow_offsetx.node
new file mode 100644
index 0000000..f88bee5
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offsetx.node differ
diff --git a/testsuite/gsk/outset_shadow_offsety.gl.png b/testsuite/gsk/outset_shadow_offsety.gl.png
new file mode 100644
index 0000000..c54898f
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offsety.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_offsety.node b/testsuite/gsk/outset_shadow_offsety.node
new file mode 100644
index 0000000..3b0af62
Binary files /dev/null and b/testsuite/gsk/outset_shadow_offsety.node differ
diff --git a/testsuite/gsk/outset_shadow_rounded1.gl.png b/testsuite/gsk/outset_shadow_rounded1.gl.png
new file mode 100644
index 0000000..8c04949
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded1.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_rounded1.node b/testsuite/gsk/outset_shadow_rounded1.node
new file mode 100644
index 0000000..956f79b
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded1.node differ
diff --git a/testsuite/gsk/outset_shadow_rounded2.gl.png b/testsuite/gsk/outset_shadow_rounded2.gl.png
new file mode 100644
index 0000000..8c04949
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded2.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_rounded2.node b/testsuite/gsk/outset_shadow_rounded2.node
new file mode 100644
index 0000000..8b8be01
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded2.node differ
diff --git a/testsuite/gsk/outset_shadow_rounded_top.gl.png b/testsuite/gsk/outset_shadow_rounded_top.gl.png
new file mode 100644
index 0000000..d448d84
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded_top.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_rounded_top.node b/testsuite/gsk/outset_shadow_rounded_top.node
new file mode 100644
index 0000000..ea9dee5
Binary files /dev/null and b/testsuite/gsk/outset_shadow_rounded_top.node differ
diff --git a/testsuite/gsk/outset_shadow_simple.gl.png b/testsuite/gsk/outset_shadow_simple.gl.png
new file mode 100644
index 0000000..87c691c
Binary files /dev/null and b/testsuite/gsk/outset_shadow_simple.gl.png differ
diff --git a/testsuite/gsk/outset_shadow_simple.node b/testsuite/gsk/outset_shadow_simple.node
new file mode 100644
index 0000000..65adef7
Binary files /dev/null and b/testsuite/gsk/outset_shadow_simple.node differ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]