svga: Fix banded DMA upload unmap
[mesa.git] / src / gallium / drivers / svga / svga_resource_buffer.h
index 464f073b34fad6237e3a2f6fd552afd007c1cadf..35ed35d61ddafaab62c79060416bdcbc4ebca78d 100644 (file)
@@ -314,6 +314,15 @@ svga_buffer_hw_storage_unmap(struct svga_context *svga,
             ret = SVGA3D_BindGBSurface(swc, sbuf->handle);
             assert(ret == PIPE_OK);
          }
+         if (swc->force_coherent) {
+            ret = SVGA3D_UpdateGBSurface(swc, sbuf->handle);
+            if (ret != PIPE_OK) {
+               /* flush and retry */
+               svga_context_flush(svga, NULL);
+               ret = SVGA3D_UpdateGBSurface(swc, sbuf->handle);
+               assert(ret == PIPE_OK);
+            }
+         }
       }
    } else
       sws->buffer_unmap(sws, sbuf->hwbuf);