diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/targets/osmesa/meson.build | 9 | ||||
-rw-r--r-- | src/gallium/targets/osmesa/test-render.c | 43 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/gallium/targets/osmesa/meson.build b/src/gallium/targets/osmesa/meson.build index e873e311aa0..1612908d016 100644 --- a/src/gallium/targets/osmesa/meson.build +++ b/src/gallium/targets/osmesa/meson.build @@ -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 index 00000000000..62118607713 --- /dev/null +++ b/src/gallium/targets/osmesa/test-render.c @@ -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; +} |