[Piglit] [PATCH v2] ARB_texture_view: Add multisample texture target testing
Jon Ashburn
jon at lunarg.com
Tue Nov 12 12:26:39 PST 2013
The "targets" test is extended to include testing of
GL_TEXTURE_2D_MULTISAMPLE and GL_TEXTURE_2D_MULTISAMPLE_ARRAY.
This will test making valid and invalid texture views of these two
multisample targets and ensuring the correct GL error is set.
Reviewed-by: Brian Paul <brianp at vmware.com>
Signed-off-by: Jon Ashburn <jon at lunarg.com>
---
tests/spec/arb_texture_view/targets.c | 53 +++++++++++++++++++++++++++--------
1 file changed, 41 insertions(+), 12 deletions(-)
diff --git a/tests/spec/arb_texture_view/targets.c b/tests/spec/arb_texture_view/targets.c
index 2c2e5c5..b000751 100644
--- a/tests/spec/arb_texture_view/targets.c
+++ b/tests/spec/arb_texture_view/targets.c
@@ -94,9 +94,8 @@ test_target_errors(GLenum target)
GLuint tex;
enum piglit_result pass = true;
GLenum legalTargets[4];
- unsigned int numTargets;
+ unsigned int numTargets, numIllegalTargets;
GLenum illegalTargets[] = {
- /* skip multisample */
GL_TEXTURE_1D,
GL_TEXTURE_2D,
GL_TEXTURE_3D,
@@ -105,7 +104,14 @@ test_target_errors(GLenum target)
GL_TEXTURE_1D_ARRAY,
GL_TEXTURE_2D_ARRAY,
GL_TEXTURE_CUBE_MAP_ARRAY,
+ GL_TEXTURE_2D_MULTISAMPLE,
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY
};
+
+ if (piglit_is_extension_supported("GL_ARB_texture_storage_multisample"))
+ numIllegalTargets = ARRAY_SIZE(illegalTargets);
+ else
+ numIllegalTargets = ARRAY_SIZE(illegalTargets) -2;
glGenTextures(1, &tex); /* orig tex */
glBindTexture(target, tex);
@@ -113,34 +119,33 @@ test_target_errors(GLenum target)
switch (target) {
case GL_TEXTURE_1D:
glTexStorage1D(target, levels, GL_RGBA8, width);
- numTargets = 2;
- update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numTargets = update_valid_arrays(legalTargets, illegalTargets,
+ numIllegalTargets,
GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, 0);
break;
case GL_TEXTURE_1D_ARRAY:
glTexStorage2D(target, levels, GL_RGBA8, width, height);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, 0);
break;
case GL_TEXTURE_2D:
glTexStorage2D(target, levels, GL_RGBA8, width, height);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, 0);
break;
case GL_TEXTURE_RECTANGLE:
glTexStorage2D(target, levels, GL_RGBA8, width, height);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_RECTANGLE, 0);
break;
case GL_TEXTURE_CUBE_MAP:
width = height;
glTexStorage2D(target, levels, GL_RGBA8, width, height);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_CUBE_MAP, GL_TEXTURE_2D,
GL_TEXTURE_2D_ARRAY,
GL_TEXTURE_CUBE_MAP_ARRAY, 0);
@@ -148,7 +153,7 @@ test_target_errors(GLenum target)
case GL_TEXTURE_3D:
glTexStorage3D(target, levels, GL_RGBA8, width, height, depth);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_3D, 0);
break;
case GL_TEXTURE_CUBE_MAP_ARRAY:
@@ -156,11 +161,27 @@ test_target_errors(GLenum target)
height = width;
glTexStorage3D(target, levels, GL_RGBA8, width, height, depth*6);
numTargets = update_valid_arrays(legalTargets, illegalTargets,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
GL_TEXTURE_CUBE_MAP, GL_TEXTURE_2D,
GL_TEXTURE_2D_ARRAY,
GL_TEXTURE_CUBE_MAP_ARRAY, 0);
break;
+ case GL_TEXTURE_2D_MULTISAMPLE:
+ glTexStorage2DMultisample(target, 2, GL_RGBA8, width, height,
+ GL_TRUE);
+ numTargets = update_valid_arrays(legalTargets, illegalTargets,
+ numIllegalTargets,
+ GL_TEXTURE_2D_MULTISAMPLE,
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0);
+ break;
+ case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
+ glTexStorage3DMultisample(target, 4, GL_RGBA8, width, height,
+ depth, GL_TRUE);
+ numTargets = update_valid_arrays(legalTargets, illegalTargets,
+ numIllegalTargets,
+ GL_TEXTURE_2D_MULTISAMPLE,
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0);
+ break;
default:
assert(0);
break;
@@ -178,7 +199,7 @@ test_target_errors(GLenum target)
GL_RG16, tex, levels);
/* ensure TextureView of illegal targets returns an error */
pass = pass && check_target_array(GL_INVALID_OPERATION,
- ARRAY_SIZE(illegalTargets),
+ numIllegalTargets,
illegalTargets,
GL_RG16, tex, levels);
err_out:
@@ -212,6 +233,7 @@ piglit_init(int argc, char **argv)
piglit_require_extension("GL_ARB_texture_cube_map_array");
piglit_require_extension("GL_EXT_texture_array");
piglit_require_extension("GL_ARB_texture_rectangle");
+
if (piglit_get_gl_version() < 31)
piglit_require_extension("GL_ARB_texture_cube_map");
@@ -228,6 +250,13 @@ piglit_init(int argc, char **argv)
"2D Array tex target validity");
X(test_target_errors(GL_TEXTURE_CUBE_MAP_ARRAY),
"Cubemap Array tex target validity");
+ if (piglit_is_extension_supported("GL_ARB_texture_storage_multisample")) {
+
+ X(test_target_errors(GL_TEXTURE_2D_MULTISAMPLE),
+ "Multisample 2D tex target validity");
+ X(test_target_errors(GL_TEXTURE_2D_MULTISAMPLE_ARRAY),
+ "Multisample 2D array tex target validity");
+ }
#undef X
pass = piglit_check_gl_error(GL_NO_ERROR) && pass;
piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);
--
1.8.1.2
More information about the Piglit
mailing list