mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	OpenGL: Fix DisplayTransfer accel when input width != output width
Fixes #2246, #2261
This commit is contained in:
		
							parent
							
								
									4f0f88bc6a
								
							
						
					
					
						commit
						ba7f213655
					
				| @ -715,7 +715,11 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | |||||||
| 
 | 
 | ||||||
|     CachedSurface src_params; |     CachedSurface src_params; | ||||||
|     src_params.addr = config.GetPhysicalInputAddress(); |     src_params.addr = config.GetPhysicalInputAddress(); | ||||||
|     src_params.width = config.output_width; |     // It's important to use the correct source input width to properly skip over parts of the input
 | ||||||
|  |     // image which will be cropped from the output but still affect the stride of the input image.
 | ||||||
|  |     src_params.width = config.input_width; | ||||||
|  |     // Using the output's height is fine because we don't read or skip over the remaining part of
 | ||||||
|  |     // the image, and it allows for smaller texture cache lookup rectangles.
 | ||||||
|     src_params.height = config.output_height; |     src_params.height = config.output_height; | ||||||
|     src_params.is_tiled = !config.input_linear; |     src_params.is_tiled = !config.input_linear; | ||||||
|     src_params.pixel_format = CachedSurface::PixelFormatFromGPUPixelFormat(config.input_format); |     src_params.pixel_format = CachedSurface::PixelFormatFromGPUPixelFormat(config.input_format); | ||||||
| @ -736,6 +740,11 @@ bool RasterizerOpenGL::AccelerateDisplayTransfer(const GPU::Regs::DisplayTransfe | |||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // Adjust the source rectangle to take into account parts of the input lines being cropped
 | ||||||
|  |     if (config.input_width > config.output_width) { | ||||||
|  |         src_rect.right -= (config.input_width - config.output_width) * src_surface->res_scale_width; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     // Require destination surface to have same resolution scale as source to preserve scaling
 |     // Require destination surface to have same resolution scale as source to preserve scaling
 | ||||||
|     dst_params.res_scale_width = src_surface->res_scale_width; |     dst_params.res_scale_width = src_surface->res_scale_width; | ||||||
|     dst_params.res_scale_height = src_surface->res_scale_height; |     dst_params.res_scale_height = src_surface->res_scale_height; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Yuri Kunde Schlesner
						Yuri Kunde Schlesner