[Mesa-dev] [PATCH 1/3] mesa: remove unneeded error check in create_textures()

Mark Janes mark.a.janes at intel.com
Tue Oct 6 14:45:43 PDT 2015


yes, the assertions are still accurate.  I haven't been able to get a
stack trace yet.  If I don't get to it perhaps Tapani can take a look
this evening.

Ian Romanick <idr at freedesktop.org> writes:

> On 10/06/2015 09:31 AM, Mark Janes wrote:
>> Mark Janes <mark.a.janes at intel.com> writes:
>> 
>>> I tested this patch and found:
>>>
>>> regressions:
>>>   spec.arb_shader_storage_buffer_object.layout-std140-write-shader  (BDW only)
>>>     expected[1] = 1.00. Read value: 0.00
>> 
>> In subsequent testing I found this BDW failure to be a pre-existing and
>> intermittent.  It is not due to this patch set.
>> 
>>>
>>>   spec.arb_copy_image.arb_copy_image-srgb-copy  (assertion)
>>>     arb_copy_image-srgb-copy: src/mesa/main/texobj.c:1739:
>>>       _mesa_BindTexture: Assertion `newTexObj->TargetIndex == targetIndex'
>>>       failed.
>>>
>>> fixes:
>>>   spec.!opengl 1_0.gl-1.0-beginend-coverage
>>>   spec.!opengl 1_0.gl-1.0-no-op-paths
>>>   spec.arb_copy_image.arb_copy_image-formats
>
> But are the assertion and fixes still accurate?
>
>>>
>>> -Mark
>>>
>>> Brian Paul <brianp at vmware.com> writes:
>>>
>>>> Callers of create_texture() will either pass target=0 or a validated
>>>> GL texture target enum so no need to do another error check inside
>>>> the loop.
>>>> ---
>>>>  src/mesa/main/texobj.c | 11 ++---------
>>>>  1 file changed, 2 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
>>>> index 173e43c..aa4b38c 100644
>>>> --- a/src/mesa/main/texobj.c
>>>> +++ b/src/mesa/main/texobj.c
>>>> @@ -1211,6 +1211,7 @@ _mesa_create_nameless_texture(struct gl_context *ctx, GLenum target)
>>>>   * glCreateTextures should throw errors if target = 0. This is not exposed to
>>>>   * the rest of Mesa to encourage Mesa internals to use nameless textures,
>>>>   * which do not require expensive hash lookups.
>>>> + * \param target  either 0 or a a valid / error-checked texture target enum
>>>>   */
>>>>  static void
>>>>  create_textures(struct gl_context *ctx, GLenum target,
>>>> @@ -1219,6 +1220,7 @@ create_textures(struct gl_context *ctx, GLenum target,
>>>>     GLuint first;
>>>>     GLint i;
>>>>     const char *func = dsa ? "Create" : "Gen";
>>>> +   const GLint targetIndex = _mesa_tex_target_to_index(ctx, target);
>>>>  
>>>>     if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
>>>>        _mesa_debug(ctx, "gl%sTextures %d\n", func, n);
>>>> @@ -1241,7 +1243,6 @@ create_textures(struct gl_context *ctx, GLenum target,
>>>>     /* Allocate new, empty texture objects */
>>>>     for (i = 0; i < n; i++) {
>>>>        struct gl_texture_object *texObj;
>>>> -      GLint targetIndex;
>>>>        GLuint name = first + i;
>>>>        texObj = ctx->Driver.NewTextureObject(ctx, name, target);
>>>>        if (!texObj) {
>>>> @@ -1252,14 +1253,6 @@ create_textures(struct gl_context *ctx, GLenum target,
>>>>  
>>>>        /* Initialize the target index if target is non-zero. */
>>>>        if (target != 0) {
>>>> -         targetIndex = _mesa_tex_target_to_index(ctx, texObj->Target);
>>>> -         if (targetIndex < 0) { /* Bad Target */
>>>> -            mtx_unlock(&ctx->Shared->Mutex);
>>>> -            _mesa_error(ctx, GL_INVALID_ENUM, "gl%sTextures(target = %s)",
>>>> -                        func, _mesa_enum_to_string(texObj->Target));
>>>> -            return;
>>>> -         }
>>>> -         assert(targetIndex < NUM_TEXTURE_TARGETS);
>>>>           texObj->TargetIndex = targetIndex;
>>>>        }
>>>>  
>>>> -- 
>>>> 1.9.1
>>>>
>>>> _______________________________________________
>>>> mesa-dev mailing list
>>>> mesa-dev at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>> 


More information about the mesa-dev mailing list