diff options
author | marha <marha@users.sourceforge.net> | 2011-03-15 22:49:12 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-15 22:49:12 +0000 |
commit | 8285341e69cd721c6871b553e45437c767200545 (patch) | |
tree | 551508bddc84d1c16c15d961878cd2d2f6edb365 /mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c | |
parent | 52b8618bfdaa4725fc403f50fe682d02e7f16435 (diff) | |
parent | 5e633abcca598289d0423d89bb400b41e6417259 (diff) | |
download | vcxsrv-8285341e69cd721c6871b553e45437c767200545.tar.gz vcxsrv-8285341e69cd721c6871b553e45437c767200545.tar.bz2 vcxsrv-8285341e69cd721c6871b553e45437c767200545.zip |
svn merge ^/branches/released .
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c')
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c index 9dd1f8a3e..953cb446e 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -301,11 +301,15 @@ st_bufferobj_map_range(struct gl_context *ctx, GLenum target, if (access & GL_MAP_FLUSH_EXPLICIT_BIT)
flags |= PIPE_TRANSFER_FLUSH_EXPLICIT;
- if (access & GL_MAP_INVALIDATE_RANGE_BIT)
- flags |= PIPE_TRANSFER_DISCARD;
-
- if (access & GL_MAP_INVALIDATE_BUFFER_BIT)
- flags |= PIPE_TRANSFER_DISCARD;
+ if (access & GL_MAP_INVALIDATE_BUFFER_BIT) {
+ flags |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE;
+ }
+ else if (access & GL_MAP_INVALIDATE_RANGE_BIT) {
+ if (offset == 0 && length == obj->Size)
+ flags |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE;
+ else
+ flags |= PIPE_TRANSFER_DISCARD_RANGE;
+ }
if (access & GL_MAP_UNSYNCHRONIZED_BIT)
flags |= PIPE_TRANSFER_UNSYNCHRONIZED;
|