On 11/08/2013 01:40 PM, Jon Ashburn wrote:
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.
---
  tests/spec/arb_texture_view/targets.c | 28 +++++++++++++++++++++++++---
  1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/tests/spec/arb_texture_view/targets.c 
b/tests/spec/arb_texture_view/targets.c
index 2c2e5c5..18ea5aa 100644
--- a/tests/spec/arb_texture_view/targets.c
+++ b/tests/spec/arb_texture_view/targets.c
@@ -96,7 +96,6 @@ test_target_errors(GLenum target)
        GLenum legalTargets[4];
        unsigned int numTargets;
        GLenum illegalTargets[] = {
-               /* skip multisample */
                GL_TEXTURE_1D,
                GL_TEXTURE_2D,
                GL_TEXTURE_3D,
@@ -105,6 +104,8 @@ 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
        };

        glGenTextures(1, &tex);   /* orig tex */
@@ -113,8 +114,7 @@ test_target_errors(GLenum target)
        switch (target) {
        case GL_TEXTURE_1D:
                glTexStorage1D(target, levels, GL_RGBA8, width);
-               numTargets = 2;
-               update_valid_arrays(legalTargets, illegalTargets,
+               numTargets = update_valid_arrays(legalTargets, illegalTargets,
                                    ARRAY_SIZE(illegalTargets),
                                    GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, 0);
                break;
@@ -161,6 +161,22 @@ test_target_errors(GLenum target)
                                    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,
+                                   ARRAY_SIZE(illegalTargets),
+                                   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,
+                                   ARRAY_SIZE(illegalTargets),
+                                   GL_TEXTURE_2D_MULTISAMPLE,
+                                   GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 0);
+               break;
        default:
                assert(0);
                break;
@@ -212,6 +228,8 @@ 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");
+       piglit_require_extension("GL_ARB_texture_storage_multisample");

Could you make the dependency optional?

In update_valid_arrays() could you disable the multisample texture targets if GL_ARB_texture_storage_multisample isn't supported.

I have a feeling we'll have ARB_texture_view before we have ARB_texture_storage_multisample in the gallium drivers.

-Brian

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to