We should probably be using map()/unmap() when accessing resource data, but this is a little better. --- src/gallium/drivers/softpipe/sp_draw_arrays.c | 6 +++--- src/gallium/drivers/softpipe/sp_state_shader.c | 2 +- src/gallium/drivers/softpipe/sp_texture.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/gallium/drivers/softpipe/sp_draw_arrays.c b/src/gallium/drivers/softpipe/sp_draw_arrays.c index 45b1390..6b06f70 100644 --- a/src/gallium/drivers/softpipe/sp_draw_arrays.c +++ b/src/gallium/drivers/softpipe/sp_draw_arrays.c @@ -81,7 +81,7 @@ softpipe_draw_vbo(struct pipe_context *pipe, if (!sp->vertex_buffer[i].buffer) { continue; } - buf = softpipe_resource(sp->vertex_buffer[i].buffer)->data; + buf = softpipe_resource_data(sp->vertex_buffer[i].buffer); size = sp->vertex_buffer[i].buffer->width0; } draw_set_mapped_vertex_buffer(draw, i, buf, size); @@ -92,7 +92,7 @@ softpipe_draw_vbo(struct pipe_context *pipe, unsigned available_space = ~0; mapped_indices = sp->index_buffer.user_buffer; if (!mapped_indices) { - mapped_indices = softpipe_resource(sp->index_buffer.buffer)->data; + mapped_indices = softpipe_resource_data(sp->index_buffer.buffer); if (sp->index_buffer.buffer->width0 > sp->index_buffer.offset) available_space = (sp->index_buffer.buffer->width0 - sp->index_buffer.offset); @@ -107,7 +107,7 @@ softpipe_draw_vbo(struct pipe_context *pipe, for (i = 0; i < sp->num_so_targets; i++) { - void *buf = softpipe_resource(sp->so_targets[i]->target.buffer)->data; + void *buf = softpipe_resource_data(sp->so_targets[i]->target.buffer); sp->so_targets[i]->mapping = buf; } diff --git a/src/gallium/drivers/softpipe/sp_state_shader.c b/src/gallium/drivers/softpipe/sp_state_shader.c index d80955e..eb4b6b1 100644 --- a/src/gallium/drivers/softpipe/sp_state_shader.c +++ b/src/gallium/drivers/softpipe/sp_state_shader.c @@ -357,7 +357,7 @@ softpipe_set_constant_buffer(struct pipe_context *pipe, } size = cb ? cb->buffer_size : 0; - data = constants ? softpipe_resource(constants)->data : NULL; + data = constants ? softpipe_resource_data(constants) : NULL; if (data) data = (const char *) data + cb->buffer_offset; diff --git a/src/gallium/drivers/softpipe/sp_texture.h b/src/gallium/drivers/softpipe/sp_texture.h index 533d625..51efc14 100644 --- a/src/gallium/drivers/softpipe/sp_texture.h +++ b/src/gallium/drivers/softpipe/sp_texture.h @@ -93,6 +93,18 @@ softpipe_transfer(struct pipe_transfer *pt) } +/** + * Return pointer to a resource's actual data. + * This is a short-cut instead of using map()/unmap(), which should + * probably be fixed. + */ +static INLINE void * +softpipe_resource_data(struct pipe_resource *pt) +{ + return pt ? softpipe_resource(pt)->data : NULL; +} + + extern void softpipe_init_screen_texture_funcs(struct pipe_screen *screen); -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev