Texture Cache: Address Feedback
This commit is contained in:
		 Fernando Sahmkow
					Fernando Sahmkow
				
			
				
					committed by
					
						 FernandoS27
						FernandoS27
					
				
			
			
				
	
			
			
			 FernandoS27
						FernandoS27
					
				
			
						parent
						
							51c9e98677
						
					
				
				
					commit
					a3916588b6
				
			| @@ -138,13 +138,13 @@ public: | ||||
|  | ||||
|     std::size_t GetConvertedMipmapSize(u32 level) const; | ||||
|  | ||||
|     // Get this texture Tegra Block size in guest memory layout | ||||
|     /// Get this texture Tegra Block size in guest memory layout | ||||
|     u32 GetBlockSize() const; | ||||
|  | ||||
|     // Get X, Y sizes of a block | ||||
|     /// Get X, Y sizes of a block | ||||
|     std::pair<u32, u32> GetBlockXY() const; | ||||
|  | ||||
|     // Get the offset in x, y, z coordinates from a memory offset | ||||
|     /// Get the offset in x, y, z coordinates from a memory offset | ||||
|     std::tuple<u32, u32, u32> GetBlockOffsetXYZ(u32 offset) const; | ||||
|  | ||||
|     /// Returns the size of a layer in bytes in guest memory. | ||||
|   | ||||
| @@ -619,10 +619,10 @@ private: | ||||
|      * Takes care of managing 3D textures and its slices. Does some HLE methods when possible. | ||||
|      * Fallsback to LLE when it isn't possible. | ||||
|      * | ||||
|      * @param overlaps The overlapping surfaces registered in the cache. | ||||
|      * @param params   The parameters on the new surface. | ||||
|      * @param gpu_addr The starting address of the new surface. | ||||
|      * @param cache_addr The starting address of the new surface on physical memory. | ||||
|      * @param overlaps          The overlapping surfaces registered in the cache. | ||||
|      * @param params            The parameters on the new surface. | ||||
|      * @param gpu_addr          The starting address of the new surface. | ||||
|      * @param cache_addr        The starting address of the new surface on physical memory. | ||||
|      * @param preserve_contents Indicates that the new surface should be loaded from memory or | ||||
|      *                          left blank. | ||||
|      */ | ||||
| @@ -669,7 +669,8 @@ private: | ||||
|             } | ||||
|             new_surface->MarkAsModified(modified, Tick()); | ||||
|             Register(new_surface); | ||||
|             return {{new_surface, new_surface->GetMainView()}}; | ||||
|             auto view = new_surface->GetMainView(); | ||||
|             return {{std::move(new_surface), view}}; | ||||
|         } else { | ||||
|             for (const auto& surface : overlaps) { | ||||
|                 if (!surface->MatchTarget(params.target)) { | ||||
| @@ -685,8 +686,7 @@ private: | ||||
|                 if (surface->GetCacheAddr() != cache_addr) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 const auto struct_result = surface->MatchesStructure(params); | ||||
|                 if (struct_result == MatchStructureResult::FullMatch) { | ||||
|                 if (surface->MatchesStructure(params) == MatchStructureResult::FullMatch) { | ||||
|                     return {{surface, surface->GetMainView()}}; | ||||
|                 } | ||||
|             } | ||||
| @@ -768,7 +768,7 @@ private: | ||||
|  | ||||
|         // Look if it's a 3D texture | ||||
|         if (params.block_depth > 0) { | ||||
|             std::optional<std::pair<TSurface, TView>> surface = | ||||
|             auto surface = | ||||
|                 Manage3DSurfaces(overlaps, params, gpu_addr, cache_addr, preserve_contents); | ||||
|             if (surface) { | ||||
|                 return *surface; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user