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