Module: Mesa Branch: openchrome-branch Commit: 07b47095a2ffff53eb021db005a140941de7f453 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=07b47095a2ffff53eb021db005a140941de7f453
Author: Thomas Hellstrom <thomas-at-shipmail-dot-org> Date: Sun Feb 22 21:32:40 2009 +0100 openchrome: Fix synccpu / map ordering. --- src/mesa/drivers/dri/openchrome/via_depthstencil.c | 38 +++++++++++--------- 1 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/mesa/drivers/dri/openchrome/via_depthstencil.c b/src/mesa/drivers/dri/openchrome/via_depthstencil.c index 8e8637e..13c5501 100644 --- a/src/mesa/drivers/dri/openchrome/via_depthstencil.c +++ b/src/mesa/drivers/dri/openchrome/via_depthstencil.c @@ -95,39 +95,43 @@ map_buffers(GLcontext * ctx, int ret; if (depthRb && depthRb->buf) { - depthRb->map = wsbmBOMap(depthRb->buf, - WSBM_ACCESS_READ | WSBM_ACCESS_WRITE); - if (!depthRb->map) - return -ENOMEM; ret = wsbmBOSyncForCpu(depthRb->buf, WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); if (ret) + return ret; + + depthRb->map = wsbmBOMap(depthRb->buf, + WSBM_ACCESS_READ | WSBM_ACCESS_WRITE); + if (!depthRb->map) { + ret = -ENOMEM; goto out_err0; + } } if (stencilRb && stencilRb->buf) { + ret = wsbmBOSyncForCpu(stencilRb->buf, + WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); + if (ret) + goto out_err1; + stencilRb->map = wsbmBOMap(stencilRb->buf, WSBM_ACCESS_READ | WSBM_ACCESS_WRITE); if (!stencilRb->map) { ret = -ENOMEM; - goto out_err1; - } - - ret = wsbmBOSyncForCpu(stencilRb->buf, - WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); - if (ret) goto out_err2; + } } return 0; out_err2: - (void)wsbmBOUnmap(stencilRb->buf); + (void)wsbmBOReleaseFromCpu(stencilRb->buf, + WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); out_err1: + (void)wsbmBOUnmap(depthRb->buf); + out_err0: (void)wsbmBOReleaseFromCpu(depthRb->buf, WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); - out_err0: - (void)wsbmBOUnmap(depthRb->buf); return ret; } @@ -137,17 +141,17 @@ unmap_buffers(GLcontext * ctx, struct via_renderbuffer *stencilRb) { if (depthRb && depthRb->buf) { - (void)wsbmBOReleaseFromCpu(depthRb->buf, - WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); wsbmBOUnmap(depthRb->buf); depthRb->map = NULL; + (void)wsbmBOReleaseFromCpu(depthRb->buf, + WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); } if (stencilRb && stencilRb->buf) { - (void)wsbmBOReleaseFromCpu(stencilRb->buf, - WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); wsbmBOUnmap(stencilRb->buf); stencilRb->map = NULL; + (void)wsbmBOReleaseFromCpu(stencilRb->buf, + WSBM_SYNCCPU_READ | WSBM_SYNCCPU_WRITE); } } _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit