diff --git a/.pick_status.json b/.pick_status.json index 223c7cf6dc5..7e3a86a7b76 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -584,7 +584,7 @@ "description": "r600: fix vertex state update clover regression", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "659b7eb2799bccfff817961518d0ff2ab9e65bca", "notes": null diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index a8885ff4fa3..a9c200c6657 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2120,7 +2120,8 @@ static void evergreen_emit_vertex_buffers(struct r600_context *rctx, { struct radeon_cmdbuf *cs = &rctx->b.gfx.cs; struct r600_fetch_shader *shader = (struct r600_fetch_shader*)rctx->vertex_fetch_shader.cso; - uint32_t dirty_mask = state->dirty_mask & shader->buffer_mask; + uint32_t buffer_mask = shader ? shader->buffer_mask : ~0; + uint32_t dirty_mask = state->dirty_mask & buffer_mask; while (dirty_mask) { struct pipe_vertex_buffer *vb; @@ -2159,7 +2160,7 @@ static void evergreen_emit_vertex_buffers(struct r600_context *rctx, radeon_emit(cs, radeon_add_to_buffer_list(&rctx->b, &rctx->b.gfx, rbuffer, RADEON_USAGE_READ | RADEON_PRIO_VERTEX_BUFFER)); } - state->dirty_mask &= ~shader->buffer_mask; + state->dirty_mask &= ~buffer_mask; } static void evergreen_fs_emit_vertex_buffers(struct r600_context *rctx, struct r600_atom * atom)