|
|
|
@ -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;
|
|
|
|
|