diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-12-21 06:30:39 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-12-21 06:30:39 +1000 |
commit | e52ebd6e8587e2e37ed65ad9fc9035c2bd00b563 (patch) | |
tree | 8dc271c2fdc6ceda6b329762d234c88e0fdffe2e /src/gallium/drivers/r600/r600_state_common.c | |
parent | 9f2cf899578464a7448d7abec681bde42eb3d2f2 (diff) | |
parent | 5c102dd94f435e97507213fbd128e50dd15f5f54 (diff) | |
download | external_mesa3d-e52ebd6e8587e2e37ed65ad9fc9035c2bd00b563.zip external_mesa3d-e52ebd6e8587e2e37ed65ad9fc9035c2bd00b563.tar.gz external_mesa3d-e52ebd6e8587e2e37ed65ad9fc9035c2bd00b563.tar.bz2 |
Merge remote branch 'origin/master' into nvc0-new
Conflicts:
src/gallium/drivers/nouveau/nouveau_winsys.h
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 99b372c..f488cf7 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -179,8 +179,16 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, struct pipe_vertex_buffer *vbo; unsigned max_index = (unsigned)-1; - for (int i = 0; i < rctx->nvertex_buffer; i++) { - pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); + if (rctx->family >= CHIP_CEDAR) { + for (int i = 0; i < rctx->nvertex_buffer; i++) { + pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); + evergreen_fs_resource_set(&rctx->ctx, NULL, i); + } + } else { + for (int i = 0; i < rctx->nvertex_buffer; i++) { + pipe_resource_reference(&rctx->vertex_buffer[i].buffer, NULL); + r600_context_pipe_state_set_fs_resource(&rctx->ctx, NULL, i); + } } memcpy(rctx->vertex_buffer, buffers, sizeof(struct pipe_vertex_buffer) * count); @@ -188,6 +196,8 @@ void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, vbo = (struct pipe_vertex_buffer*)&buffers[i]; rctx->vertex_buffer[i].buffer = NULL; + if (buffers[i].buffer == NULL) + continue; if (r600_buffer_is_user_buffer(buffers[i].buffer)) rctx->any_user_vbs = TRUE; pipe_resource_reference(&rctx->vertex_buffer[i].buffer, buffers[i].buffer); |