Add formats R8, RG88, GR88
It's follow-up patch of libdrm patch https://lists.freedesktop.org/archives/dri-devel/2015-July/086041.html
i915 allows R8 and GR88 because Mesa supports R8 and GR88 dma_bufs. https://lists.freedesktop.org/archives/mesa-commit/2015-July/057676.html
It's need to enable zero-copy video playback.
BUG=chromium:356871
TEST=AMD64/HSW,BDW,SKL
Change-Id: I9c822f882f4a8e448ebca68b24c7fbd7bf86155a
Reviewed-on: https://chromium-review.googlesource.com/337730
Commit-Ready: Stéphane Marchesin <marcheu@chromium.org>
Tested-by: Dongseong Hwang <dongseong.hwang@intel.com>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
Reviewed-by: Dongseong Hwang <dongseong.hwang@intel.com>
diff --git a/gbm.h b/gbm.h
index 9992db3..91b021a 100644
--- a/gbm.h
+++ b/gbm.h
@@ -84,6 +84,13 @@
/* color index */
#define GBM_FORMAT_C8 __gbm_fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
+/* 8 bpp Red */
+#define GBM_FORMAT_R8 __gbm_fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
+
+/* 16 bpp RG */
+#define GBM_FORMAT_RG88 __gbm_fourcc_code('R', 'G', '8', '8') /* [15:0] R:G 8:8 little endian */
+#define GBM_FORMAT_GR88 __gbm_fourcc_code('G', 'R', '8', '8') /* [15:0] G:R 8:8 little endian */
+
/* 8 bpp RGB */
#define GBM_FORMAT_RGB332 __gbm_fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */
#define GBM_FORMAT_BGR233 __gbm_fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */
diff --git a/gbm_priv.h b/gbm_priv.h
index 1879704..5aaada1 100644
--- a/gbm_priv.h
+++ b/gbm_priv.h
@@ -53,7 +53,7 @@
uint32_t format;
enum gbm_bo_flags usage;
}
- format_list[16];
+ format_list[18];
};
#endif
diff --git a/helpers.c b/helpers.c
index 1ad10ce..bd00de9 100644
--- a/helpers.c
+++ b/helpers.c
@@ -25,6 +25,9 @@
switch(format)
{
case GBM_FORMAT_C8:
+ case GBM_FORMAT_R8:
+ case GBM_FORMAT_RG88:
+ case GBM_FORMAT_GR88:
case GBM_FORMAT_RGB332:
case GBM_FORMAT_BGR233:
case GBM_FORMAT_XRGB4444:
@@ -87,6 +90,7 @@
switch(format)
{
case GBM_FORMAT_C8:
+ case GBM_FORMAT_R8:
case GBM_FORMAT_RGB332:
case GBM_FORMAT_BGR233:
return 8;
@@ -94,6 +98,8 @@
case GBM_FORMAT_NV12:
return 12;
+ case GBM_FORMAT_RG88:
+ case GBM_FORMAT_GR88:
case GBM_FORMAT_XRGB4444:
case GBM_FORMAT_XBGR4444:
case GBM_FORMAT_RGBX4444:
diff --git a/i915.c b/i915.c
index c152b0c..e8e9388 100644
--- a/i915.c
+++ b/i915.c
@@ -205,6 +205,8 @@
{GBM_FORMAT_UYVY, GBM_BO_USE_SCANOUT | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR},
{GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING | GBM_BO_USE_WRITE},
{GBM_FORMAT_YUYV, GBM_BO_USE_SCANOUT | GBM_BO_USE_WRITE | GBM_BO_USE_LINEAR},
+ {GBM_FORMAT_R8, GBM_BO_USE_RENDERING | GBM_BO_USE_LINEAR},
+ {GBM_FORMAT_GR88, GBM_BO_USE_RENDERING | GBM_BO_USE_LINEAR},
}
};