Just use the shader to generate trapezoid if PolyMode == Imprecise
The precise mode of trapezoid rendering need to sample the trapezoid on the centre points of an (2*n+1)x(2*n-1) subpixel grid. It is computationally expensive in shader, and we use inside area ratio to replace it. The result has some difference, and we just use it if the polymode == Imprecise. Signed-off-by: Junyan He <junyan.he@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									fe024a7822
								
							
						
					
					
						commit
						9f78e22fa6
					
				| 
						 | 
				
			
			@ -1664,15 +1664,20 @@ _glamor_trapezoids(CARD8 op,
 | 
			
		|||
		if(ret)
 | 
			
		||||
			return TRUE;
 | 
			
		||||
	} else {
 | 
			
		||||
		picture = glamor_create_mask_picture(screen, dst, mask_format,
 | 
			
		||||
		          width, height, 1);
 | 
			
		||||
		if (!picture)
 | 
			
		||||
			return TRUE;
 | 
			
		||||
		/*  The precise mode is that we sample the trapezoid on the centre points of
 | 
			
		||||
		    an (2*n+1)x(2*n-1) subpixel grid. It is computationally expensive in shader
 | 
			
		||||
		    and we use inside area ratio to replace it if the polymode == Imprecise. */
 | 
			
		||||
		if(dst->polyMode == PolyModeImprecise) {
 | 
			
		||||
			picture = glamor_create_mask_picture(screen, dst, mask_format,
 | 
			
		||||
			          width, height, 1);
 | 
			
		||||
			if (!picture)
 | 
			
		||||
				return TRUE;
 | 
			
		||||
 | 
			
		||||
		ret = _glamor_generate_trapezoid_with_shader(screen, picture, traps, ntrap, &bounds);
 | 
			
		||||
			ret = _glamor_generate_trapezoid_with_shader(screen, picture, traps, ntrap, &bounds);
 | 
			
		||||
 | 
			
		||||
		if (!ret)
 | 
			
		||||
			FreePicture(picture, 0);
 | 
			
		||||
			if (!ret)
 | 
			
		||||
				FreePicture(picture, 0);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue