@ -180,13 +180,12 @@ drm_output_prepare_overlay_view(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									struct  drm_output_state  * output_state ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									struct  weston_view  * ev ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									enum  drm_output_propose_state_mode  mode ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									struct  drm_fb  * fb ,  uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_output  * output  =  output_state - > output ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_compositor  * ec  =  output - > base . compositor ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_backend  * b  =  to_drm_backend ( ec ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_plane_state  * state  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_fb  * fb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						int  ret ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						enum  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							NO_PLANES ,   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -197,7 +196,6 @@ drm_output_prepare_overlay_view(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( ! b - > sprites_are_broken ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( b - > atomic_modeset ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						fb  =  drm_fb_get_from_view ( output_state ,  ev ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ! fb )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							drm_debug ( b ,  " \t \t \t \t [overlay] not placing view %p on overlay:  "   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     "  couldn't get fb \n " ,  ev ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -205,13 +203,12 @@ drm_output_prepare_overlay_view(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state  =  drm_output_state_get_plane ( output_state ,  plane ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( state - > fb )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							state  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							goto  out ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* we can't have a 'pending' framebuffer as never set one before reaching here */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( ! state - > fb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > ev  =  ev ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > output  =  output ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ! drm_plane_state_coords_for_view ( state ,  ev ,  zpos ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							drm_debug ( b ,  " \t \t \t \t [overlay] not placing view %p on overlay:  "   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     " unsuitable transform \n " ,  ev ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -232,10 +229,9 @@ drm_output_prepare_overlay_view(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							goto  out ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* We hold one reference for the lifetime of this function;
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  from  calling  drm_fb_get_from_view ,  to  the  out  label  where   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  we  unconditionally  drop  the  reference .  So ,  we  take  another   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  reference  here  to  live  within  the  state .  */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* We hold one reference for the lifetime of this function; from
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  calling  drm_fb_get_from_view ( )  in  drm_output_prepare_plane_view ( ) ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  so ,  we  take  another  reference  here  to  live  within  the  state .  */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > fb  =  drm_fb_ref ( fb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > in_fence_fd  =  ev - > surface - > acquire_fence_fd ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -277,7 +273,6 @@ drm_output_prepare_overlay_view(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					out :  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						drm_fb_unref ( fb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						return  state ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -423,13 +418,12 @@ static struct drm_plane_state * 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					drm_output_prepare_scanout_view ( struct  drm_output_state  * output_state ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									struct  weston_view  * ev ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									enum  drm_output_propose_state_mode  mode ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									struct  drm_fb  * fb ,  uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_output  * output  =  output_state - > output ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_backend  * b  =  to_drm_backend ( output - > base . compositor ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_plane  * scanout_plane  =  output - > scanout_plane ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_plane_state  * state ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_fb  * fb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( ! b - > sprites_are_broken ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( b - > atomic_modeset ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -446,7 +440,6 @@ drm_output_prepare_scanout_view(struct drm_output_state *output_state, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    scanout_plane - > props [ WDRM_PLANE_IN_FENCE_FD ] . prop_id  = =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						fb  =  drm_fb_get_from_view ( output_state ,  ev ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ! fb )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							drm_debug ( b ,  " \t \t \t \t [scanout] not placing view %p on scanout:  "   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     "  couldn't get fb \n " ,  ev ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -461,7 +454,9 @@ drm_output_prepare_scanout_view(struct drm_output_state *output_state, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  and  in  the  latter  case ,  the  view  must  have  been  marked  as  occluded ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						 *  meaning  we  should  never  have  ended  up  here .  */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						assert ( ! state - > fb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > fb  =  fb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						/* take another reference here to live within the state */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > fb  =  drm_fb_ref ( fb ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > ev  =  ev ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						state - > output  =  output ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ! drm_plane_state_coords_for_view ( state ,  ev ,  zpos ) )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -510,7 +505,7 @@ drm_output_try_view_on_plane(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     struct  drm_output_state  * state ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     struct  weston_view  * ev ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     enum  drm_output_propose_state_mode  mode ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     struct  drm_fb  * fb ,  uint64_t  zpos )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  drm_backend  * b  =  state - > pending_state - > backend ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_output  * wet_output  =  & state - > output - > base ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -547,7 +542,8 @@ drm_output_try_view_on_plane(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									     plane - > plane_id ,  ev ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return  drm_output_prepare_overlay_view ( plane ,  state ,  ev ,  mode ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return  drm_output_prepare_overlay_view ( plane ,  state ,  ev ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
											       mode ,  fb ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WDRM_PLANE_TYPE_PRIMARY :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( mode  ! =  DRM_OUTPUT_PROPOSE_STATE_PLANES_ONLY )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								drm_debug ( b ,  " \t \t \t \t [plane] plane %d refusing to  "   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -555,7 +551,8 @@ drm_output_try_view_on_plane(struct drm_plane *plane, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									     plane - > plane_id ,  ev ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return  drm_output_prepare_scanout_view ( state ,  ev ,  mode ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return  drm_output_prepare_scanout_view ( state ,  ev ,  mode ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
											       fb ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						default :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							assert ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -677,9 +674,9 @@ drm_output_prepare_plane_view(struct drm_output_state *state, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     " from candidate list, type: %s \n " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								     plane - > plane_id ,  p_name ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ps  =  drm_output_try_view_on_plane ( plane ,  state ,  ev ,  mode ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ps  =  drm_output_try_view_on_plane ( plane ,  state ,  ev ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
											  mode ,  fb ,  zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							drm_output_destroy_zpos_plane ( head_p_zpos ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( ps )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								drm_debug ( b ,  " \t \t \t \t [view] view %p has been placed to  "   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									     " %s plane with computed zpos % " PRIu64 " \n " ,