summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/xlib/xm_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/xlib/xm_api.c')
-rw-r--r--src/mesa/pipe/xlib/xm_api.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mesa/pipe/xlib/xm_api.c b/src/mesa/pipe/xlib/xm_api.c
index 9c7713790b..83e2b529a4 100644
--- a/src/mesa/pipe/xlib/xm_api.c
+++ b/src/mesa/pipe/xlib/xm_api.c
@@ -75,12 +75,16 @@
#include "pipe/p_defines.h"
#include "pipe/p_context.h"
+#include "xm_winsys_aub.h"
+
/**
* Global X driver lock
*/
_glthread_Mutex _xmesa_lock;
+int xmesa_mode;
+
/**********************************************************************/
/***** X Utility Functions *****/
@@ -738,7 +742,14 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list )
pf = choose_pixel_format(v);
assert(pf);
- pipe = xmesa_create_pipe_context( c, pf );
+ if (!getenv("XM_AUB")) {
+ xmesa_mode = XMESA_SOFTPIPE;
+ pipe = xmesa_create_pipe_context( c, pf );
+ }
+ else {
+ xmesa_mode = XMESA_AUB;
+ pipe = xmesa_create_i965simple( xmesa_get_pipe_winsys_aub() );
+ }
c->st = st_create_context(pipe, &v->mesa_visual,
share_list ? share_list->st : NULL);
@@ -1164,7 +1175,10 @@ void XMesaSwapBuffers( XMesaBuffer b )
surf = st_get_framebuffer_surface(b->stfb, ST_SURFACE_BACK_LEFT);
if (surf) {
- xmesa_display_surface(b, surf);
+ if (xmesa_mode == XMESA_AUB)
+ xmesa_display_aub( surf );
+ else
+ xmesa_display_surface(b, surf);
}
xmesa_check_and_update_buffer_size(NULL, b);