dsa_texture-storage immut remove level_max check

Submitted by Liam Middlebrook on June 23, 2015, 5:43 p.m.

Details

Message ID 55899AB2.6020305@nvidia.com
State New
Headers show

Not browsing as part of any series.

Commit Message

Liam Middlebrook June 23, 2015, 5:43 p.m.
From a5b8064d066b6829b7eb81d0b6440ce61ea2cad5 Mon Sep 17 00:00:00 2001
From: Liam Middlebrook <lmiddlebrook@nvidia.com>
Date: Tue, 23 Jun 2015 09:24:57 -0700
Subject: [PATCH] dsa_texture-storage immut remove level_max check

Removes the level_max related checks for the arb_direct_state_access
texture-storage immutability test. These checks were added because of a
confusion with the ARB_texture_storage extension. The union of this 
extension
along with the OpenGL Core Profile Specification, isn't always the most 
clear if
not read as a whole.

The test originally stated that max level must be checked due to the 
following
language from the spec.

"However, if TEXTURE_IMMUTABLE_FORMAT is
     TRUE, then level_base is clamped to the range [0, <levels> - 1] and
     level_max is then clamped to the range [level_base, <levels> - 1],
     where <levels> is the parameter passed the call to TexStorage* for
     the texture object."

This citation was missing the context in which that "clamping clause" 
was added
to. Reading directly before that, the spec states:

"In section 3.8.6 (Texture Parameters), after the sentence

     'In the remainder of section 3.8, denote by lod_min, lod_max,
     level_base, and level_max the values of the texture parameters
     TEXTURE_MIN_LOD, TEXTURE_MAX_LOD, TEXTURE_BASE_LEVEL, and
     TEXTURE_MAX_LEVEL respectively.'"

This means that the clamping is only respective to sections of the spec that
mention lod_min, lod_max, level_base, or level_max after section 3.8.6 (or
whatever section it may occur in for later versions of the specification).

In the OpenGL 4.5 Core Profile Specification this addition appears in 
the ending
of section 8.11 on page 229. In this context it is changed to cover the
remainder of chapter 8. Right before this is stated is where the 
behavior for
Tex*Parameter{if} is defined.

The remaining references to lod_min, lod_max, level_base, and level_max 
are made
in the following sections.
8.14 - Texture Minification
8.15 - Texture Magnification
8.17 - Texture Completeness

The references listed above only refer to reading the clamped values of 
lod_min,
lod_max, level_base, and level_max.
---
  tests/spec/arb_direct_state_access/texture-storage.c | 17 
-----------------
  1 file changed, 17 deletions(-)

Patch hide | download patch | download mbox

diff --git a/tests/spec/arb_direct_state_access/texture-storage.c 
b/tests/spec/arb_direct_state_access/texture-storage.c
index 16bd39d..8bdef8b 100644
--- a/tests/spec/arb_direct_state_access/texture-storage.c
+++ b/tests/spec/arb_direct_state_access/texture-storage.c
@@ -535,7 +535,6 @@  static bool
  test_immutablity(GLenum target)
  {
      GLuint tex;
-    GLint level;
      GLint immutable_format;

      bool pass = true;
@@ -544,8 +543,6 @@  test_immutablity(GLenum target)
      glBindTextureUnit(0, tex);

      glTextureStorage2D(tex, 3, GL_RGBA8, 256, 256);
-    glTextureParameteri(tex, GL_TEXTURE_MAX_LEVEL, 4);
-    glGetTextureParameteriv(tex, GL_TEXTURE_MAX_LEVEL, &level);
      glGetTextureParameteriv(tex, GL_TEXTURE_IMMUTABLE_FORMAT,
                  &immutable_format);

@@ -554,20 +551,6 @@  test_immutablity(GLenum target)
                 "GL_TRUE after glTextureStorage2D\n", TestName);
          pass = false;
      }
-    if (level != 2) {
-        /* The ARB_texture_storage spec says:
-         *
-         *     "However, if TEXTURE_IMMUTABLE_FORMAT is TRUE, then
-         *     level_base is clamped to the range [0, <levels> - 1]
-         *     and level_max is then clamped to the range [level_base,
-         *     <levels> - 1], where <levels> is the parameter passed
-         *     the call to TexStorage* for the texture object"
-         */
-        printf("%s: GL_TEXTURE_MAX_LEVEL changed to %d, which is "
-               "outside the clamp range for immutables\n",
-               TestName, level);
-        pass = false;
-    }

      /* Other immutable tests happen per-format above */


Comments

bump

On 06/23/2015 10:43 AM, Liam Middlebrook wrote:
> From a5b8064d066b6829b7eb81d0b6440ce61ea2cad5 Mon Sep 17 00:00:00 2001
> From: Liam Middlebrook <lmiddlebrook@nvidia.com>
> Date: Tue, 23 Jun 2015 09:24:57 -0700
> Subject: [PATCH] dsa_texture-storage immut remove level_max check
>
> Removes the level_max related checks for the arb_direct_state_access
> texture-storage immutability test. These checks were added because of a
> confusion with the ARB_texture_storage extension. The union of this 
> extension
> along with the OpenGL Core Profile Specification, isn't always the 
> most clear if
> not read as a whole.
>
> The test originally stated that max level must be checked due to the 
> following
> language from the spec.
>
> "However, if TEXTURE_IMMUTABLE_FORMAT is
>     TRUE, then level_base is clamped to the range [0, <levels> - 1] and
>     level_max is then clamped to the range [level_base, <levels> - 1],
>     where <levels> is the parameter passed the call to TexStorage* for
>     the texture object."
>
> This citation was missing the context in which that "clamping clause" 
> was added
> to. Reading directly before that, the spec states:
>
> "In section 3.8.6 (Texture Parameters), after the sentence
>
>     'In the remainder of section 3.8, denote by lod_min, lod_max,
>     level_base, and level_max the values of the texture parameters
>     TEXTURE_MIN_LOD, TEXTURE_MAX_LOD, TEXTURE_BASE_LEVEL, and
>     TEXTURE_MAX_LEVEL respectively.'"
>
> This means that the clamping is only respective to sections of the 
> spec that
> mention lod_min, lod_max, level_base, or level_max after section 3.8.6 
> (or
> whatever section it may occur in for later versions of the 
> specification).
>
> In the OpenGL 4.5 Core Profile Specification this addition appears in 
> the ending
> of section 8.11 on page 229. In this context it is changed to cover the
> remainder of chapter 8. Right before this is stated is where the 
> behavior for
> Tex*Parameter{if} is defined.
>
> The remaining references to lod_min, lod_max, level_base, and 
> level_max are made
> in the following sections.
> 8.14 - Texture Minification
> 8.15 - Texture Magnification
> 8.17 - Texture Completeness
>
> The references listed above only refer to reading the clamped values 
> of lod_min,
> lod_max, level_base, and level_max.
> ---
>  tests/spec/arb_direct_state_access/texture-storage.c | 17 
> -----------------
>  1 file changed, 17 deletions(-)
>
> diff --git a/tests/spec/arb_direct_state_access/texture-storage.c 
> b/tests/spec/arb_direct_state_access/texture-storage.c
> index 16bd39d..8bdef8b 100644
> --- a/tests/spec/arb_direct_state_access/texture-storage.c
> +++ b/tests/spec/arb_direct_state_access/texture-storage.c
> @@ -535,7 +535,6 @@ static bool
>  test_immutablity(GLenum target)
>  {
>      GLuint tex;
> -    GLint level;
>      GLint immutable_format;
>
>      bool pass = true;
> @@ -544,8 +543,6 @@ test_immutablity(GLenum target)
>      glBindTextureUnit(0, tex);
>
>      glTextureStorage2D(tex, 3, GL_RGBA8, 256, 256);
> -    glTextureParameteri(tex, GL_TEXTURE_MAX_LEVEL, 4);
> -    glGetTextureParameteriv(tex, GL_TEXTURE_MAX_LEVEL, &level);
>      glGetTextureParameteriv(tex, GL_TEXTURE_IMMUTABLE_FORMAT,
>                  &immutable_format);
>
> @@ -554,20 +551,6 @@ test_immutablity(GLenum target)
>                 "GL_TRUE after glTextureStorage2D\n", TestName);
>          pass = false;
>      }
> -    if (level != 2) {
> -        /* The ARB_texture_storage spec says:
> -         *
> -         *     "However, if TEXTURE_IMMUTABLE_FORMAT is TRUE, then
> -         *     level_base is clamped to the range [0, <levels> - 1]
> -         *     and level_max is then clamped to the range [level_base,
> -         *     <levels> - 1], where <levels> is the parameter passed
> -         *     the call to TexStorage* for the texture object"
> -         */
> -        printf("%s: GL_TEXTURE_MAX_LEVEL changed to %d, which is "
> -               "outside the clamp range for immutables\n",
> -               TestName, level);
> -        pass = false;
> -    }
>
>      /* Other immutable tests happen per-format above */
>