[Piglit] [PATCH] copyteximage: fix the test for legal texture formats
Anuj Phogat
anuj.phogat at gmail.com
Tue May 1 11:13:20 PDT 2012
On Tue, May 1, 2012 at 8:17 AM, Brian Paul <brianp at vmware.com> wrote:
> The code for checking if the texture format is legal was missing some
> cases (such as GL_RGB16F). We also need to check if the format is
> legal for the texture target. Compressed textures can't be used with
> GL_TEXTURE_1D for example.
>
> Refactor the format checking code to make it easier to read and expand
> in the future.
>
> Fixes https://bugs.freedesktop.org/show_bug.cgi?id=49124
> ---
> tests/texturing/copyteximage.c | 42 +++++++++++++++++++++++++++++++--------
> 1 files changed, 33 insertions(+), 9 deletions(-)
>
> diff --git a/tests/texturing/copyteximage.c b/tests/texturing/copyteximage.c
> index 663852c..8115f32 100644
> --- a/tests/texturing/copyteximage.c
> +++ b/tests/texturing/copyteximage.c
> @@ -121,6 +121,36 @@ is_compressed_format(GLenum format)
> }
> }
>
> +/** is the given texture internal format supported? */
> +static bool
> +supported_format(GLenum format)
> +{
> + switch (format) {
> + case GL_RGBA16F:
> + case GL_RGBA32F:
> + case GL_RGB16F:
> + case GL_RGB32F:
> + return piglit_is_extension_supported("GL_ARB_texture_float");
> + case GL_RG:
> + return piglit_is_extension_supported("GL_ARB_texture_rg");
> + case GL_DEPTH_COMPONENT32F:
> + return piglit_is_extension_supported("GL_ARB_depth_buffer_float");
> + default:
> + return true;
> + }
> +}
> +
> +/** is the texture format allowed for the texture target? */
> +static bool
> +supported_target_format(GLenum target, GLenum format)
> +{
> + /* all the compressed formats we test (so far) are 2D only */
> + if (is_compressed_format(format) && target == GL_TEXTURE_1D) {
> + return false;
> + }
> + return true;
> +}
> +
> enum piglit_result
> piglit_display(void)
> {
> @@ -183,18 +213,12 @@ piglit_display(void)
> piglit_get_gl_enum_name(target[j]),
> piglit_get_gl_enum_name(format));
>
> - if (((format == GL_RGBA16F ||
> - format == GL_RGBA32F) &&
> - !piglit_is_extension_supported(
> - "GL_ARB_texture_float")) ||
> -
> - ((format == GL_RG) &&
> - !piglit_is_extension_supported(
> - "GL_ARB_texture_rg"))) {
> + if (!supported_format(format) ||
> + !supported_target_format(target[j], format)) {
> if (!piglit_automatic)
> printf("Internal format = %s skipped\n",
> piglit_get_gl_enum_name(format));
> - continue;
> + continue;
> }
>
> /* To avoid failures not related to this test case,
> --
> 1.7.3.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
Reviewed by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the Piglit
mailing list