vbo: Fix array pointer calculation for MapBufferRange-mapped vertex data.
authorEric Anholt <eric@anholt.net>
Fri, 28 Aug 2009 21:44:55 +0000 (14:44 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 28 Aug 2009 22:29:35 +0000 (15:29 -0700)
We would end up with the offset from the start of the mapping rather than
the offset from the start of the buffer.

src/mesa/vbo/vbo_exec_draw.c

index 53fa90b8afaa747befbbd7b31fc813bcccdf7474..0c258c535e07aad67814971f0d5275638119ffdc 100644 (file)
@@ -218,7 +218,9 @@ vbo_exec_bind_arrays( GLcontext *ctx )
             /* a real buffer obj: Ptr is an offset, not a pointer*/
             GLsizeiptr offset;
             assert(exec->vtx.bufferobj->Pointer);  /* buf should be mapped */
-            offset = (GLbyte *) data - (GLbyte *) exec->vtx.bufferobj->Pointer;
+            offset = (GLbyte *) data -
+              (GLbyte *) exec->vtx.bufferobj->Pointer +
+              exec->vtx.bufferobj->Offset;
             assert(offset >= 0);
             arrays[attr].Ptr = (void *) offset;
          }