Mesa (master): mesa: use GL_MAP_INVALIDATE_RANGE_BIT in glTexImage paths

Brian Paul brianp at kemper.freedesktop.org
Wed Jan 18 17:45:35 UTC 2012


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

Author: Brian Paul <brianp at vmware.com>
Date:   Tue Jan 17 08:12:30 2012 -0700

mesa: use GL_MAP_INVALIDATE_RANGE_BIT in glTexImage paths

Update the dd.h docs to indicate that GL_MAP_INVALIDATE_RANGE_BIT
can be used with GL_MAP_WRITE_BIT when mapping renderbuffers and
texture images.

Pass the flag when mapping texture images for glTexImage, glTexSubImage,
etc.  It's up to drivers whether to actually make use of the flag.

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/mesa/main/dd.h       |    8 +++++++-
 src/mesa/main/texstore.c |    4 ++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 24f3d4c..8393f32 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -460,7 +460,8 @@ struct dd_function_table {
     * \param texImage  the texture image
     * \param slice  the 3D image slice or array texture slice
     * \param x, y, w, h  region of interest
-    * \param mode  bitmask of GL_MAP_READ_BIT, GL_MAP_WRITE_BIT
+    * \param mode  bitmask of GL_MAP_READ_BIT, GL_MAP_WRITE_BIT and
+    *              GL_MAP_INVALIDATE_RANGE_BIT (if writing)
     * \param mapOut  returns start of mapping of region of interest
     * \param rowStrideOut  returns row stride (in bytes)
     */
@@ -489,6 +490,11 @@ struct dd_function_table {
                                     GLsizei levels, GLsizei width,
                                     GLsizei height, GLsizei depth);
 
+   /**
+    * Map a renderbuffer into user space.
+    * \param mode  bitmask of GL_MAP_READ_BIT, GL_MAP_WRITE_BIT and
+    *              GL_MAP_INVALIDATE_RANGE_BIT (if writing)
+    */
    void (*MapRenderbuffer)(struct gl_context *ctx,
 			   struct gl_renderbuffer *rb,
 			   GLuint x, GLuint y, GLuint w, GLuint h,
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index a9c64ce..600dab3 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -4404,7 +4404,7 @@ get_read_write_mode(GLenum userFormat, gl_format texFormat)
        && _mesa_get_format_base_format(texFormat) == GL_DEPTH_STENCIL)
       return GL_MAP_READ_BIT | GL_MAP_WRITE_BIT;
    else
-      return GL_MAP_WRITE_BIT;
+      return GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT;
 }
 
 
@@ -4805,7 +4805,7 @@ _mesa_store_compressed_texsubimage2d(struct gl_context *ctx,
    /* Map dest texture buffer */
    ctx->Driver.MapTextureImage(ctx, texImage, 0,
                                xoffset, yoffset, width, height,
-                               GL_MAP_WRITE_BIT,
+                               GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT,
                                &dstMap, &dstRowStride);
 
    if (dstMap) {




More information about the mesa-commit mailing list