mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
video: add multi plane for video display [2/2]
PD#SWPL-236654 Problem: When DTV switches channels, a plane switching operation is performed. When the video plane is disabled, the DRM releases the fence corresponding to the current DMABUF. Due to the differences in DMABUF usage by DTV, when the video plane is re-enabled, it commits the DMABUF from before it was disabled. Therefore, the DRM recognizes this as a repeat frame and does not recreate the fence, continuing to use the fence from the previous frame. Because the fence from the previous frame was already released when the video plane was disabled, this results in a null pointer exception. Solution: When video is disabled, clear the DMABUF record to ensure that it is not mistakenly identified as a repeat frame after being re-enabled. Verify: S7 Test: DRM-OSD-20 Change-Id: Idb542a107adca7e90ec596959f412f8aef840c36 Signed-off-by: dijie.pan <dijie.pan@amlogic.com>
This commit is contained in:
committed by
gerrit autosubmit
parent
5078710e1c
commit
157698a8a4
@@ -2338,6 +2338,8 @@ static int meson_video_plane_atomic_check(struct drm_plane *plane,
|
||||
ret = meson_video_plane_fb_check(plane, state, plane_info);
|
||||
if (ret < 0) {
|
||||
plane_info->enable = 0;
|
||||
plane_info->dmabuf[0] = NULL;
|
||||
plane_info->dmabuf[1] = NULL;
|
||||
video_pipeline_block_check(mvsp, atomic_state, video_plane->plane_index);
|
||||
DRM_DEBUG_DRIVER("plane%d fb is NULL,disable the plane!\n",
|
||||
plane_info->plane_index);
|
||||
|
||||
@@ -787,8 +787,7 @@ int video_pipeline_check_block(struct meson_video_sub_pipeline_state *mvps,
|
||||
|
||||
MESON_DRM_TRAVERSE("mvps (%p), atomic-state(%p)\n", mvps, state);
|
||||
|
||||
if (!(mvps->video_plane_info[plane_index].enable &&
|
||||
mvps->index == mvps->video_plane_info[plane_index].crtc_index))
|
||||
if (!(mvps->index == mvps->video_plane_info[plane_index].crtc_index))
|
||||
return -EINVAL;
|
||||
|
||||
block = &mvps->pipe->video[plane_index]->base;
|
||||
|
||||
Reference in New Issue
Block a user