[Piglit] [PATCH 1/6] fbo: Ensure power-of-two window size in tests that make textures w/the window size
Ian Romanick
idr at freedesktop.org
Mon Oct 10 22:51:33 UTC 2016
From: Ian Romanick <ian.d.romanick at intel.com>
Commit 0f163d1 removed the non-default window size from many tests.
However, quite a few of these tests had power-of-two window sizes for
drivers that do not support GL_ARB_texture_non_power_of_two.
Fixes
fbo-nodepth-test on NV20 and i865G
fbo-nostencil-test on NV20 and i865G
fbo-alphatest-formats on i865G
fbo-blending-formats on NV20 and i865G
Somehow fbo-alphatest-formats was previously passing on NV20.
There are still a few failures in fbo-blending-formats on i865G, but the
test mostly passes. The remaining failures there are likely legitimate
problems.
None of the tests were fixed on R200, and both fbo-alphatest-formats and
fbo-blending-formats go from FAIL to CRASH. Both hit an assertion:
main/format_utils.c:178: _mesa_compute_rgba2base2rgba_component_mapping: Assertion `!&"Unexpected base format"' failed.
This should also fix these tests on NV10, NV30, and r100. I suspect
r100 will have the same troubles as r200.
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Cc: Brian Paul <brianp at vmware.com>
Cc: Ilia Mirkin <imirkin at alum.mit.edu>
---
tests/fbo/fbo-alphatest-formats.c | 6 ++++++
tests/fbo/fbo-blending-formats.c | 6 ++++++
tests/fbo/fbo-nodepth-test.c | 6 ++++++
tests/fbo/fbo-nostencil-test.c | 6 ++++++
tests/util/piglit-util.h | 26 ++++++++++++++++++++++++++
5 files changed, 50 insertions(+)
diff --git a/tests/fbo/fbo-alphatest-formats.c b/tests/fbo/fbo-alphatest-formats.c
index c96245c..02f38c4 100644
--- a/tests/fbo/fbo-alphatest-formats.c
+++ b/tests/fbo/fbo-alphatest-formats.c
@@ -34,6 +34,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
config.supports_gl_compat_version = 10;
+ /* Drivers that do not support GL_ARB_texture_non_power_of_two require
+ * window dimensions that are powers of two for this test.
+ */
+ config.window_width = next_power_of_two(config.window_width);
+ config.window_height = next_power_of_two(config.window_height);
+
config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/fbo/fbo-blending-formats.c b/tests/fbo/fbo-blending-formats.c
index 5eb3d8e..6cd7e9d 100644
--- a/tests/fbo/fbo-blending-formats.c
+++ b/tests/fbo/fbo-blending-formats.c
@@ -34,6 +34,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
config.supports_gl_compat_version = 10;
+ /* Drivers that do not support GL_ARB_texture_non_power_of_two require
+ * window dimensions that are powers of two for this test.
+ */
+ config.window_width = next_power_of_two(config.window_width);
+ config.window_height = next_power_of_two(config.window_height);
+
config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE;
PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/fbo/fbo-nodepth-test.c b/tests/fbo/fbo-nodepth-test.c
index 834e1c6..3ecd12e 100644
--- a/tests/fbo/fbo-nodepth-test.c
+++ b/tests/fbo/fbo-nodepth-test.c
@@ -37,6 +37,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
config.supports_gl_compat_version = 10;
+ /* Drivers that do not support GL_ARB_texture_non_power_of_two require
+ * window dimensions that are powers of two for this test.
+ */
+ config.window_width = next_power_of_two(config.window_width);
+ config.window_height = next_power_of_two(config.window_height);
+
config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/fbo/fbo-nostencil-test.c b/tests/fbo/fbo-nostencil-test.c
index bf2d4e9..ff687b0 100644
--- a/tests/fbo/fbo-nostencil-test.c
+++ b/tests/fbo/fbo-nostencil-test.c
@@ -37,6 +37,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
config.supports_gl_compat_version = 10;
+ /* Drivers that do not support GL_ARB_texture_non_power_of_two require
+ * window dimensions that are powers of two for this test.
+ */
+ config.window_width = next_power_of_two(config.window_width);
+ config.window_height = next_power_of_two(config.window_height);
+
config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
PIGLIT_GL_TEST_CONFIG_END
diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
index ac8eb88..034be92 100644
--- a/tests/util/piglit-util.h
+++ b/tests/util/piglit-util.h
@@ -186,6 +186,32 @@ piglit_run_selected_subtests(const struct piglit_subtest *all_subtests,
#define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1))
+static inline unsigned
+log2u(unsigned v)
+{
+#ifdef __GCC__
+ return v == 0 ? 0 : 31 - __builtin_clz(v);
+#else
+ unsigned res = 0;
+
+ while (v >>= 1)
+ res++;
+
+ return res;
+#endif
+}
+
+/**
+ * Returns the smallest power-of-two integer greater than or equal to v
+ */
+static inline unsigned
+next_power_of_two(unsigned v)
+{
+ /* Special case zero because 1U << 32 is undefined. */
+ return v == 0 ? 1 : 1U << (log2u(v - 1) + 1);
+}
+
+
/**
* Return true if and only if two string are equal according to strcmp().
*/
--
2.5.5
More information about the Piglit
mailing list