fix vbo_split_copy related bug 9962
authorXiang, Haihao <haihao.xiang@intel.com>
Tue, 7 Aug 2007 00:21:28 +0000 (08:21 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Tue, 7 Aug 2007 00:21:28 +0000 (08:21 +0800)
src/mesa/vbo/vbo_split_copy.c

index e5c4429350e49e99a33df34c7ad8f84b5db8ed97..685cc0fdf6e003eedadfc9e0c4c7e2d50dece62c 100644 (file)
@@ -129,6 +129,13 @@ static GLuint attr_size( const struct gl_client_array *array )
  */
 static GLboolean check_flush( struct copy_context *copy )
 {
+   GLenum mode = copy->dstprim[copy->dstprim_nr].mode; 
+
+   if (GL_TRIANGLE_STRIP == mode &&
+       copy->dstelt_nr & 1) { /* see bug9962 */
+       return GL_FALSE;
+   }
+
    if (copy->dstbuf_nr + 4 > copy->dstbuf_size)
       return GL_TRUE;
 
@@ -458,7 +465,7 @@ static void replay_init( struct copy_context *copy )
       dst->StrideB = copy->vertex_size;
       dst->Ptr = copy->dstbuf + offset;
       dst->Enabled = GL_TRUE;
-      dst->Normalized = GL_TRUE;
+      dst->Normalized = src->Normalized; 
       dst->BufferObj = ctx->Array.NullBufferObj;
       dst->_MaxElement = copy->dstbuf_size; /* may be less! */