gallium/osmesa: Introduce a test.
authorEric Anholt <eric@anholt.net>
Wed, 3 Jul 2019 18:34:37 +0000 (11:34 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 4 Sep 2019 23:43:36 +0000 (16:43 -0700)
Given that we occasionally touch this code and probably nobody really
wants to think about it, introduce a minimal test so that we know we
haven't completely broken OSMesa.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/gallium/targets/osmesa/meson.build
src/gallium/targets/osmesa/test-render.c [new file with mode: 0644]

index e873e311aa04d0b05865c3842e1b81f3178ee1ee..1612908d01644930f24808f1b72f20ede2c84a42 100644 (file)
@@ -62,3 +62,12 @@ pkg.generate(
   libraries : libosmesa,
   libraries_private : gl_priv_libs,
 )
+
+if with_tests
+  test('osmesa-render',
+       executable('osmesa-render',
+                  'test-render.c',
+                  include_directories : inc_common,
+                  link_with: libosmesa),
+       suite: 'gallium')
+endif
diff --git a/src/gallium/targets/osmesa/test-render.c b/src/gallium/targets/osmesa/test-render.c
new file mode 100644 (file)
index 0000000..6211860
--- /dev/null
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "GL/osmesa.h"
+
+static void
+render(void)
+{
+   glClearColor(0, 1, 0, 0);
+   glClear(GL_COLOR_BUFFER_BIT);
+}
+
+int
+main(int argc, char **argv)
+{
+   OSMesaContext ctx;
+   uint32_t pixel;
+   uint32_t green = 0xff << 8;
+   int w = 1, h = 1;
+
+   ctx = OSMesaCreateContext(GL_RGBA, NULL);
+   if (!ctx) {
+      fprintf(stderr, "Context create failed\n");
+      return 1;
+   }
+
+   if (!OSMesaMakeCurrent(ctx, &pixel, GL_UNSIGNED_BYTE, w, h )) {
+      fprintf(stderr, "MakeCurrent failed\n");
+      return 1;
+   }
+
+   render();
+   glFinish();
+
+   if (pixel != green) {
+      fprintf(stderr, "Expected: 0x%08x\n", green);
+      fprintf(stderr, "Probed: 0x%08x\n", pixel);
+      return 1;
+   }
+
+   OSMesaDestroyContext(ctx);
+
+   return 0;
+}