On Tue, Aug 19, 2014 at 1:12 AM, Roland Scheidegger <[email protected]> wrote:
> Am 18.08.2014 23:24, schrieb Marek Olšák:
>> From: Marek Olšák <[email protected]>
>>
>> ---
>>  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?

Marek
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to