@ -123,6 +123,35 @@ drm_output_check_plane_has_view_assigned(struct drm_plane *plane, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						return  false ;   
					 
					 
					 
						return  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  bool  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					drm_output_plane_has_valid_format ( struct  drm_plane  * plane ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									  struct  drm_output_state  * state ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									  struct  drm_fb  * fb )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						unsigned  int  i ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  ( ! fb )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							return  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						/* Check whether the format is supported */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						for  ( i  =  0 ;  i  <  plane - > count_formats ;  i + + )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							unsigned  int  j ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( plane - > formats [ i ] . format  ! =  fb - > format - > format )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( fb - > modifier  = =  DRM_FORMAT_MOD_INVALID )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								return  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							for  ( j  =  0 ;  j  <  plane - > formats [ i ] . count_modifiers ;  j + + )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								if  ( plane - > formats [ i ] . modifiers [ j ]  = =  fb - > modifier )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									return  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						return  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  struct  drm_plane_state  *  
					 
					 
					 
					static  struct  drm_plane_state  *  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					drm_output_prepare_overlay_view ( struct  drm_output_state  * output_state ,  
					 
					 
					 
					drm_output_prepare_overlay_view ( struct  drm_output_state  * output_state ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									struct  weston_view  * ev ,   
					 
					 
					 
									struct  weston_view  * ev ,   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -135,7 +164,6 @@ drm_output_prepare_overlay_view(struct drm_output_state *output_state, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  drm_plane  * p ;   
					 
					 
					 
						struct  drm_plane  * p ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  drm_plane_state  * state  =  NULL ;   
					 
					 
					 
						struct  drm_plane_state  * state  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  drm_fb  * fb ;   
					 
					 
					 
						struct  drm_fb  * fb ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						unsigned  int  i ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						int  ret ;   
					 
					 
					 
						int  ret ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						enum  {   
					 
					 
					 
						enum  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							NO_PLANES ,   
					 
					 
					 
							NO_PLANES ,   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -170,31 +198,8 @@ drm_output_prepare_overlay_view(struct drm_output_state *output_state, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( availability  = =  NO_PLANES )   
					 
					 
					 
							if  ( availability  = =  NO_PLANES )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								availability  =  NO_PLANES_WITH_FORMAT ;   
					 
					 
					 
								availability  =  NO_PLANES_WITH_FORMAT ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							/* Check whether the format is supported */   
					 
					 
					 
							if  ( ! drm_output_plane_has_valid_format ( p ,  output_state ,  fb ) )   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							for  ( i  =  0 ;  i  <  p - > count_formats ;  i + + )  {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								unsigned  int  j ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								if  ( p - > formats [ i ] . format  ! =  fb - > format - > format )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									continue ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								if  ( fb - > modifier  = =  DRM_FORMAT_MOD_INVALID )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									break ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								for  ( j  =  0 ;  j  <  p - > formats [ i ] . count_modifiers ;  j + + )  {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									if  ( p - > formats [ i ] . modifiers [ j ]  = =  fb - > modifier )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
										break ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								}   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								if  ( j  ! =  p - > formats [ i ] . count_modifiers )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									break ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							}   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( i  = =  p - > count_formats )  {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								drm_plane_state_put_back ( state ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								state  =  NULL ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								continue ;   
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							}   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( availability  = =  NO_PLANES_WITH_FORMAT )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								availability  =  NO_PLANES_ACCEPTED ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							state - > ev  =  ev ;   
					 
					 
					 
							state - > ev  =  ev ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							state - > output  =  output ;   
					 
					 
					 
							state - > output  =  output ;