Texture_Cache correct some bugs introduced on rescaling

This commit is contained in:
Fernando Sahmkow
2019-07-09 17:44:13 -04:00
committed by FernandoS27
parent fdfa328e38
commit a7bceb8a2f

View File

@@ -413,11 +413,11 @@ protected:
return new_surface;
}
std::pair<TSurface, TView> GetFermiSurface(const Tegra::Engines::Fermi2D::Regs::Surface& config,
const bool is_render) {
std::pair<TSurface, TView> GetFermiSurface(
const Tegra::Engines::Fermi2D::Regs::Surface& config) {
SurfaceParams params = SurfaceParams::CreateForFermiCopySurface(config);
const GPUVAddr gpu_addr = config.Address();
return GetSurface(gpu_addr, params, true, is_render);
return GetSurface(gpu_addr, params, true, false);
}
// Must be called by child's create surface
@@ -572,13 +572,18 @@ private:
}
}
if (IsResScannerEnabled()) {
bool is_candidate = IsInRSDatabase(current_surface);
if (is_candidate) {
if (IsInRSDatabase(current_surface)) {
if (IsRSBlacklisted(new_surface)) {
UnmarkScanner(current_surface);
} else {
MarkScanner(new_surface);
}
} else if (IsInRSDatabase(new_surface)) {
if (IsRSBlacklisted(current_surface)) {
UnmarkScanner(new_surface);
} else {
MarkScanner(current_surface);
}
}
}
Unregister(current_surface, UnregisterReason::Rebuilt);
@@ -731,7 +736,7 @@ private:
// If none are found, we are done. we just load the surface and create it.
if (overlaps.empty()) {
return InitializeSurface(gpu_addr, params, preserve_contents && !is_render);
return InitializeSurface(gpu_addr, params, preserve_contents);
}
// Step 3