diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build
index 1d70d968d8..bf2af382ba 100644
--- a/testsuite/gsk/meson.build
+++ b/testsuite/gsk/meson.build
@@ -466,6 +466,9 @@ if os_linux
'stop_offloading.node',
'source.node',
'nested.node',
+ 'clipped.node',
+ 'not-clipped.node',
+ 'complex-clip.node',
]
foreach test : offload_tests
diff --git a/testsuite/gsk/offload/clipped.node b/testsuite/gsk/offload/clipped.node
new file mode 100644
index 0000000000..e19b0e73a9
--- /dev/null
+++ b/testsuite/gsk/offload/clipped.node
@@ -0,0 +1,9 @@
+clip {
+ clip: 10 10 10 10;
+ child: subsurface {
+ child: texture {
+ bounds: 0 0 20 20;
+ texture: url('data:image/svg+xml;utf-8,');
+ }
+ }
+}
diff --git a/testsuite/gsk/offload/clipped.offload b/testsuite/gsk/offload/clipped.offload
new file mode 100644
index 0000000000..94737aed76
--- /dev/null
+++ b/testsuite/gsk/offload/clipped.offload
@@ -0,0 +1 @@
+0: not offloaded
diff --git a/testsuite/gsk/offload/complex-clip.node b/testsuite/gsk/offload/complex-clip.node
new file mode 100644
index 0000000000..8fa13abb81
--- /dev/null
+++ b/testsuite/gsk/offload/complex-clip.node
@@ -0,0 +1,18 @@
+rounded-clip {
+ clip: 0 0 50 50 / 20;
+ child: clip {
+ clip: 2 2 40 40;
+ child: container {
+ color {
+ color: white;
+ bounds: 0 0 50 50;
+ }
+ subsurface {
+ child: texture {
+ bounds: 10 10 20 20;
+ texture: url('data:image/svg+xml;utf-8,');
+ }
+ }
+ }
+ }
+}
diff --git a/testsuite/gsk/offload/complex-clip.offload b/testsuite/gsk/offload/complex-clip.offload
new file mode 100644
index 0000000000..94737aed76
--- /dev/null
+++ b/testsuite/gsk/offload/complex-clip.offload
@@ -0,0 +1 @@
+0: not offloaded
diff --git a/testsuite/gsk/offload/not-clipped.node b/testsuite/gsk/offload/not-clipped.node
new file mode 100644
index 0000000000..b9c339a82b
--- /dev/null
+++ b/testsuite/gsk/offload/not-clipped.node
@@ -0,0 +1,9 @@
+clip {
+ clip: 0 0 50 50;
+ child: subsurface {
+ child: texture {
+ bounds: 0 0 20 20;
+ texture: url('data:image/svg+xml;utf-8,');
+ }
+ }
+}
diff --git a/testsuite/gsk/offload/not-clipped.offload b/testsuite/gsk/offload/not-clipped.offload
new file mode 100644
index 0000000000..730cbd06bb
--- /dev/null
+++ b/testsuite/gsk/offload/not-clipped.offload
@@ -0,0 +1 @@
+0: offloaded, raised, above: -, texture: 20x20, source: 0 0 20 20, dest: 0 0 20 20