@@ -436,11 +436,16 @@ void intel_plane_copy_hw_state(struct intel_plane_state *plane_state,
436436 drm_framebuffer_get (plane_state -> hw .fb );
437437}
438438
439+ static void unlink_nv12_plane (struct intel_crtc_state * crtc_state ,
440+ struct intel_plane_state * plane_state );
441+
439442void intel_plane_set_invisible (struct intel_crtc_state * crtc_state ,
440443 struct intel_plane_state * plane_state )
441444{
442445 struct intel_plane * plane = to_intel_plane (plane_state -> uapi .plane );
443446
447+ unlink_nv12_plane (crtc_state , plane_state );
448+
444449 crtc_state -> active_planes &= ~BIT (plane -> id );
445450 crtc_state -> scaled_planes &= ~BIT (plane -> id );
446451 crtc_state -> nv12_planes &= ~BIT (plane -> id );
@@ -1513,6 +1518,9 @@ static void unlink_nv12_plane(struct intel_crtc_state *crtc_state,
15131518 struct intel_display * display = to_intel_display (plane_state );
15141519 struct intel_plane * plane = to_intel_plane (plane_state -> uapi .plane );
15151520
1521+ if (!plane_state -> planar_linked_plane )
1522+ return ;
1523+
15161524 plane_state -> planar_linked_plane = NULL ;
15171525
15181526 if (!plane_state -> is_y_plane )
@@ -1550,8 +1558,7 @@ static int icl_check_nv12_planes(struct intel_atomic_state *state,
15501558 if (plane -> pipe != crtc -> pipe )
15511559 continue ;
15521560
1553- if (plane_state -> planar_linked_plane )
1554- unlink_nv12_plane (crtc_state , plane_state );
1561+ unlink_nv12_plane (crtc_state , plane_state );
15551562 }
15561563
15571564 if (!crtc_state -> nv12_planes )
0 commit comments