void si_translate_index_buffer(struct si_context *sctx, struct pipe_index_buffer *ib, unsigned count) { struct pipe_resource *out_buffer = NULL; unsigned out_offset; void *ptr; switch (ib->index_size) { case 1: u_upload_alloc(sctx->b.uploader, 0, count * 2, &out_offset, &out_buffer, &ptr); util_shorten_ubyte_elts_to_userptr( &sctx->b.b, ib, 0, ib->offset, count, ptr); pipe_resource_reference(&ib->buffer, NULL); ib->buffer = out_buffer; ib->offset = out_offset; ib->index_size = 2; break; } }
void r600_translate_index_buffer(struct r600_pipe_context *r600, struct pipe_index_buffer *ib, unsigned count) { struct pipe_resource *out_buffer = NULL; unsigned out_offset; void *ptr; boolean flushed; switch (ib->index_size) { case 1: u_upload_alloc(r600->vbuf_mgr->uploader, 0, count * 2, &out_offset, &out_buffer, &flushed, &ptr); util_shorten_ubyte_elts_to_userptr( &r600->context, ib->buffer, 0, ib->offset, count, ptr); pipe_resource_reference(&ib->buffer, NULL); ib->buffer = out_buffer; ib->offset = out_offset; ib->index_size = 2; break; } }