diff options
author | Francisco Jerez <currojerez@riseup.net> | 2010-02-08 19:27:58 +0100 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2010-02-16 10:38:50 -0500 |
commit | f845e4ff1bf4e7e2f804024157494a12eedec174 (patch) | |
tree | 07edb3160feed5280a27feba17a6c801c780637b /src/gallium/state_trackers/dri/dri_drawable.c | |
parent | 88a560691b904cc8eacda62d9bf80987d3c430c1 (diff) | |
download | external_mesa3d-f845e4ff1bf4e7e2f804024157494a12eedec174.zip external_mesa3d-f845e4ff1bf4e7e2f804024157494a12eedec174.tar.gz external_mesa3d-f845e4ff1bf4e7e2f804024157494a12eedec174.tar.bz2 |
st/dri2: Use event-driven buffer validation.
Diffstat (limited to 'src/gallium/state_trackers/dri/dri_drawable.c')
-rw-r--r-- | src/gallium/state_trackers/dri/dri_drawable.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c index 97277c0..4d7596a 100644 --- a/src/gallium/state_trackers/dri/dri_drawable.c +++ b/src/gallium/state_trackers/dri/dri_drawable.c @@ -284,7 +284,20 @@ dri_update_buffer(struct pipe_screen *screen, void *context_private) { struct dri_context *ctx = (struct dri_context *)context_private; + if (ctx->d_stamp == *ctx->dPriv->pStamp && + ctx->r_stamp == *ctx->rPriv->pStamp) + return; + + ctx->d_stamp = *ctx->dPriv->pStamp; + ctx->r_stamp = *ctx->rPriv->pStamp; + + st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL); + + /* Ask the X server for new renderbuffers. */ dri_get_buffers(ctx->dPriv); + if (ctx->dPriv != ctx->rPriv) + dri_get_buffers(ctx->rPriv); + } void |