[Mesa-dev] [RFC PATCH 25/65] gallium: add ARB_bindless_texture interface
Marek Olšák
maraeo at gmail.com
Thu May 25 13:53:26 UTC 2017
On Wed, May 24, 2017 at 1:52 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> On 19.05.2017 18:52, Samuel Pitoiset wrote:
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at 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.
Marek
More information about the mesa-dev
mailing list