weston-10: Trunk add surface set plane mute API [1/1]

PD#TV-129835

Problem:
add surface set plane mute  API

Solution:
add surface set plane mute  API

Verify:
AH212

Change-Id: I141aa271042b7324ded384fd87def1127f917cf2
Signed-off-by: chen.wang1 <chen.wang1@amlogic.com>
diff --git a/aml-weston/aml-backend.c b/aml-weston/aml-backend.c
index 2356439..0bd41c3 100644
--- a/aml-weston/aml-backend.c
+++ b/aml-weston/aml-backend.c
@@ -260,6 +260,17 @@
 	return rc;
 }
 
+int drm_set_plane_mute(struct weston_compositor *compositor, unsigned int plane_mute)
+{
+	struct drm_backend* b = to_drm_backend(compositor);
+
+	int res = meson_drm_setPlaneMute(b->drm.fd, 1, plane_mute);
+	if (res) {
+		weston_log("%s %d set plane mute fail! return value %d",__FUNCTION__,__LINE__,res);
+	}
+	return res;
+}
+
 static int drm_get_scaling(struct weston_output *output)
 {
 	int ret = 100;
@@ -1168,6 +1179,7 @@
 	b->base.get_frame_time = drm_get_frame_time;
 	b->base.close_video_plane = drm_close_video_plane;
 	b->base.update_frame_rate = drm_backend_update_rate;
+	b->base.set_plane_mute = drm_set_plane_mute;
 }
 
 struct weston_plane *
diff --git a/aml-weston/aml-compositor.c b/aml-weston/aml-compositor.c
index 0195931..1e83513 100644
--- a/aml-weston/aml-compositor.c
+++ b/aml-weston/aml-compositor.c
@@ -657,6 +657,16 @@
 	surface->video_plane = video_plane;
 }
 
+static void surface_set_plane_mute(struct wl_client *client,
+	       struct wl_resource *resource,unsigned int plane_mute)
+{
+	struct weston_surface *surface = wl_resource_get_user_data(resource);
+	struct weston_compositor *compositor = surface->compositor;
+	weston_log("%s %d surface_set_plane_mute plane_mute: %d",__FUNCTION__,__LINE__, plane_mute);
+	if (surface->compositor->backend->set_plane_mute)
+		compositor->backend->set_plane_mute(compositor,plane_mute);
+}
+
 static void surface_keep_last_frame(struct wl_client *client,
 	       struct wl_resource *resource,
 	       int32_t keep_last_frame)
diff --git a/libweston/backend-drm/meson.build b/libweston/backend-drm/meson.build
index debd1d1..4dfddea 100644
--- a/libweston/backend-drm/meson.build
+++ b/libweston/backend-drm/meson.build
@@ -17,6 +17,7 @@
 	include_directories: include_directories('.')
 )
 
+dep_libdrm_meson  = cc.find_library('libdrm_meson')
 dep_meson_display = dependency('libweston-drm-helper')
 config_h.set('ENABLE_DRM_HELP', '1')
 config_h.set('BUILD_DRM_COMPOSITOR', '1')
@@ -47,7 +48,8 @@
 	dependency('libudev', version: '>= 136'),
 	dep_backlight,
 	dep_meson_display,
-	dep_modepolicy
+	dep_modepolicy,
+	dep_libdrm_meson
 ]
 
 if get_option('renderer-gl')
diff --git a/libweston/backend.h b/libweston/backend.h
index 3939cff..b86a737 100644
--- a/libweston/backend.h
+++ b/libweston/backend.h
@@ -114,6 +114,7 @@
 	int (*get_frame_time)(struct weston_output *output_base, uint64_t*frametime, uint64_t* refresh_interval);
 	void (*update_frame_rate)(struct weston_compositor *compositor, int frame_rate_value, int frame_rate_scale);
 	int (*close_video_plane)(struct weston_compositor *ec, struct weston_plane* plane);
+	void (*set_plane_mute)(struct weston_compositor *compositor, unsigned int plane_mute);
 };
 
 /* weston_head */
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 94af173..1fd5954 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -4100,7 +4100,8 @@
 	surface_set_display_rate,
 	surface_destroy_callback,
 	surface_enable_ll_mode,
-	surface_set_invisible
+	surface_set_invisible,
+	surface_set_plane_mute
 };
 
 static int