summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2012-01-17 08:12:30 -0700
committerBrian Paul <[email protected]>2012-01-18 10:44:05 -0700
commit64fdfefb9d1136c5f98f3e3b2ba716c224a4d792 (patch)
treea82aa88e7d7aebd17b05f806963a47305df39ef2
parent1d7048f12e7e2e8f42d27aa665f7134f8f10cf4e (diff)
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 <[email protected]>
-rw-r--r--src/mesa/main/dd.h8
-rw-r--r--src/mesa/main/texstore.c4
2 files changed, 9 insertions, 3 deletions
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 24f3d4ca577..8393f328f44 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 a9c64cedee9..600dab302e9 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) {