I don't particularly care for this pattern: for (boolean = 1; boolean >= 0; boolean--)
This patch pulls the body of that loop out into a helper function, and calls it twice. One could argue that my use of function pointers is a bit arcane and ugly, too, but I think I prefer it in this case. Signed-off-by: Kenneth Graunke <[email protected]> --- tests/texturing/max-texture-size.c | 46 ++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/tests/texturing/max-texture-size.c b/tests/texturing/max-texture-size.c index 483980b..d1284f8 100644 --- a/tests/texturing/max-texture-size.c +++ b/tests/texturing/max-texture-size.c @@ -388,39 +388,31 @@ out: } static bool -ValidateTexSize(GLenum target, GLenum internalformat, bool useProxy) +for_targets_and_formats(bool(*test)(GLenum, GLenum)) { - if (useProxy) - return test_proxy_texture_size(target, internalformat); - else - return test_non_proxy_texture_size(target, internalformat); + bool pass = true; + int i, j; + for (i = 0; i < ARRAY_SIZE(target); i++) { + for (j = 0; j < ARRAY_SIZE(internalformat); j++) { + /* Skip floating point formats if + * GL_ARB_texture_float is not supported + */ + if ((internalformat[j] == GL_RGBA16F || + internalformat[j] == GL_RGBA32F) && + !piglit_is_extension_supported("GL_ARB_texture_float")) + continue; + pass = test(target[i], internalformat[j]) && pass; + } + } + return pass; } void piglit_init(int argc, char **argv) { - GLboolean pass = true; - int i, j, useProxy; - - for (useProxy = 1; useProxy >= 0; useProxy--) { - for (i = 0; i < ARRAY_SIZE(target); i++) { - for (j = 0; j < ARRAY_SIZE(internalformat); j++) { - /* Skip floating point formats if - * GL_ARB_texture_float is not supported - */ - if ((internalformat[j] == GL_RGBA16F || - internalformat[j] == GL_RGBA32F) && - !piglit_is_extension_supported( - "GL_ARB_texture_float")) - continue; - /* Test using proxy textures */ - pass = ValidateTexSize (target[i], - internalformat[j], - useProxy) - && pass; - } - } - } + bool pass = for_targets_and_formats(test_proxy_texture_size) && + for_targets_and_formats(test_non_proxy_texture_size); + piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); } -- 1.8.5.2 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
