@ -1562,10 +1562,6 @@ drm_fb_get_from_view(struct drm_output_state *state, struct weston_view *ev) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  linux_dmabuf_buffer  * dmabuf ;   
					 
					 
					 
						struct  linux_dmabuf_buffer  * dmabuf ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  drm_fb  * fb ;   
					 
					 
					 
						struct  drm_fb  * fb ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						/* Don't import buffers which span multiple outputs. */   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ev - > output_mask  ! =  ( 1u  < <  output - > base . id ) )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ev - > alpha  ! =  1.0f )   
					 
					 
					 
						if  ( ev - > alpha  ! =  1.0f )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
							return  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3135,10 +3131,6 @@ drm_output_prepare_cursor_view(struct drm_output_state *output_state, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( plane - > state_cur - > output  & &  plane - > state_cur - > output  ! =  output )   
					 
					 
					 
						if  ( plane - > state_cur - > output  & &  plane - > state_cur - > output  ! =  output )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
							return  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						/* Don't import buffers which span multiple outputs. */   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ev - > output_mask  ! =  ( 1u  < <  output - > base . id ) )   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						/* We use GBM to import SHM buffers. */   
					 
					 
					 
						/* We use GBM to import SHM buffers. */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( b - > gbm  = =  NULL )   
					 
					 
					 
						if  ( b - > gbm  = =  NULL )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
							return  NULL ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3296,6 +3288,16 @@ drm_output_propose_state(struct weston_output *output_base, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_for_each ( ev ,  & output_base - > compositor - > view_list ,  link )  {   
					 
					 
					 
						wl_list_for_each ( ev ,  & output_base - > compositor - > view_list ,  link )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							struct  weston_plane  * next_plane  =  NULL ;   
					 
					 
					 
							struct  weston_plane  * next_plane  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							/* If this view doesn't touch our output at all, there's no
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							 *  reason  to  do  anything  with  it .  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( ! ( ev - > output_mask  &  ( 1u  < <  output - > base . id ) ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							/* We only assign planes to views which are exclusively present
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							 *  on  our  output .  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( ev - > output_mask  ! =  ( 1u  < <  output - > base . id ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								next_plane  =  primary ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							/* Since we process views from top to bottom, we know that if
   
					 
					 
					 
							/* Since we process views from top to bottom, we know that if
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  the  view  intersects  the  calculated  renderer  region ,  it  must   
					 
					 
					 
							 *  the  view  intersects  the  calculated  renderer  region ,  it  must   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  be  part  of ,  or  occluded  by ,  it ,  and  cannot  go  on  a  plane .  */   
					 
					 
					 
							 *  be  part  of ,  or  occluded  by ,  it ,  and  cannot  go  on  a  plane .  */   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3345,6 +3347,11 @@ drm_assign_planes(struct weston_output *output_base, void *repaint_data) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_for_each ( ev ,  & output_base - > compositor - > view_list ,  link )  {   
					 
					 
					 
						wl_list_for_each ( ev ,  & output_base - > compositor - > view_list ,  link )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							struct  drm_plane  * target_plane  =  NULL ;   
					 
					 
					 
							struct  drm_plane  * target_plane  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							/* If this view doesn't touch our output at all, there's no
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							 *  reason  to  do  anything  with  it .  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( ! ( ev - > output_mask  &  ( 1u  < <  output - > base . id ) ) )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							/* Test whether this buffer can ever go into a plane:
   
					 
					 
					 
							/* Test whether this buffer can ever go into a plane:
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  non - shm ,  or  small  enough  to  be  a  cursor .   
					 
					 
					 
							 *  non - shm ,  or  small  enough  to  be  a  cursor .   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							 *   
					 
					 
					 
							 *