Hi, Attached is a patch to r600g which limits the number of compared vertex elements to the amount that is actually active instead of comparing all possible 32 vertex elements. The patch moves the r600_shader_update function down in my usual profile runs.
Please review/apply. Thanks Mathias
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 3e42309..37884d0 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -274,7 +274,8 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader return 0; /* doing a full memcmp fell over the refcount */ if ((rshader->vertex_elements.count == rctx->vertex_elements->count) && - (!memcmp(&rshader->vertex_elements.elements, &rctx->vertex_elements->elements, 32 * sizeof(struct pipe_vertex_element)))) { + (!memcmp(&rshader->vertex_elements.elements, &rctx->vertex_elements->elements, + rctx->vertex_elements->count * sizeof(struct pipe_vertex_element)))) { return 0; } rshader->vertex_elements = *rctx->vertex_elements;
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev