[MMFMWK-7909] kmssink: add force-hantrotile property

This property can enable and disable hantro VPU tile output

upstream status: i.Mx specific
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
index 8ef4c06..86fa1ce 100644
--- a/sys/kms/gstkmssink.c
+++ b/sys/kms/gstkmssink.c
@@ -91,6 +91,7 @@
   PROP_PLANE_ID,
   PROP_FORCE_MODESETTING,
   PROP_GLOBAL_ALPHA,
+  PROP_FORCE_HANTROTILE,
   PROP_N
 };
 
@@ -1178,20 +1179,22 @@
   drm_modifier = DRM_FORMAT_MOD_AMPHION_TILED;
   gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
 
-  props = drmModeObjectGetProperties (self->fd, self->plane_id, DRM_MODE_OBJECT_PLANE);
-  for (i = 0; i < props->count_props; ++i) {
-    prop = drmModeGetProperty(self->fd, props->props[i]);
-    if (!strcmp(prop->name, "dtrc_table_ofs")) {
-      GST_DEBUG ("has dtrc_table_ofs property, can support VSI tile format");
-      drm_modifier = DRM_FORMAT_MOD_VSI_G1_TILED;
-      gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
-      drm_modifier = DRM_FORMAT_MOD_VSI_G2_TILED;
-      gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
-      drm_modifier = DRM_FORMAT_MOD_VSI_G2_TILED_COMPRESSED;
-      gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
+  if (self->hantro_tile_enabled) {
+    props = drmModeObjectGetProperties (self->fd, self->plane_id, DRM_MODE_OBJECT_PLANE);
+    for (i = 0; i < props->count_props; ++i) {
+      prop = drmModeGetProperty(self->fd, props->props[i]);
+      if (!strcmp(prop->name, "dtrc_table_ofs")) {
+        GST_DEBUG ("has dtrc_table_ofs property, can support VSI tile format");
+        drm_modifier = DRM_FORMAT_MOD_VSI_G1_TILED;
+        gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
+        drm_modifier = DRM_FORMAT_MOD_VSI_G2_TILED;
+        gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
+        drm_modifier = DRM_FORMAT_MOD_VSI_G2_TILED_COMPRESSED;
+        gst_query_add_allocation_dmabuf_meta (query, drm_modifier);
+      }
+      drmModeFreeProperty (prop);
+      prop = NULL;
     }
-    drmModeFreeProperty (prop);
-    prop = NULL;
   }
 
   return TRUE;
@@ -1899,6 +1902,9 @@
     case PROP_GLOBAL_ALPHA:
       sink->global_alpha = g_value_get_int (value);
       break;
+    case PROP_FORCE_HANTROTILE:
+      sink->hantro_tile_enabled = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1929,6 +1935,9 @@
     case PROP_GLOBAL_ALPHA:
       g_value_set_int (value, sink->global_alpha);
       break;
+    case PROP_FORCE_HANTROTILE:
+      g_value_set_boolean (value, sink->hantro_tile_enabled);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1957,6 +1966,7 @@
   sink->scale_checked = FALSE;
   sink->upscale_ratio = 1;
   sink->downscale_ratio = 1;
+  sink->hantro_tile_enabled = FALSE;
   gst_poll_fd_init (&sink->pollfd);
   sink->poll = gst_poll_new (TRUE);
   gst_video_info_init (&sink->vinfo);
@@ -2044,6 +2054,16 @@
       g_param_spec_boolean ("force-modesetting", "Force modesetting",
       "When enabled, the sink try to configure the display mode", FALSE,
       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+  
+  /**
+   * kmssink:force-hantrotile:
+   *
+   * If enable, the sink propose hantro tile modifier to VPU.
+   */
+  g_properties[PROP_FORCE_HANTROTILE] =
+      g_param_spec_boolean ("force-hantrotile", "Force to use hantro tile",
+      "When enabled, the sink propose hantro tile modifier to VPU", FALSE,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
 
    /**
    * kmssink:global-alpha:
diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
index 63cad16..961e106 100644
--- a/sys/kms/gstkmssink.h
+++ b/sys/kms/gstkmssink.h
@@ -79,6 +79,7 @@
 
   gboolean modesetting_enabled;
   gboolean display_connected;
+  gboolean hantro_tile_enabled;
 
   GstVideoInfo vinfo;
   GstCaps *allowed_caps;