Am 19.08.2014 01:43, schrieb Marek Olšák: > On Tue, Aug 19, 2014 at 1:12 AM, Roland Scheidegger <srol...@vmware.com> > wrote: >> Am 18.08.2014 23:24, schrieb Marek Olšák: >>> From: Marek Olšák <marek.ol...@amd.com> >>> >>> --- >>> src/gallium/drivers/rbug/rbug_context.c | 46 >>> +++++++++++++++++++++++++++++++++ >>> 1 file changed, 46 insertions(+) >>> >>> diff --git a/src/gallium/drivers/rbug/rbug_context.c >>> b/src/gallium/drivers/rbug/rbug_context.c >>> index d6fca2e..71bc216 100644 >>> --- a/src/gallium/drivers/rbug/rbug_context.c >>> +++ b/src/gallium/drivers/rbug/rbug_context.c >>> @@ -803,6 +803,49 @@ rbug_set_sample_mask(struct pipe_context *_pipe, >>> pipe_mutex_unlock(rb_pipe->call_mutex); >>> } >>> >>> +static struct pipe_stream_output_target * >>> +rbug_create_stream_output_target(struct pipe_context *_pipe, >>> + struct pipe_resource *_res, >>> + unsigned buffer_offset, unsigned >>> buffer_size) >>> +{ >>> + struct rbug_context *rb_pipe = rbug_context(_pipe); >>> + struct pipe_context *pipe = rb_pipe->pipe; >>> + struct pipe_resource *res = rbug_resource_unwrap(_res); >>> + struct pipe_stream_output_target *target; >>> + >>> + pipe_mutex_lock(rb_pipe->call_mutex); >>> + target = pipe->create_stream_output_target(pipe, res, buffer_offset, >>> + buffer_size); >>> + pipe_mutex_unlock(rb_pipe->call_mutex); >>> + return target; >>> +} >>> + >>> +static void >>> +rbug_stream_output_target_destroy(struct pipe_context *_pipe, >>> + struct pipe_stream_output_target *target) >>> +{ >>> + struct rbug_context *rb_pipe = rbug_context(_pipe); >>> + struct pipe_context *pipe = rb_pipe->pipe; >>> + >>> + pipe_mutex_lock(rb_pipe->call_mutex); >>> + pipe->stream_output_target_destroy(pipe, target); >>> + pipe_mutex_unlock(rb_pipe->call_mutex); >>> +} >>> + >>> +static void >>> +rbug_set_stream_output_targets(struct pipe_context *_pipe, >>> + unsigned num_targets, >>> + struct pipe_stream_output_target **targets, >>> + const unsigned *offsets) >>> +{ >>> + struct rbug_context *rb_pipe = rbug_context(_pipe); >>> + struct pipe_context *pipe = rb_pipe->pipe; >>> + >>> + pipe_mutex_lock(rb_pipe->call_mutex); >>> + pipe->set_stream_output_targets(pipe, num_targets, targets, offsets); >>> + pipe_mutex_unlock(rb_pipe->call_mutex); >>> +} >>> + >>> static void >>> rbug_resource_copy_region(struct pipe_context *_pipe, >>> struct pipe_resource *_dst, >>> @@ -1174,6 +1217,9 @@ rbug_context_create(struct pipe_screen *_screen, >>> struct pipe_context *pipe) >>> rb_pipe->base.set_vertex_buffers = rbug_set_vertex_buffers; >>> rb_pipe->base.set_index_buffer = rbug_set_index_buffer; >>> rb_pipe->base.set_sample_mask = rbug_set_sample_mask; >>> + rb_pipe->base.create_stream_output_target = >>> rbug_create_stream_output_target; >>> + rb_pipe->base.stream_output_target_destroy = >>> rbug_stream_output_target_destroy; >>> + rb_pipe->base.set_stream_output_targets = >>> rbug_set_stream_output_targets; >>> rb_pipe->base.resource_copy_region = rbug_resource_copy_region; >>> rb_pipe->base.blit = rbug_blit; >>> rb_pipe->base.flush_resource = rbug_flush_resource; >>> >> >> Wouldn't it be better if we'd wrap that too? >> I guess though it's better than what we've got so > > I'm actually strictly against wrapping all objects in co-drivers. If > you don't need to store any private data for each pipe_resource, > sampler view, etc. you don't need to wrap those objects. Granted, you > won't get any destroy calls for those objects, but do you really need > to know about them? >
Yeah I suppose you're right. There's nothing really interesting in the object - the only interesting information is not in the objects but the parameters of the functions. Roland _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev