Module: Mesa
Branch: openchrome-branch
Commit: 7d24630c7d8bd1f993421cf50f9d8bbb5263ee7f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d24630c7d8bd1f993421cf50f9d8bbb5263ee7f

Author: Thomas Hellstrom <thomas-at-shipmail-dot-org>
Date:   Tue Mar 24 21:31:19 2009 +0100

Revert "openchrome: Use a non-NULL texImage pointer when unmapped."

This reverts commit 191afdc821df6dc025672c26b76b3be401544302.

Turns out that when the texImage::Data member is populated,
image storage is always freed before a driver texImage operation.
While the GL specs call for this, it's more attractive to reuse
idle texture memory, particularly as write-combined memory can be
expensive to allocate.

Conflicts:

        src/mesa/drivers/dri/openchrome/via_tex.c

Signed-off-by: Thomas Hellstrom <thomas-at-shipmail-dot-org>

---

 src/mesa/drivers/dri/openchrome/via_tex.c |   22 ++++++++--------------
 1 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/openchrome/via_tex.c 
b/src/mesa/drivers/dri/openchrome/via_tex.c
index 9f1b860..3e3f231 100644
--- a/src/mesa/drivers/dri/openchrome/via_tex.c
+++ b/src/mesa/drivers/dri/openchrome/via_tex.c
@@ -47,9 +47,8 @@
 #include "via_state.h"
 #include "via_ioctl.h"
 #include "via_3d_reg.h"
-#include "wsbm_manager.h"
 
-#define VIA_INVALID_TEXMAP ((void *) 0x00000001UL)
+#include "wsbm_manager.h"
 
 static const struct gl_texture_format *
 viaChooseTexFormat(GLcontext * ctx, GLint internalFormat,
@@ -642,12 +641,7 @@ viaTexImage(GLcontext * ctx,
        ctx->Driver.TextureMemCpy(texImage->Data, pixels, imageSize);
     } else {
        ASSERT(texImage->TexFormat->StoreImage);
-       success = texImage->TexFormat->StoreImage(ctx,
-                                                 dims,
-                                                 texImage->_BaseFormat,
-                                                 texImage->TexFormat,
-                                                 texImage->Data,
-                                                 0, 0, 0,      /* 
dstX/Y/Zoffset */
+       success = texImage->TexFormat->StoreImage(ctx, dims, 
texImage->_BaseFormat, texImage->TexFormat, texImage->Data, 0, 0, 0,       /* 
dstX/Y/Zoffset */
                                                  dstRowStride,
                                                  texImage->ImageOffsets,
                                                  width, height, 1,
@@ -669,7 +663,7 @@ viaTexImage(GLcontext * ctx,
 
     _mesa_unmap_teximage_pbo(ctx, packing);
   out:
-    texImage->Data = VIA_INVALID_TEXMAP;
+    texImage->Data = NULL;
     wsbmBOUnmap(viaImage->buf);
 }
 
@@ -749,7 +743,7 @@ viaTexSubImage2D(GLcontext * ctx,
     _mesa_store_texsubimage2d(ctx, target, level, xoffset, yoffset, width,
                              height, format, type, pixels, packing, texObj,
                              texImage);
-    texImage->Data = VIA_INVALID_TEXMAP;
+    texImage->Data = NULL;
     wsbmBOUnmap(viaImage->buf);
     wsbmBOReleaseFromCpu(viaImage->buf, WSBM_SYNCCPU_WRITE);
 }
@@ -803,7 +797,7 @@ viaTexSubImage1D(GLcontext * ctx,
     _mesa_store_texsubimage1d(ctx, target, level, xoffset, width,
                              format, type, pixels, packing, texObj,
                              texImage);
-    texImage->Data = VIA_INVALID_TEXMAP;
+    texImage->Data = NULL;
     wsbmBOUnmap(viaImage->buf);
     wsbmBOReleaseFromCpu(viaImage->buf, WSBM_SYNCCPU_WRITE);
 }
@@ -880,7 +874,7 @@ viaGetTexImage(GLcontext * ctx, GLenum target, GLint level,
     _mesa_get_teximage(ctx, target, level, format, type, pixels,
                       texObj, texImage);
 
-    texImage->Data = VIA_INVALID_TEXMAP;
+    texImage->Data = NULL;
     wsbmBOUnmap(viaImage->buf);
     wsbmBOReleaseFromCpu(viaImage->buf, WSBM_SYNCCPU_READ);
 }
@@ -945,7 +939,7 @@ viaCompressedTexSubImage2D(GLcontext * ctx, GLenum target, 
GLint level,
                                         yoffset, width, height, format,
                                         imageSize, data, texObj, texImage);
 
-    texImage->Data = VIA_INVALID_TEXMAP;
+    texImage->Data = NULL;
     wsbmBOUnmap(viaImage->buf);
     wsbmBOReleaseFromCpu(viaImage->buf, WSBM_SYNCCPU_WRITE);
 }
@@ -1095,10 +1089,10 @@ via_map_unmap_texunit(struct gl_texture_unit *tu, 
GLboolean map)
                } else {
                    if (image->Data != VIA_INVALID_TEXMAP) {
                        wsbmBOUnmap(vImage->buf);
+                       image->Data = NULL;
                        wsbmBOReleaseFromCpu(vImage->buf,
                                             WSBM_SYNCCPU_READ |
                                             WSBM_SYNCCPU_WRITE);
-                       image->Data = VIA_INVALID_TEXMAP;
                    }
                }
            }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to