From: Varad Gautam <[email protected]>

incomplete modifier attributes must be treated as invalid as per
EGL_EXT_image_dma_buf_import_modifiers.

Signed-off-by: Varad Gautam <[email protected]>
---
 .../ext_image_dma_buf_import/invalid_attributes.c  | 55 ++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/tests/spec/ext_image_dma_buf_import/invalid_attributes.c 
b/tests/spec/ext_image_dma_buf_import/invalid_attributes.c
index cc0b046..edda9bc 100644
--- a/tests/spec/ext_image_dma_buf_import/invalid_attributes.c
+++ b/tests/spec/ext_image_dma_buf_import/invalid_attributes.c
@@ -54,6 +54,53 @@ PIGLIT_GL_TEST_CONFIG_END
 #define DRM_FORMAT_INVALID fourcc_code('F', 'O', 'O', '0')
 
 static bool
+test_half_modifier(unsigned w, unsigned h, int fd, unsigned stride,
+               unsigned offset) {
+       const EGLint attr_lo[15] = {
+                       EGL_HEIGHT, h,
+                       EGL_WIDTH, w,
+                       EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_ARGB8888,
+                       EGL_DMA_BUF_PLANE0_FD_EXT, fd,
+                       EGL_DMA_BUF_PLANE0_OFFSET_EXT, offset,
+                       EGL_DMA_BUF_PLANE0_PITCH_EXT, stride,
+                       EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, 1,
+                       EGL_NONE };
+
+       const EGLint attr_hi[15] = {
+                       EGL_HEIGHT, h,
+                       EGL_WIDTH, w,
+                       EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_ARGB8888,
+                       EGL_DMA_BUF_PLANE0_FD_EXT, fd,
+                       EGL_DMA_BUF_PLANE0_OFFSET_EXT, offset,
+                       EGL_DMA_BUF_PLANE0_PITCH_EXT, stride,
+                       EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, 1,
+                       EGL_NONE };
+
+       EGLImageKHR img = eglCreateImageKHR(eglGetCurrentDisplay(),
+                               EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT,
+                               (EGLClientBuffer)NULL, attr_lo);
+
+       if (!piglit_check_egl_error(EGL_BAD_PARAMETER)) {
+               if (img)
+                       eglDestroyImageKHR(eglGetCurrentDisplay(), img);
+               return false;
+       }
+       eglDestroyImageKHR(eglGetCurrentDisplay(), img);
+
+       img = eglCreateImageKHR(eglGetCurrentDisplay(),
+                               EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT,
+                               (EGLClientBuffer)NULL, attr_hi);
+
+       if (!piglit_check_egl_error(EGL_BAD_PARAMETER)) {
+               if (img)
+                       eglDestroyImageKHR(eglGetCurrentDisplay(), img);
+               return false;
+       }
+
+       return true;
+}
+
+static bool
 test_excess_attributes(unsigned w, unsigned h, int fd, unsigned stride,
                unsigned offset, EGLint attr_id, EGLint attr_val)
 {
@@ -238,6 +285,14 @@ piglit_display(void)
        pass = test_invalid_format(w, h, buf->fd, buf->stride[0], 
buf->offset[0]) && pass;
        pass = test_pitch_zero(w, h, buf->fd, buf->stride[0], buf->offset[0]) 
&& pass;
 
+       if (piglit_is_egl_extension_supported(eglGetCurrentDisplay(),
+               "EGL_EXT_image_dma_buf_import_modifiers")) {
+               pass = test_half_modifier(w, h, buf->fd, buf->stride[0],
+                                         buf->offset[0]) && pass;
+               pass = test_half_modifier(w, h, buf->fd, buf->stride[0],
+                                         buf->offset[0]) && pass;
+       }
+
        /**
         * EGL stack can claim the ownership of the file descriptor only when it
         * succeeds. Close the file descriptor here and check that it really
-- 
2.6.2

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

Reply via email to