[Mesa-dev] [PATCH] mesa/textureview: move error checks up higher

Anuj Phogat anuj.phogat at gmail.com
Tue May 3 10:10:09 UTC 2016


On Mon, May 2, 2016 at 10:21 PM, Dave Airlie <airlied at gmail.com> wrote:
>
> From: Dave Airlie <airlied at redhat.com>
>
> GL43-CTS.texture_view.errors checks for GL_INVALID_VALUE
> here but we catch these problems in the dimensionsOK check
> and return the wrong error value.
>
> This fixes:
> GL43-CTS.texture_view.errors.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/mesa/main/textureview.c | 50 +++++++++++++++++++++++----------------------
>  1 file changed, 26 insertions(+), 24 deletions(-)
>
> diff --git a/src/mesa/main/textureview.c b/src/mesa/main/textureview.c
> index 4b3b324..ef4d7bb 100644
> --- a/src/mesa/main/textureview.c
> +++ b/src/mesa/main/textureview.c
> @@ -639,15 +639,40 @@ _mesa_TextureView(GLuint texture, GLenum target, GLuint origtexture,
>     case GL_TEXTURE_2D:
>     case GL_TEXTURE_2D_MULTISAMPLE:
>     case GL_TEXTURE_RECTANGLE:
> +      depth = 1;
> +      break;
>     case GL_TEXTURE_CUBE_MAP:
> +      /* If the new texture's target is TEXTURE_CUBE_MAP, the clamped
> +       * <numlayers> must be equal to 6.
> +       */
> +      if (newViewNumLayers != 6) {
> +         _mesa_error(ctx, GL_INVALID_VALUE,
> +                     "glTextureView(clamped numlayers %d != 6)",
> +                     newViewNumLayers);
> +         return;
> +      }
>        depth = 1;
>        break;
>
>     case GL_TEXTURE_2D_ARRAY:
> -   case GL_TEXTURE_CUBE_MAP_ARRAY:
>     case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
>        depth = newViewNumLayers;
>        break;
> +   case GL_TEXTURE_CUBE_MAP_ARRAY:
> +      /* If the new texture's target is TEXTURE_CUBE_MAP_ARRAY,
> +       * then <numlayers> counts layer-faces rather than layers,
> +       * and the clamped <numlayers> must be a multiple of 6.
> +       * Otherwise, the error INVALID_VALUE is generated.
> +       */
> +      if ((newViewNumLayers % 6) != 0) {
> +         _mesa_error(ctx, GL_INVALID_VALUE,
> +                     "glTextureView(clamped numlayers %d is not"
> +                     " a multiple of 6)",
> +                     newViewNumLayers);
> +         return;
> +      }
> +      depth = newViewNumLayers;
> +      break;
>     }
>
>     /* If the dimensions of the original texture are larger than the maximum
> @@ -689,32 +714,9 @@ _mesa_TextureView(GLuint texture, GLenum target, GLuint origtexture,
>           return;
>        }
>        break;
> -
>     case GL_TEXTURE_CUBE_MAP:
> -      /* If the new texture's target is TEXTURE_CUBE_MAP, the clamped
> -       * <numlayers> must be equal to 6.
> -       */
> -      if (newViewNumLayers != 6) {
> -         _mesa_error(ctx, GL_INVALID_VALUE,
> -                     "glTextureView(clamped numlayers %d != 6)",
> -                     newViewNumLayers);
> -         return;
> -      }
>        break;
> -
>     case GL_TEXTURE_CUBE_MAP_ARRAY:
> -      /* If the new texture's target is TEXTURE_CUBE_MAP_ARRAY,
> -       * then <numlayers> counts layer-faces rather than layers,
> -       * and the clamped <numlayers> must be a multiple of 6.
> -       * Otherwise, the error INVALID_VALUE is generated.
> -       */
> -      if ((newViewNumLayers % 6) != 0) {
> -         _mesa_error(ctx, GL_INVALID_VALUE,
> -                     "glTextureView(clamped numlayers %d is not"
> -                     " a multiple of 6)",
> -                     newViewNumLayers);
> -         return;
> -      }
>        break;
>     }
>
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the mesa-dev mailing list