[Piglit] [PATCH 3/7] arb_texture_cube_map_array: check for teximage3d invalid values.

Brian Paul brian.e.paul at gmail.com
Sat Sep 22 08:33:08 PDT 2012


On Sat, Sep 22, 2012 at 2:07 AM, Dave Airlie <airlied at gmail.com> wrote:
> On Fri, Sep 7, 2012 at 12:52 AM, Brian Paul <brianp at vmware.com> wrote:
>> On 09/05/2012 09:34 PM, Dave Airlie wrote:
>>>
>>> From: Dave Airlie<airlied at redhat.com>
>>>
>>> This tests teximage3d returns invalid values for width != height
>>> and depth not divisible by 6.
>>>
>>> Signed-off-by: Dave Airlie<airlied at redhat.com>
>>> ---
>>>   .../arb_texture_cube_map_array/CMakeLists.gl.txt   |    1 +
>>>   .../teximage3d-invalid-values.c                    |   75
>>> ++++++++++++++++++++
>>>   2 files changed, 76 insertions(+), 0 deletions(-)
>>>   create mode 100644
>>> tests/spec/arb_texture_cube_map_array/teximage3d-invalid-values.c
>>>
>>> diff --git a/tests/spec/arb_texture_cube_map_array/CMakeLists.gl.txt
>>> b/tests/spec/arb_texture_cube_map_array/CMakeLists.gl.txt
>>> index c8f90f8..f86cbba 100644
>>> --- a/tests/spec/arb_texture_cube_map_array/CMakeLists.gl.txt
>>> +++ b/tests/spec/arb_texture_cube_map_array/CMakeLists.gl.txt
>>> @@ -10,3 +10,4 @@ link_libraries (
>>>   )
>>>
>>>   piglit_add_executable (arb_texture_cube_map_array-cubemap cubemap.c)
>>> +piglit_add_executable
>>> (arb_texture_cube_map_array-teximage3d-invalid-values
>>> teximage3d-invalid-values.c)
>>> diff --git
>>> a/tests/spec/arb_texture_cube_map_array/teximage3d-invalid-values.c
>>> b/tests/spec/arb_texture_cube_map_array/teximage3d-invalid-values.c
>>> new file mode 100644
>>> index 0000000..dec8f8a
>>> --- /dev/null
>>> +++ b/tests/spec/arb_texture_cube_map_array/teximage3d-invalid-values.c
>>> @@ -0,0 +1,75 @@
>>> +/* Copyright © 2012 Red Hat.
>>> + *
>>> + * Permission is hereby granted, free of charge, to any person obtaining
>>> a
>>> + * copy of this software and associated documentation files (the
>>> "Software"),
>>> + * to deal in the Software without restriction, including without
>>> limitation
>>> + * the rights to use, copy, modify, merge, publish, distribute,
>>> sublicense,
>>> + * and/or sell copies of the Software, and to permit persons to whom the
>>> + * Software is furnished to do so, subject to the following conditions:
>>> + *
>>> + * The above copyright notice and this permission notice (including the
>>> next
>>> + * paragraph) shall be included in all copies or substantial portions of
>>> the
>>> + * Software.
>>> + *
>>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> EXPRESS OR
>>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>>> MERCHANTABILITY,
>>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
>>> SHALL
>>> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
>>> OTHER
>>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>>> ARISING
>>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>>> DEALINGS
>>> + * IN THE SOFTWARE.
>>> + */
>>> +
>>> +/** @file teximage3d-invalid-values
>>> + *
>>> + * From the GL_ARB_texture_cube_map_array spec:
>>> + *
>>> + * TexImage3D generates the error INVALID_VALUE if<target>  is
>>> + * TEXTURE_CUBE_MAP_ARRAY_ARB and<depth>  is not a multiple of 6.
>>> + * TexImage3D generates the error INVALID_VALUE if<target>  is
>>> + * TEXTURE_CUBE_MAP_ARRAY_ARB and<width>  and<height>  are not equal.
>>> + */
>>> +
>>> +#include "piglit-util-gl-common.h"
>>> +
>>> +PIGLIT_GL_TEST_MAIN(
>>> +    32 /*window_width*/,
>>> +    32 /*window_height*/,
>>> +    GLUT_DOUBLE | GLUT_RGB | GLUT_ALPHA)
>>> +
>>> +enum piglit_result
>>> +piglit_display(void)
>>> +{
>>> +       return PIGLIT_FAIL; /* UNREACHED */
>>> +}
>>> +
>>> +
>>> +void
>>> +piglit_init(int argc, char **argv)
>>> +{
>>> +       GLuint tex;
>>> +       char *data = NULL;
>>> +
>>> +       piglit_require_extension("GL_ARB_texture_cube_map_array");
>>> +
>>> +       glGenTextures(1,&tex);
>>> +       glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, tex);
>>> +
>>> +       /* multiple of 6 depth tests */
>>> +       /* less than 6 */
>>> +       glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGB, 64, 64, 4, 0,
>>> GL_RGB, GL_FLOAT, data);
>>> +       if (!piglit_check_gl_error(GL_INVALID_VALUE))
>>> +            piglit_report_result(PIGLIT_FAIL);
>>> +
>>> +       /* greater than 6 */
>>> +       glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGB, 64, 64, 14, 0,
>>> GL_RGB, GL_FLOAT, data);
>>> +       if (!piglit_check_gl_error(GL_INVALID_VALUE))
>>> +            piglit_report_result(PIGLIT_FAIL);
>>> +
>>> +       /* different w/h */
>>> +       glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, 0, GL_RGB, 64, 14, 6, 0,
>>> GL_RGB, GL_FLOAT, data);
>>> +       if (!piglit_check_gl_error(GL_INVALID_VALUE))
>>> +            piglit_report_result(PIGLIT_FAIL);
>>> +
>>> +       piglit_report_result(PIGLIT_PASS);
>>> +}
>>
>>
>> It might also be worthwhile to test setting a mipmap level > 0 with depth=6
>> (or 12, 18, etc).
>
> I was trying to stick to explicit new errors introduced in the spec, I
> couldn't see where this would fit into that.

My point was to simply test a mipmap level other than zero because
Mesa (OpenGL) has some size error-checking code that depends on the
mipmap level.  It's not a big deal though.

-Brian


More information about the Piglit mailing list