From 476cec37d615df7c7329ef74d4a7ea7200b2d8fb Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Mon, 14 Feb 2011 10:08:59 +0100 Subject: r300g: do not create a user buffer struct for misaligned ushort indices fallback --- src/gallium/drivers/r300/r300_render.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/gallium/drivers/r300/r300_render.c') diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 051f434d42..37b9934a61 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -578,7 +578,6 @@ static void r300_draw_range_elements(struct pipe_context* pipe, if (indexSize == 2 && (start & 1) && !r300_resource(indexBuffer)->b.user_ptr) { struct pipe_transfer *transfer; - struct pipe_resource *userbuf; uint16_t *ptr = pipe_buffer_map(pipe, indexBuffer, PIPE_TRANSFER_READ | @@ -590,18 +589,16 @@ static void r300_draw_range_elements(struct pipe_context* pipe, } else { /* Copy the mapped index buffer directly to the upload buffer. * The start index will be aligned simply from the fact that - * every sub-buffer in u_upload_mgr is aligned. */ - userbuf = pipe->screen->user_buffer_create(pipe->screen, - ptr, 0, - PIPE_BIND_INDEX_BUFFER); - indexBuffer = userbuf; - r300_upload_index_buffer(r300, &indexBuffer, indexSize, &start, count); - pipe_resource_reference(&userbuf, NULL); + * every sub-buffer in the upload buffer is aligned. */ + r300_upload_index_buffer(r300, &indexBuffer, indexSize, &start, + count, (uint8_t*)ptr); } pipe_buffer_unmap(pipe, transfer); } else { if (r300_resource(indexBuffer)->b.user_ptr) - r300_upload_index_buffer(r300, &indexBuffer, indexSize, &start, count); + r300_upload_index_buffer(r300, &indexBuffer, indexSize, + &start, count, + r300_resource(indexBuffer)->b.user_ptr); } /* 19 dwords for emit_draw_elements. Give up if the function fails. */ -- cgit v1.2.3