Add HDR10 support in kmssink
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
index 1331883..ece36e7 100644
--- a/sys/kms/gstkmssink.c
+++ b/sys/kms/gstkmssink.c
@@ -58,6 +58,8 @@
 #include "gstkmsbufferpool.h"
 #include "gstkmsallocator.h"
 
+#include <gst/video/gstvideohdr10meta.h>
+
 #define GST_PLUGIN_NAME "kmssink"
 #define GST_PLUGIN_DESC "Video sink using the Linux kernel mode setting API"
 
@@ -561,6 +563,15 @@
 
       tmp_caps = gst_caps_merge (tmp_caps, caps);
     }
+    /* FIXME: Add NV12_10LE caps here, no need this code
+     * when new drm fourcc added*/
+    caps = gst_caps_new_simple ("video/x-raw",
+        "format", G_TYPE_STRING, "NV12_10LE",
+        "width", GST_TYPE_INT_RANGE, res->min_width, res->max_width,
+        "height", GST_TYPE_INT_RANGE, res->min_height, res->max_height,
+        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+
+    tmp_caps = gst_caps_merge (tmp_caps, caps);
 
     out_caps = gst_caps_merge (out_caps, gst_caps_simplify (tmp_caps));
   }
@@ -1390,6 +1401,30 @@
   return buf;
 }
 
+void
+dump_hdr10meta (GstKMSSink *self, GstBuffer * buf)
+{
+
+  GstVideoHdr10Meta *meta = NULL;
+  meta = gst_buffer_get_video_hdr10_meta (buf);
+  if (meta){
+    /* TODO: just dump temporarily, to do configure to drm driver for hdr10 in future */
+    GST_INFO_OBJECT (self, "redPrimary x=%d y=%d", meta->hdr10meta.redPrimary[0], meta->hdr10meta.redPrimary[1]);
+    GST_INFO_OBJECT (self, "greenPrimary x=%d y=%d", meta->hdr10meta.greenPrimary[0], meta->hdr10meta.greenPrimary[1]);
+    GST_INFO_OBJECT (self, "bluePrimary x=%d y=%d", meta->hdr10meta.bluePrimary[0], meta->hdr10meta.bluePrimary[1]);
+    GST_INFO_OBJECT (self, "whitePoint x=%d y=%d", meta->hdr10meta.whitePoint[0], meta->hdr10meta.whitePoint[1]);
+    GST_INFO_OBJECT (self, "maxMasteringLuminance %d", meta->hdr10meta.maxMasteringLuminance);
+    GST_INFO_OBJECT (self, "minMasteringLuminance %d", meta->hdr10meta.minMasteringLuminance);
+    GST_INFO_OBJECT (self, "maxContentLightLevel %d", meta->hdr10meta.maxContentLightLevel);
+    GST_INFO_OBJECT (self, "maxFrameAverageLightLevel %d", meta->hdr10meta.maxFrameAverageLightLevel);
+    GST_INFO_OBJECT (self, "transferCharacteristics %d", meta->hdr10meta.transferCharacteristics);
+    GST_INFO_OBJECT (self, "colourPrimaries %d", meta->hdr10meta.colourPrimaries);
+    GST_INFO_OBJECT (self, "matrixCoeffs %d", meta->hdr10meta.matrixCoeffs);
+    GST_INFO_OBJECT (self, "chromaSampleLocTypeTopField %d", meta->hdr10meta.chromaSampleLocTypeTopField);
+    GST_INFO_OBJECT (self, "chromaSampleLocTypeBottomField %d", meta->hdr10meta.chromaSampleLocTypeBottomField);
+  }
+}
+
 static GstFlowReturn
 gst_kms_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
 {
@@ -1403,6 +1438,8 @@
   GstVideoRectangle result;
   GstFlowReturn res;
 
+  dump_hdr10meta (GST_KMS_SINK (vsink), buf);
+
   self = GST_KMS_SINK (vsink);
 
   res = GST_FLOW_ERROR;
diff --git a/sys/kms/gstkmsutils.c b/sys/kms/gstkmsutils.c
index 838cddd..4be7137 100644
--- a/sys/kms/gstkmsutils.c
+++ b/sys/kms/gstkmsutils.c
@@ -60,6 +60,9 @@
   DEF_FMT (YVU420, YV12),
   DEF_FMT (YUV422, Y42B),
   DEF_FMT (NV12, NV12),
+  /* FIXME: just hack for debug usage, need 
+   * drm driver owner add 10bit fourcc format */
+  DEF_FMT (NV12, NV12_10LE),
   DEF_FMT (NV21, NV21),
   DEF_FMT (NV16, NV16),