[Piglit] [PATCH] dsa_texture-storage immut remove level_max check

Liam Middlebrook lmiddlebrook at nvidia.com
Tue Jun 23 10:43:14 PDT 2015


 From a5b8064d066b6829b7eb81d0b6440ce61ea2cad5 Mon Sep 17 00:00:00 2001
From: Liam Middlebrook <lmiddlebrook at 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 */

-- 
2.4.3



More information about the Piglit mailing list