On Thu, May 25, 2017 at 3:53 PM, Marek Olšák <mar...@gmail.com> wrote: > On Wed, May 24, 2017 at 1:52 PM, Nicolai Hähnle <nhaeh...@gmail.com> wrote: >> On 19.05.2017 18:52, Samuel Pitoiset wrote: >>> >>> Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> >>> --- >>> src/gallium/include/pipe/p_context.h | 16 ++++++++++++++++ >>> 1 file changed, 16 insertions(+) >>> >>> diff --git a/src/gallium/include/pipe/p_context.h >>> b/src/gallium/include/pipe/p_context.h >>> index 4b75386a65..83eb1c9b08 100644 >>> --- a/src/gallium/include/pipe/p_context.h >>> +++ b/src/gallium/include/pipe/p_context.h >>> @@ -766,6 +766,22 @@ struct pipe_context { >>> unsigned last_level, >>> unsigned first_layer, >>> unsigned last_layer); >>> + >>> + /** >>> + * Bindless texture/image handles interface. >>> + */ >>> + uint64_t (*create_texture_handle)(struct pipe_context *ctx, >>> + struct pipe_resource *res, >>> + struct pipe_sampler_view *view, >>> + const struct pipe_sampler_state >>> *state); >>> + void (*delete_texture_handle)(struct pipe_context *ctx, uint64_t >>> handle); >>> + void (*make_texture_handle_resident)(struct pipe_context *ctx, >>> + uint64_t handle, bool resident); >>> + uint64_t (*create_image_handle)(struct pipe_context *ctx, >>> + const struct pipe_image_view *image); >>> + void (*delete_image_handle)(struct pipe_context *ctx, uint64_t >>> handle); >>> + void (*make_image_handle_resident)(struct pipe_context *ctx, uint64_t >>> handle, >>> + unsigned access, bool resident); >> >> >> Should the create/delete functions be pipe_screen functions? Handles are >> shared across a GL share group, so the current implementation with a >> per-context hash of handles is definitely wrong. I still need to go over it >> in detail. > > BTW, shaders and sampler views are shared across a GL share group too. > I think this is the same as sampler views. radeonsi is OK with that. I > don't think any other drivers except nouveau will want to support > bindless textures.
Also, the way he wrote it is that the pipe_sampler_view parameter is not a template, it's a real sampler view object. The "res" parameter is unused and is planned to be removed. I don't know if it's a good idea. Conceptually it's not, because it's not intuitive. However, using a real sampler object makes the code deltas smaller, because si_sampler_view contains everything and so create_texture_handle doesn't have to do much. Opinions welcome. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev