EGL_EXT_image_dma_buf_import: add P10 format support

Submitted by Tapani Pälli on Feb. 7, 2019, 10:59 a.m.

Details

Message ID 20190207105921.13580-1-tapani.palli@intel.com
State New
Headers show
Series "EGL_EXT_image_dma_buf_import: add P10 format support" ( rev: 1 ) in Piglit

Not browsing as part of any series.

Commit Message

Tapani Pälli Feb. 7, 2019, 10:59 a.m.
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Signed-off-by: Harish Krupo <harish.krupo.kps@intel.com>
---

I also made MR of this but only then realized MR's are not used with
Piglit just yet!

 tests/opengl.py                                    |  2 ++
 .../spec/ext_image_dma_buf_import/sample_common.c  |  1 +
 .../spec/ext_image_dma_buf_import/sample_common.h  |  1 +
 tests/spec/ext_image_dma_buf_import/sample_yuv.c   | 14 ++++++++++++++
 .../util/piglit-framework-gl/piglit_drm_dma_buf.c  |  5 +++++
 .../util/piglit-framework-gl/piglit_drm_dma_buf.h  |  4 ++++
 6 files changed, 27 insertions(+)

Patch hide | download patch | download mbox

diff --git a/tests/opengl.py b/tests/opengl.py
index 97dfbf984..8676e231c 100644
--- a/tests/opengl.py
+++ b/tests/opengl.py
@@ -3030,6 +3030,8 @@  with profile.test_list.group_manager(
       'ext_image_dma_buf_import-sample_yvu420', run_concurrent=False)
     g(['ext_image_dma_buf_import-sample_yuv', '-fmt=AYUV'],
       'ext_image_dma_buf_import-sample_ayuv', run_concurrent=False)
+    g(['ext_image_dma_buf_import-sample_yuv', '-fmt=P010'],
+      'ext_image_dma_buf_import-sample_p010', run_concurrent=False)
     g(['ext_image_dma_buf_import-transcode-nv12-as-r8-gr88'],
       'ext_image_dma_buf_import-transcode-nv12-as-r8-gr88',
       run_concurrent=False)
diff --git a/tests/spec/ext_image_dma_buf_import/sample_common.c b/tests/spec/ext_image_dma_buf_import/sample_common.c
index 2f586c774..426f4cc52 100644
--- a/tests/spec/ext_image_dma_buf_import/sample_common.c
+++ b/tests/spec/ext_image_dma_buf_import/sample_common.c
@@ -153,6 +153,7 @@  egl_image_for_dma_buf_fd(struct piglit_dma_buf *buf, int fd, int fourcc, EGLImag
 	EGLint *attr;
 	switch (fourcc) {
 	case DRM_FORMAT_NV12:
+	case DRM_FORMAT_P010:
 		attr = attr_nv12;
 		break;
 	case DRM_FORMAT_YUV420:
diff --git a/tests/spec/ext_image_dma_buf_import/sample_common.h b/tests/spec/ext_image_dma_buf_import/sample_common.h
index 36a5bb584..155301250 100644
--- a/tests/spec/ext_image_dma_buf_import/sample_common.h
+++ b/tests/spec/ext_image_dma_buf_import/sample_common.h
@@ -25,6 +25,7 @@ 
 
 #include "piglit-util-egl.h"
 #include "piglit-util-gl.h"
+#include "piglit-framework-gl/piglit_drm_dma_buf.h"
 
 /**
  * Create a dma buffer with format 'fourcc' setting the given pixels as its
diff --git a/tests/spec/ext_image_dma_buf_import/sample_yuv.c b/tests/spec/ext_image_dma_buf_import/sample_yuv.c
index ed9f87e0f..35564049e 100644
--- a/tests/spec/ext_image_dma_buf_import/sample_yuv.c
+++ b/tests/spec/ext_image_dma_buf_import/sample_yuv.c
@@ -45,6 +45,17 @@  static int fourcc = -1;
 enum piglit_result
 piglit_display(void)
 {
+	static const uint16_t p010[] = {
+		/* Y */
+		12850, 17990, 23130, 28270,
+		12850, 17990, 23130, 28270,
+		12850, 17990, 23130, 28270,
+		12850, 17990, 23130, 28270,
+		/* UV */
+		30840, 33410, 35980, 33410,
+		30840, 41120, 35980, 41120,
+	};
+
 	static const unsigned char nv12[] = {
 		/* Y */
 		 50,  70,  90, 110,
@@ -127,6 +138,9 @@  piglit_display(void)
 
 	enum piglit_result res;
 	switch (fourcc) {
+	case DRM_FORMAT_P010:
+		t = (unsigned char *) p010;
+		break;
 	case DRM_FORMAT_NV12:
 		t = nv12;
 		break;
diff --git a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
index 13bf883f2..7f7420b23 100644
--- a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
+++ b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.c
@@ -163,6 +163,10 @@  piglit_intel_buf_create(unsigned w, unsigned h, unsigned fourcc,
 		cpp = 1;
 		buf_h = h * 3 / 2;
 		break;
+	case DRM_FORMAT_P010:
+		cpp = 2;
+		buf_h = h * 3 / 2;
+		break;
 	default:
 		fprintf(stderr, "invalid fourcc: %.4s\n", (char *)&fourcc);
 		return false;
@@ -192,6 +196,7 @@  piglit_intel_buf_create(unsigned w, unsigned h, unsigned fourcc,
 
 	switch (fourcc) {
 	case DRM_FORMAT_NV12:
+	case DRM_FORMAT_P010:
 		buf->offset[1] = stride * h;
 		buf->stride[1] = stride;
 		break;
diff --git a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.h b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.h
index b8a4e485d..b57ffa484 100644
--- a/tests/util/piglit-framework-gl/piglit_drm_dma_buf.h
+++ b/tests/util/piglit-framework-gl/piglit_drm_dma_buf.h
@@ -40,6 +40,10 @@ 
 #define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
 #endif
 
+#ifndef DRM_FORMAT_P010
+#define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0') /* 2x2 subsampled Cb:Cr plane 10 bits per channel */
+#endif
+
 /* added in libdrm 2.4.95 */
 #ifndef DRM_FORMAT_INVALID
 #define DRM_FORMAT_INVALID 0