diff options
author | Jakob Bornecrantz <[email protected]> | 2009-11-18 17:45:39 +0100 |
---|---|---|
committer | Jakob Bornecrantz <[email protected]> | 2009-11-18 17:49:38 +0100 |
commit | 5109484bd9cd79ed88af59280bd0be5a4150f37c (patch) | |
tree | 09c8b7c05746d72ee2d2f195ff496dafa288e7b6 | |
parent | 8d6da811d4fff50dc42e71c6149759908a458f7f (diff) |
st/xorg: Flush any pending operations on upload
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_exa.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c index 3a51ad2d598..3d83b5700d5 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.c +++ b/src/gallium/state_trackers/xorg/xorg_exa.c @@ -230,6 +230,11 @@ ExaUploadToScreen(PixmapPtr pPix, int x, int y, int w, int h, char *src, if (!priv || !priv->tex) return FALSE; + /* make sure that any pending operations are flushed to hardware */ + if (exa->pipe->is_texture_referenced(exa->pipe, priv->tex, 0, 0) & + (PIPE_REFERENCED_FOR_READ | PIPE_REFERENCED_FOR_WRITE)) + xorg_exa_flush(exa, 0, NULL); + transfer = exa->scrn->get_tex_transfer(exa->scrn, priv->tex, 0, 0, 0, PIPE_TRANSFER_WRITE, x, y, w, h); if (!transfer) |