Mesa (master): dri/nouveau: allow multiple maps of surface buffers

Ben Skeggs darktama at kemper.freedesktop.org
Wed Jan 19 05:51:02 UTC 2011


Module: Mesa
Branch: master
Commit: c73a1c18b2eb15b2e42a072222a5b166080a52ef
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c73a1c18b2eb15b2e42a072222a5b166080a52ef

Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Wed Jan 19 15:51:57 2011 +1000

dri/nouveau: allow multiple maps of surface buffers

Can happen during swrast fallbacks if a buffer is somehow bound as
a render target and a texture.

Fixes gnome-shell on nv20, and gets it mostly working on nv10.

Signed-off-by: Ben Skeggs <bskeggs at redhat.com>

---

 src/mesa/drivers/dri/nouveau/nouveau_texture.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index 2480b1e..988208f 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -113,8 +113,10 @@ nouveau_teximage_map(struct gl_context *ctx, struct gl_texture_image *ti,
 			if (access & GL_MAP_WRITE_BIT)
 				flags |= NOUVEAU_BO_WR;
 
-			ret = nouveau_bo_map(s->bo, flags);
-			assert(!ret);
+			if (!s->bo->map) {
+				ret = nouveau_bo_map(s->bo, flags);
+				assert(!ret);
+			}
 
 			ti->Data = s->bo->map + y * s->pitch + x * s->cpp;
 		}




More information about the mesa-commit mailing list