st/xorg: Flush any pending operations on upload
authorJakob Bornecrantz <jakob@vmware.com>
Wed, 18 Nov 2009 16:45:39 +0000 (17:45 +0100)
committerJakob Bornecrantz <jakob@vmware.com>
Wed, 18 Nov 2009 16:49:38 +0000 (17:49 +0100)
src/gallium/state_trackers/xorg/xorg_exa.c

index 3a51ad2d598b71cf54957b70753e82cd5f553900..3d83b5700d50d0aa95456c2ef026c0a95eac2f3b 100644 (file)
@@ -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)