summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/dri/dri_drawable.c
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2009-05-18 02:50:15 +0100
committerJakob Bornecrantz <jakob@vmware.com>2009-05-18 20:54:09 +0100
commit7d11a392d780ef7f0374f8da87e3ba416d880cf2 (patch)
treeb3126632fa9c816af898b0e2970efdb7f9b704fa /src/gallium/state_trackers/dri/dri_drawable.c
parentd0639d067e9b95875b1d395eaa66388884996296 (diff)
downloadexternal_mesa3d-7d11a392d780ef7f0374f8da87e3ba416d880cf2.zip
external_mesa3d-7d11a392d780ef7f0374f8da87e3ba416d880cf2.tar.gz
external_mesa3d-7d11a392d780ef7f0374f8da87e3ba416d880cf2.tar.bz2
st/dri: Only create new textures if drawable has changed
Diffstat (limited to 'src/gallium/state_trackers/dri/dri_drawable.c')
-rw-r--r--src/gallium/state_trackers/dri/dri_drawable.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c
index 15a2088..865cc8d 100644
--- a/src/gallium/state_trackers/dri/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/dri_drawable.c
@@ -138,6 +138,18 @@ dri_get_buffers(__DRIdrawablePrivate * dPriv)
dri_drawable->pBackClipRects[0].x2 = dri_drawable->w;
dri_drawable->pBackClipRects[0].y2 = dri_drawable->h;
+ if (drawable->old_num == count &&
+ drawable->old_w == dri_drawable->w &&
+ drawable->old_h == dri_drawable->h &&
+ memcmp(drawable->old, buffers, sizeof(__DRIbuffer) * count) == 0) {
+ return;
+ } else {
+ drawable->old_num = count;
+ drawable->old_w = dri_drawable->w;
+ drawable->old_h = dri_drawable->h;
+ memcpy(drawable->old, buffers, sizeof(__DRIbuffer) * count);
+ }
+
for (i = 0; i < count; i++) {
enum pipe_format format = 0;
int index = 0;