summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys
diff options
context:
space:
mode:
authorBen Skeggs <[email protected]>2008-04-23 12:39:38 +1000
committerBen Skeggs <[email protected]>2008-04-23 12:39:38 +1000
commit104ff59585ad1888c8cef5ad9de0e2fdb3f48c21 (patch)
tree9128984eef4a90cc6177d336759ce795b835d71f /src/gallium/winsys
parentb20acef90695d6e5975f538b6e9cb812b05f0cf6 (diff)
parent6fc530ccda2971a5d99a955ad90ae9762238040f (diff)
Merge branch 'upstream-gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'src/gallium/winsys')
-rw-r--r--src/gallium/winsys/xlib/fakeglx.c7
-rw-r--r--src/gallium/winsys/xlib/xm_winsys.c15
2 files changed, 21 insertions, 1 deletions
diff --git a/src/gallium/winsys/xlib/fakeglx.c b/src/gallium/winsys/xlib/fakeglx.c
index 902a7550754..6e04cb4117c 100644
--- a/src/gallium/winsys/xlib/fakeglx.c
+++ b/src/gallium/winsys/xlib/fakeglx.c
@@ -1504,6 +1504,13 @@ Fake_glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
#endif
}
+ if (MakeCurrent_PrevContext == ctx &&
+ MakeCurrent_PrevDrawable == draw &&
+ MakeCurrent_PrevReadable == read &&
+ MakeCurrent_PrevDrawBuffer == drawBuffer &&
+ MakeCurrent_PrevReadBuffer == readBuffer)
+ return True;
+
MakeCurrent_PrevContext = ctx;
MakeCurrent_PrevDrawable = draw;
MakeCurrent_PrevReadable = read;
diff --git a/src/gallium/winsys/xlib/xm_winsys.c b/src/gallium/winsys/xlib/xm_winsys.c
index 9a20bdfb699..5a424d0ac7f 100644
--- a/src/gallium/winsys/xlib/xm_winsys.c
+++ b/src/gallium/winsys/xlib/xm_winsys.c
@@ -84,6 +84,7 @@ struct xmesa_surface
struct pipe_surface surface;
int tileSize;
+ boolean no_swap;
};
@@ -252,6 +253,9 @@ xmesa_display_surface(XMesaBuffer b, const struct pipe_surface *surf)
const struct xmesa_surface *xm_surf
= xmesa_surface((struct pipe_surface *) surf);
+ if (xm_surf->no_swap)
+ return;
+
if (xm_surf->tileSize) {
xmesa_display_surface_tiled(b, surf);
return;
@@ -529,6 +533,13 @@ static struct pipe_surface *
xm_surface_alloc(struct pipe_winsys *ws)
{
struct xmesa_surface *xms = CALLOC_STRUCT(xmesa_surface);
+ static boolean no_swap = 0;
+ static boolean firsttime = 1;
+
+ if (firsttime) {
+ no_swap = getenv("SP_NO_RAST") != NULL;
+ firsttime = 0;
+ }
assert(ws);
@@ -540,7 +551,9 @@ xm_surface_alloc(struct pipe_winsys *ws)
xms->tileSize = 32; /** probably temporary */
}
#endif
-
+
+ xms->no_swap = no_swap;
+
return &xms->surface;
}