gallium/osmesa: Introduce a test.

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>
This commit is contained in:
Eric Anholt 2019-07-03 11:34:37 -07:00
parent d89d075589
commit 281466332b
2 changed files with 52 additions and 0 deletions

View 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

View file

@ -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;
}