On Fri, May 19, 2017 at 6:52 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/gallium/auxiliary/util/u_threaded_context.c | 147 > +++++++++++++++++++++ > .../auxiliary/util/u_threaded_context_calls.h | 4 + > 2 files changed, 151 insertions(+) > > diff --git a/src/gallium/auxiliary/util/u_threaded_context.c > b/src/gallium/auxiliary/util/u_threaded_context.c > index 8ea7f8aa26..36c2e4ed46 100644 > --- a/src/gallium/auxiliary/util/u_threaded_context.c > +++ b/src/gallium/auxiliary/util/u_threaded_context.c > @@ -1086,6 +1086,147 @@ tc_stream_output_target_destroy(struct pipe_context > *_pipe, > > > /******************************************************************** > + * bindless > + */ > + > +static uint64_t > +tc_create_texture_handle(struct pipe_context *_pipe, > + struct pipe_resource *res, > + struct pipe_sampler_view *view, > + const struct pipe_sampler_state *state) > +{ > + struct threaded_context *tc = threaded_context(_pipe); > + struct pipe_context *pipe = tc->pipe; > + > + tc_sync(tc); > + return pipe->create_texture_handle(pipe, res, view, state); > +} > + > +struct tc_delete_texture_handle > +{ > + uint64_t handle; > +};
You can just add uint64_t handle into union tc_payload directly, remove tc_payload::__use_8_bytes, and use tc_add_small_call instead. > + > +static void > +tc_call_delete_texture_handle(struct pipe_context *pipe, > + union tc_payload *payload) > +{ > + struct tc_delete_texture_handle *p = > + (struct tc_delete_texture_handle *)payload; > + > + pipe->delete_texture_handle(pipe, p->handle); > +} > + > +static void > +tc_delete_texture_handle(struct pipe_context *_pipe, uint64_t handle) > +{ > + struct threaded_context *tc = threaded_context(_pipe); > + struct tc_delete_texture_handle *p = > + tc_add_struct_typed_call(tc, TC_CALL_delete_texture_handle, > + tc_delete_texture_handle); > + > + p->handle = handle; > +} > + > +struct tc_make_texture_handle_resident > +{ > + uint64_t handle; > + bool resident; > +}; > + > +static void > +tc_call_make_texture_handle_resident(struct pipe_context *pipe, > + union tc_payload *payload) > +{ > + struct tc_make_texture_handle_resident *p = > + (struct tc_make_texture_handle_resident *)payload; > + > + pipe->make_texture_handle_resident(pipe, p->handle, p->resident); > +} > + > +static void > +tc_make_texture_handle_resident(struct pipe_context *_pipe, uint64_t handle, > + bool resident) > +{ > + struct threaded_context *tc = threaded_context(_pipe); > + struct tc_make_texture_handle_resident *p = > + tc_add_struct_typed_call(tc, TC_CALL_make_texture_handle_resident, > + tc_make_texture_handle_resident); > + > + p->handle = handle; > + p->resident = resident; > +} > + > +static uint64_t > +tc_create_image_handle(struct pipe_context *_pipe, > + const struct pipe_image_view *image) > +{ > + struct threaded_context *tc = threaded_context(_pipe); > + struct pipe_context *pipe = tc->pipe; > + > + tc_sync(tc); > + return pipe->create_image_handle(pipe, image); > +} > + > +struct tc_delete_image_handle > +{ > + uint64_t handle; > +}; Same here. Marek > + > +static void > +tc_call_delete_image_handle(struct pipe_context *pipe, > + union tc_payload *payload) > +{ > + struct tc_delete_image_handle *p = > + (struct tc_delete_image_handle *)payload; > + > + pipe->delete_image_handle(pipe, p->handle); > +} > + > +static void > +tc_delete_image_handle(struct pipe_context *_pipe, uint64_t handle) > +{ > + struct threaded_context *tc = threaded_context(_pipe); > + struct tc_delete_image_handle *p = > + tc_add_struct_typed_call(tc, TC_CALL_delete_image_handle, > + tc_delete_image_handle); > + > + p->handle = handle; > +} _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev