---
 .../texture-storage-multisample.c                  | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/tests/spec/arb_direct_state_access/texture-storage-multisample.c 
b/tests/spec/arb_direct_state_access/texture-storage-multisample.c
index f069245..f0437d4 100644
--- a/tests/spec/arb_direct_state_access/texture-storage-multisample.c
+++ b/tests/spec/arb_direct_state_access/texture-storage-multisample.c
@@ -246,6 +246,8 @@ check_non_generated_texture(void)
         */
        glTextureStorage2DMultisample(250, 4, GL_RGBA8, 64, 64, GL_TRUE);
        pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
+       glTextureStorage3DMultisample(250, 4, GL_RGBA8, 64, 64, 3, GL_TRUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
 
        piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
                "non-generated texture name");
@@ -383,6 +385,7 @@ draw_multisampled(void)
                          0, 0, piglit_width, piglit_height,
                          GL_COLOR_BUFFER_BIT, GL_LINEAR);
        pass &= piglit_check_gl_error(GL_NO_ERROR);
+       /* TODO: Add a Piglit probe call to check the output */
        if (!piglit_automatic) {
                piglit_present_results();
        }
@@ -395,6 +398,58 @@ draw_multisampled(void)
        return pass;
 }
 
+static bool
+trivial_but_should_work(void)
+{
+       bool pass = true;
+       GLuint texture;
+
+       /* 2D case */
+       glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE, 1, &texture);
+       glTextureStorage2DMultisample(texture, 4, GL_RGBA8, 64, 64, GL_TRUE);
+       pass &= piglit_check_gl_error(GL_NO_ERROR);
+
+       /* 3D case */
+       glDeleteTextures(1, &texture);
+       glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1, &texture);
+       glTextureStorage3DMultisample(texture, 4, GL_RGBA8, 64, 64, 3,
+                                     GL_TRUE);
+       pass &= piglit_check_gl_error(GL_NO_ERROR);
+
+       piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
+                                    "trivial, but should work");
+       return pass;
+}
+
+static bool
+check_improper_effective_target(void)
+{
+       bool pass = true;
+       GLuint texture;
+
+       /* 3D case with 2D target */
+       glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE, 1, &texture);
+       glTextureStorage3DMultisample(texture, 4, GL_RGBA8, 64, 64, 3,
+                                     GL_TRUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
+
+       /* 2D case with 3D target */
+       glDeleteTextures(1, &texture);
+       glCreateTextures(GL_TEXTURE_2D_MULTISAMPLE_ARRAY, 1, &texture);
+       glTextureStorage2DMultisample(texture, 4, GL_RGBA8, 64, 64, GL_TRUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
+
+       /* 2D case with non-multisampled target */
+       glDeleteTextures(1, &texture);
+       glCreateTextures(GL_TEXTURE_2D, 1, &texture);
+       glTextureStorage2DMultisample(texture, 4, GL_RGBA8, 64, 64, GL_TRUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
+
+       piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
+                                    "improper effective target");
+       return pass;
+}
+
 void
 piglit_init(int argc, char **argv)
 {
@@ -415,6 +470,10 @@ piglit_display(void)
                result = PIGLIT_FAIL;
        if (!check_unsized_format())
                result = PIGLIT_FAIL;
+       if (!check_improper_effective_target())
+               result = PIGLIT_FAIL;
+       if (!trivial_but_should_work())
+               result = PIGLIT_FAIL;
        if (!draw_multisampled())
                result = PIGLIT_FAIL;
 
-- 
2.1.0

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to