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

Mark Janes mark.a.janes at intel.com
Mon Oct 5 16:18:41 PDT 2015


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

  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

-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


More information about the mesa-dev mailing list