mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	GLCache: Implemented GetTextureSurface.
This commit is contained in:
		
							parent
							
								
									65ea52394b
								
							
						
					
					
						commit
						b258403f0d
					
				| @ -1018,9 +1018,34 @@ SurfaceRect_Tuple RasterizerCacheOpenGL::GetSurfaceSubRect(const SurfaceParams& | ||||
|     return std::make_tuple(surface, surface->GetScaledSubRect(params)); | ||||
| } | ||||
| 
 | ||||
| Surface RasterizerCacheOpenGL::GetTextureSurface(const void* config) { | ||||
|     UNREACHABLE(); | ||||
|     return {}; | ||||
| Surface RasterizerCacheOpenGL::GetTextureSurface(const Tegra::Texture::FullTextureInfo& config) { | ||||
|     auto& gpu = Core::System::GetInstance().GPU(); | ||||
| 
 | ||||
|     SurfaceParams params; | ||||
|     params.addr = gpu.memory_manager->PhysicalToVirtualAddress(config.tic.Address()); | ||||
|     params.width = config.tic.Width(); | ||||
|     params.height = config.tic.Height(); | ||||
|     params.is_tiled = config.tic.IsTiled(); | ||||
|     params.pixel_format = SurfaceParams::PixelFormatFromTextureFormat(config.tic.format); | ||||
|     params.UpdateParams(); | ||||
| 
 | ||||
|     if (config.tic.Width() % 8 != 0 || config.tic.Height() % 8 != 0) { | ||||
|         Surface src_surface; | ||||
|         MathUtil::Rectangle<u32> rect; | ||||
|         std::tie(src_surface, rect) = GetSurfaceSubRect(params, ScaleMatch::Ignore, true); | ||||
| 
 | ||||
|         params.res_scale = src_surface->res_scale; | ||||
|         Surface tmp_surface = CreateSurface(params); | ||||
|         BlitTextures(src_surface->texture.handle, rect, tmp_surface->texture.handle, | ||||
|                      tmp_surface->GetScaledRect(), | ||||
|                      SurfaceParams::GetFormatType(params.pixel_format), read_framebuffer.handle, | ||||
|                      draw_framebuffer.handle); | ||||
| 
 | ||||
|         remove_surfaces.emplace(tmp_surface); | ||||
|         return tmp_surface; | ||||
|     } | ||||
| 
 | ||||
|     return GetSurface(params, ScaleMatch::Ignore, true); | ||||
| } | ||||
| 
 | ||||
| SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Subv
						Subv