[Mesa-dev] [PATCH 03/16] mesa: Add _mesa_bind_texture method

Tapani Pälli tapani.palli at intel.com
Wed Dec 20 18:04:24 UTC 2017



On 20.12.2017 01:36, Ian Romanick wrote:
> On 12/19/2017 03:45 AM, Tapani Pälli wrote:
>>
>>
>> On 12/19/2017 01:39 PM, Tapani Pälli wrote:
>>>
>>>
>>> On 12/19/2017 02:14 AM, Ian Romanick wrote:
>>>> From: Ian Romanick <ian.d.romanick at intel.com>
>>>>
>>>> Light-weight glBindTexture for internal use.
>>>>
>>>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>>>> ---
>>>>    src/mesa/main/texobj.c | 17 ++++++++++++++++-
>>>>    src/mesa/main/texobj.h |  4 +++-
>>>>    2 files changed, 19 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
>>>> index db40598..cd9f43c 100644
>>>> --- a/src/mesa/main/texobj.c
>>>> +++ b/src/mesa/main/texobj.c
>>>> @@ -1692,6 +1692,22 @@ bind_texture_object(struct gl_context *ctx,
>>>> unsigned unit,
>>>>       }
>>>>    }
>>>
>>> This could have some documentation block that says when it is used and
>>> what are the differences with bind_texture?
>>
>> (some small comment like "Light-weight glBindTexture for internal use."
>> could do)
> 
> I've added this locally:
> 
> /**
>   * Light-weight bind texture for internal users
>   *
>   * This is really just \c finish_texture_init plus \c bind_texture_object.
>   * This is intended to be used by internal Mesa functions that use
>   * \c _mesa_CreateTexture and need to bind textures (e.g., meta).
>   */

That looks good!

I've been going through here with rest of the set (I'm not very familiar 
with meta so this takes time :/) and I'm wondering how do you test the 
blitframebuffer changes? I tried to disable blorp and use only meta for 
frambuffer blits but then lots of things fail with 'Invalid blit' with 
the assertion here:

--- 8< ---
    if (devinfo->gen >= 8 && (mask & GL_STENCIL_BUFFER_BIT)) {
       assert(!"Invalid blit");
    }
--- 8< ---

I can see that blitframebuffer works fine for color buffers though when 
debugging with game engine that does some color blits.



>> Patches 1,2,3
>> Reviewed-by: Tapani Pälli <tapani.palli at intel.com>
>>
>>>> +void
>>>> +_mesa_bind_texture(struct gl_context *ctx, GLenum target,
>>>> +                   struct gl_texture_object *tex_obj)
>>>> +{
>>>> +   const GLint targetIndex = _mesa_tex_target_to_index(ctx, target);
>>>> +
>>>> +   assert(targetIndex >= 0 && targetIndex < NUM_TEXTURE_TARGETS);
>>>> +
>>>> +   if (tex_obj->Target == 0)
>>>> +      finish_texture_init(ctx, target, tex_obj, targetIndex);
>>>> +
>>>> +   assert(tex_obj->Target == target);
>>>> +   assert(tex_obj->TargetIndex == targetIndex);
>>>> +
>>>> +   bind_texture_object(ctx, ctx->Texture.CurrentUnit, tex_obj);
>>>> +}
>>>>    /**
>>>>     * Implement glBindTexture().  Do error checking, look-up or create
>>>> a new
>>>> @@ -1764,7 +1780,6 @@ bind_texture(struct gl_context *ctx, GLenum
>>>> target, GLuint texName,
>>>>       bind_texture_object(ctx, ctx->Texture.CurrentUnit, newTexObj);
>>>>    }
>>>> -
>>>>    void GLAPIENTRY
>>>>    _mesa_BindTexture_no_error(GLenum target, GLuint texName)
>>>>    {
>>>> diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h
>>>> index 8dea853..f2d78ac 100644
>>>> --- a/src/mesa/main/texobj.h
>>>> +++ b/src/mesa/main/texobj.h
>>>> @@ -175,7 +175,9 @@ extern void
>>>>    _mesa_delete_nameless_texture(struct gl_context *ctx,
>>>>                                  struct gl_texture_object *texObj);
>>>> -
>>>> +extern void
>>>> +_mesa_bind_texture(struct gl_context *ctx, GLenum target,
>>>> +                   struct gl_texture_object *tex_obj);
>>>>    /*@}*/
>>>>    /**
>>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
> 


More information about the mesa-dev mailing list