mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 15:39:02 -05:00 
			
		
		
		
	Fix a Crash on Zelda BotW and Splatoon 2, and simplified LoadGLBuffer
This commit is contained in:
		| @@ -833,27 +833,10 @@ void CachedSurface::LoadGLBuffer() { | ||||
|         ASSERT_MSG(params.block_width == 1, "Block width is defined as {} on texture type {}", | ||||
|                    params.block_width, static_cast<u32>(params.target)); | ||||
|  | ||||
|         switch (params.target) { | ||||
|         case SurfaceParams::SurfaceTarget::Texture2D: | ||||
|         if (params.target == SurfaceParams::SurfaceTarget::Texture2D) { | ||||
|             // TODO(Blinkhawk): Eliminate this condition once all texture types are implemented. | ||||
|             depth = 1U; | ||||
|             block_depth = 1U; | ||||
|             break; | ||||
|         case SurfaceParams::SurfaceTarget::Texture2DArray: | ||||
|         case SurfaceParams::SurfaceTarget::TextureCubemap: | ||||
|             depth = 1U; | ||||
|             block_depth = 1U; | ||||
|             for (std::size_t index = 0; index < params.depth; ++index) { | ||||
|                 const std::size_t offset{index * copy_size}; | ||||
|                 morton_to_gl_fns[static_cast<std::size_t>(params.pixel_format)]( | ||||
|                     params.width, params.block_height, params.height, 1U, 1U, | ||||
|                     gl_buffer.data() + offset, copy_size, params.addr + offset); | ||||
|             } | ||||
|             break; | ||||
|         default: | ||||
|             LOG_CRITICAL(HW_GPU, "Unimplemented tiled load for target={}", | ||||
|                          static_cast<u32>(params.target)); | ||||
|             UNREACHABLE(); | ||||
|         } | ||||
|  | ||||
|         const std::size_t size = copy_size * depth; | ||||
|   | ||||
| @@ -271,7 +271,7 @@ u32 BytesPerPixel(TextureFormat format) { | ||||
|  | ||||
| std::vector<u8> UnswizzleTexture(VAddr address, u32 tile_size, u32 bytes_per_pixel, u32 width, | ||||
|                                  u32 height, u32 depth, u32 block_height, u32 block_depth) { | ||||
|     std::vector<u8> unswizzled_data(width * height * bytes_per_pixel); | ||||
|     std::vector<u8> unswizzled_data(width * height * depth * bytes_per_pixel); | ||||
|     CopySwizzledData(width / tile_size, height / tile_size, depth, bytes_per_pixel, bytes_per_pixel, | ||||
|                      Memory::GetPointer(address), unswizzled_data.data(), true, block_height, | ||||
|                      block_depth); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 FernandoS27
					FernandoS27