diff --git a/.pick_status.json b/.pick_status.json index f61db2c7408..b59db862cb3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -490,7 +490,7 @@ "description": "r600: fix r600_draw_vbo() buffer overflow", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0cf5d1f22620d67659bbd632a2400c3a6956a011" }, diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 32c66ca4d0b..894ace8dd03 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -2456,7 +2456,9 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info radeon_emit(cs, PKT3(PKT3_DRAW_INDEX_IMMD, 1 + size_dw, render_cond_bit)); radeon_emit(cs, draws[0].count); radeon_emit(cs, V_0287F0_DI_SRC_SEL_IMMEDIATE); - radeon_emit_array(cs, info->index.user + draws[0].start * index_size, size_dw); + memcpy(cs->current.buf + cs->current.cdw, + info->index.user + draws[0].start * index_size, size_bytes); + cs->current.cdw += size_dw; } else { uint64_t va = r600_resource(indexbuf)->gpu_address + index_offset;