X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr600%2Fr600_shader.c;h=21b9180582408abb88f0bf6116c09d6dc4c0bdd5;hb=6dc051557d99e81fc58e09edf21f185874dc1979;hp=5709426ea7576759abcbb7aab2d888dc3395a1dd;hpb=92aba9c1f54b2681aed11f572f74bda941f19a54;p=mesa.git diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 5709426ea75..21b91805824 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -245,7 +245,9 @@ static int r600_shader_update(struct pipe_context *ctx, struct r600_pipe_shader if (shader->processor_type != TGSI_PROCESSOR_VERTEX) return 0; - if (!memcmp(&rshader->vertex_elements, rctx->vertex_elements, sizeof(struct r600_vertex_element))) { + /* 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)))) { return 0; } rshader->vertex_elements = *rctx->vertex_elements;