[Piglit] [PATCH 1/2] arb_internalformat_query2: avoid bogus error spam about unsupported pnames

sroland at vmware.com sroland at vmware.com
Sat Jan 27 01:00:34 UTC 2018


From: Roland Scheidegger <sroland at vmware.com>

The test fed the equivalent_pname into the get_unsupported_response()
function, which led to nonsense logged errors as this only recognizes
the original pnames.
Refactor pname/equivalent_pname translation so always the original pnames
are fed into that function.
---
 tests/spec/arb_internalformat_query2/common.c      | 34 +++++++++++++++++++++-
 .../internalformat-size-checks.c                   | 23 ++-------------
 .../internalformat-type-checks.c                   | 21 ++-----------
 .../arb_transform_feedback_overflow_query/basic.c  | 22 ++++++++++++++
 4 files changed, 59 insertions(+), 41 deletions(-)

diff --git a/tests/spec/arb_internalformat_query2/common.c b/tests/spec/arb_internalformat_query2/common.c
index 9fa5fa9d1..5fc4c833b 100644
--- a/tests/spec/arb_internalformat_query2/common.c
+++ b/tests/spec/arb_internalformat_query2/common.c
@@ -496,6 +496,37 @@ create_texture(const GLenum target,
         }
         return result;
 }
+
+
+static GLenum
+translate_pname(const GLenum pname)
+{
+        switch (pname) {
+        case GL_INTERNALFORMAT_RED_TYPE:
+        case GL_INTERNALFORMAT_GREEN_TYPE:
+        case GL_INTERNALFORMAT_BLUE_TYPE:
+        case GL_INTERNALFORMAT_ALPHA_TYPE:
+               return pname - GL_INTERNALFORMAT_RED_TYPE + GL_TEXTURE_RED_TYPE;
+         case GL_INTERNALFORMAT_DEPTH_TYPE:
+        /* case GL_INTERNALFORMAT_STENCIL_TYPE, */
+                return GL_TEXTURE_DEPTH_TYPE;
+        case GL_INTERNALFORMAT_RED_SIZE:
+        case GL_INTERNALFORMAT_GREEN_SIZE:
+        case GL_INTERNALFORMAT_BLUE_SIZE:
+        case GL_INTERNALFORMAT_ALPHA_SIZE:
+                return pname - GL_INTERNALFORMAT_RED_SIZE + GL_TEXTURE_RED_SIZE;
+        case GL_INTERNALFORMAT_DEPTH_SIZE:
+                return GL_TEXTURE_DEPTH_SIZE;
+        case GL_INTERNALFORMAT_STENCIL_SIZE:
+                return GL_TEXTURE_STENCIL_SIZE;
+        case GL_INTERNALFORMAT_SHARED_SIZE:
+                return GL_TEXTURE_SHARED_SIZE;
+        default:
+                assert(!"incorrect pname");
+                return 0;
+        }
+}
+
 /*
  * Builds a a texture using @target and @internalformat, and compares
  * the result of calling GetTexLevelParameter using @pname with the
@@ -520,6 +551,7 @@ test_data_check_against_get_tex_level_parameter(test_data *data,
         GLuint tex;
         GLuint buffer;
         GLenum real_target = target;
+        GLenum pname_equiv = translate_pname(pname);
 
         result = create_texture(target, internalformat, &tex, &buffer);
         if (!result)
@@ -530,7 +562,7 @@ test_data_check_against_get_tex_level_parameter(test_data *data,
         if (target == GL_TEXTURE_CUBE_MAP) {
                 real_target = GL_TEXTURE_CUBE_MAP_POSITIVE_X;
         }
-        glGetTexLevelParameteriv(real_target, 0, pname, &param);
+        glGetTexLevelParameteriv(real_target, 0, pname_equiv, &param);
         if (!piglit_check_gl_error(GL_NO_ERROR)) {
                 result = false;
                 fprintf(stderr, "\tError calling glGetTexLevelParameter\n");
diff --git a/tests/spec/arb_internalformat_query2/internalformat-size-checks.c b/tests/spec/arb_internalformat_query2/internalformat-size-checks.c
index bbccbd6d1..928133133 100644
--- a/tests/spec/arb_internalformat_query2/internalformat-size-checks.c
+++ b/tests/spec/arb_internalformat_query2/internalformat-size-checks.c
@@ -53,24 +53,6 @@ static const GLenum pnames[] = {
         GL_INTERNALFORMAT_SHARED_SIZE,
 };
 
-/* From spec:
- *
- * "For textures this query will return the same information
- *  as querying GetTexLevelParameter{if}v for TEXTURE_*_SIZE
- *  would return."
- *
- * The following are the pnames we would need to use when
- * calling GetTexLevelParameter (so equivalent to pnames)
- */
-static const GLenum equivalent_pnames[] = {
-        GL_TEXTURE_RED_SIZE,
-        GL_TEXTURE_GREEN_SIZE,
-        GL_TEXTURE_BLUE_SIZE,
-        GL_TEXTURE_ALPHA_SIZE,
-        GL_TEXTURE_DEPTH_SIZE,
-        GL_TEXTURE_STENCIL_SIZE,
-        GL_TEXTURE_SHARED_SIZE,
-};
 
 enum piglit_result
 piglit_display(void)
@@ -102,7 +84,6 @@ static bool
 try_textures_size(const GLenum *targets, unsigned num_targets,
                   const GLenum *internalformats, unsigned num_internalformats,
                   const GLenum pname,
-                  const GLenum equivalent_pname,
                   test_data *data)
 {
         bool pass = true;
@@ -128,7 +109,7 @@ try_textures_size(const GLenum *targets, unsigned num_targets,
                         value_test = supported ?
                                 test_data_check_against_get_tex_level_parameter(data,
                                                                                 targets[i],
-                                                                                equivalent_pname,
+                                                                                pname,
                                                                                 internalformats[j]) :
                                 test_data_is_unsupported_response(data, pname);
 
@@ -168,7 +149,7 @@ check_textures_size(void)
 
                         pass = try_textures_size(texture_targets, ARRAY_SIZE(texture_targets),
                                                  valid_internalformats, ARRAY_SIZE(valid_internalformats),
-                                                 pnames[i], equivalent_pnames[i],
+                                                 pnames[i],
                                                  data)
                                 && pass;
                 }
diff --git a/tests/spec/arb_internalformat_query2/internalformat-type-checks.c b/tests/spec/arb_internalformat_query2/internalformat-type-checks.c
index e2d739424..c6e46f504 100644
--- a/tests/spec/arb_internalformat_query2/internalformat-type-checks.c
+++ b/tests/spec/arb_internalformat_query2/internalformat-type-checks.c
@@ -53,22 +53,6 @@ static const GLenum pnames[] = {
         /* GL_INTERNALFORMAT_STENCIL_TYPE, */
 };
 
-/* From spec:
- *
- * "For textures this query will return the same information
- *  as querying GetTexLevelParameter{if}v for TEXTURE_*_TYPE
- *  would return."
- *
- * The following are the pnames we would need to use when
- * calling GetTexLevelParameter (so equivalent to pnames)
- */
-static const GLenum equivalent_pnames[] = {
-        GL_TEXTURE_RED_TYPE,
-        GL_TEXTURE_GREEN_TYPE,
-        GL_TEXTURE_BLUE_TYPE,
-        GL_TEXTURE_ALPHA_TYPE,
-        GL_TEXTURE_DEPTH_TYPE,
-};
 
 /* From spec:
  *
@@ -120,7 +104,6 @@ static bool
 try_textures_type(const GLenum *targets, unsigned num_targets,
                   const GLenum *internalformats, unsigned num_internalformats,
                   const GLenum pname,
-                  const GLenum equivalent_pname,
                   test_data *data)
 {
         bool pass = true;
@@ -151,7 +134,7 @@ try_textures_type(const GLenum *targets, unsigned num_targets,
                                 value_test = value_test &&
                                         test_data_check_against_get_tex_level_parameter(data,
                                                                                         targets[i],
-                                                                                        equivalent_pname,
+                                                                                        pname,
                                                                                         internalformats[j]);
                         }
 
@@ -184,7 +167,7 @@ check_textures_type(void)
 
                         pass = try_textures_type(texture_targets, ARRAY_SIZE(texture_targets),
                                                  valid_internalformats, ARRAY_SIZE(valid_internalformats),
-                                                 pnames[i], equivalent_pnames[i],
+                                                 pnames[i],
                                                  data)
                                 && pass;
                 }
diff --git a/tests/spec/arb_transform_feedback_overflow_query/basic.c b/tests/spec/arb_transform_feedback_overflow_query/basic.c
index 017335c98..3fdbc34ee 100644
--- a/tests/spec/arb_transform_feedback_overflow_query/basic.c
+++ b/tests/spec/arb_transform_feedback_overflow_query/basic.c
@@ -450,6 +450,22 @@ test_no_overflow_stream_any(void *test_data)
 			   test_data);
 }
 
+/**
+ * No overflow.
+ * Query for overflow on any stream.
+ * inverted = true, expected overflow: false.
+ */
+static enum piglit_result
+test_no_overflow_stream_any_inverted(void *test_data)
+{
+	GLuint query_type = GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB;
+	int array_sizes[] = { 6, 6 };
+
+	return run_subtest(2, array_sizes, 0, query_type, true, false,
+			   test_data);
+}
+
+
 
 const struct piglit_subtest overflow_query_subtests[] = {
 	{
@@ -555,6 +571,12 @@ const struct piglit_subtest overflow_query_subtests[] = {
 		"conditional_render"
 	},
 	{
+		"arb_transform_feedback_overflow_query-conditional_render_no_overflow_inverted",
+		"arb_transform_feedback_overflow_query-conditional_render_no_overflow_inverted",
+		test_no_overflow_stream_any_inverted,
+		"conditional_render"
+	},
+	{
 		"arb_transform_feedback_overflow_query-buffer_object_0",
 		"arb_transform_feedback_overflow_query-buffer_object_0",
 		test_overflow_stream_0,
-- 
2.12.3



More information about the Piglit mailing list