Mesa (openchrome-branch): openchrome: Fix synccpu / map ordering.
Thomas Hellstrom
thomash at kemper.freedesktop.org
Mon Feb 23 07:34:05 UTC 2009
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);
}
}
More information about the mesa-commit
mailing list