Instead of calling memcpy() 'n' times, we can do it all at once since the source and dest regions are all contiguous. Reviewed-by: Matt Turner <mattst88@gmail.com>tags/11.1-branchpoint
@@ -132,8 +132,7 @@ static void vbo_exec_wrap_buffers( struct vbo_exec_context *exec ) | |||
static void | |||
vbo_exec_vtx_wrap(struct vbo_exec_context *exec) | |||
{ | |||
fi_type *data = exec->vtx.copied.buffer; | |||
GLuint i; | |||
unsigned numComponents; | |||
/* Run pipeline on current vertices, copy wrapped vertices | |||
* to exec->vtx.copied. | |||
@@ -149,13 +148,12 @@ vbo_exec_vtx_wrap(struct vbo_exec_context *exec) | |||
*/ | |||
assert(exec->vtx.max_vert - exec->vtx.vert_count > exec->vtx.copied.nr); | |||
for (i = 0 ; i < exec->vtx.copied.nr ; i++) { | |||
memcpy( exec->vtx.buffer_ptr, data, | |||
exec->vtx.vertex_size * sizeof(GLfloat)); | |||
exec->vtx.buffer_ptr += exec->vtx.vertex_size; | |||
data += exec->vtx.vertex_size; | |||
exec->vtx.vert_count++; | |||
} | |||
numComponents = exec->vtx.copied.nr * exec->vtx.vertex_size; | |||
memcpy(exec->vtx.buffer_ptr, | |||
exec->vtx.copied.buffer, | |||
numComponents * sizeof(fi_type)); | |||
exec->vtx.buffer_ptr += numComponents; | |||
exec->vtx.vert_count += exec->vtx.copied.nr; | |||
exec->vtx.copied.nr = 0; | |||
} |
@@ -601,8 +601,7 @@ static void | |||
_save_wrap_filled_vertex(struct gl_context *ctx) | |||
{ | |||
struct vbo_save_context *save = &vbo_context(ctx)->save; | |||
fi_type *data = save->copied.buffer; | |||
GLuint i; | |||
unsigned numComponents; | |||
/* Emit a glEnd to close off the last vertex list. | |||
*/ | |||
@@ -612,12 +611,12 @@ _save_wrap_filled_vertex(struct gl_context *ctx) | |||
*/ | |||
assert(save->max_vert - save->vert_count > save->copied.nr); | |||
for (i = 0; i < save->copied.nr; i++) { | |||
memcpy(save->buffer_ptr, data, save->vertex_size * sizeof(GLfloat)); | |||
data += save->vertex_size; | |||
save->buffer_ptr += save->vertex_size; | |||
save->vert_count++; | |||
} | |||
numComponents = save->copied.nr * save->vertex_size; | |||
memcpy(save->buffer_ptr, | |||
save->copied.buffer, | |||
numComponents * sizeof(fi_type)); | |||
save->buffer_ptr += numComponents; | |||
save->vert_count += save->copied.nr; | |||
} | |||