mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2024-11-27 20:14:17 +01:00
Revert "OpenGL Cache: Ignore format reinterpretation hack"
Testing found a few games that did some crazy things which breaks the assumptions made in that commit.
This commit is contained in:
parent
72034b772d
commit
34ff77f5f7
@ -1271,15 +1271,11 @@ void RasterizerCacheOpenGL::ValidateSurface(const Surface& surface, PAddr addr,
|
||||
return;
|
||||
}
|
||||
|
||||
auto validate_regions = surface->invalid_regions & validate_interval;
|
||||
auto notify_validated = [&](SurfaceInterval interval) {
|
||||
surface->invalid_regions.erase(interval);
|
||||
validate_regions.erase(interval);
|
||||
};
|
||||
const auto validate_regions = surface->invalid_regions.find(validate_interval);
|
||||
|
||||
for (;;) {
|
||||
const auto it = validate_regions.begin();
|
||||
if (it == validate_regions.end())
|
||||
if (it == surface->invalid_regions.end())
|
||||
break;
|
||||
|
||||
const auto interval = *it & validate_interval;
|
||||
@ -1291,28 +1287,15 @@ void RasterizerCacheOpenGL::ValidateSurface(const Surface& surface, PAddr addr,
|
||||
if (copy_surface != nullptr) {
|
||||
SurfaceInterval copy_interval = params.GetCopyableInterval(copy_surface);
|
||||
CopySurface(copy_surface, surface, copy_interval);
|
||||
notify_validated(copy_interval);
|
||||
validate_regions.erase(interval);
|
||||
continue;
|
||||
}
|
||||
|
||||
// HACK HACK HACK: Ignore format reinterpretation
|
||||
// this is a placeholder for HW texture decoding/encoding
|
||||
constexpr bool IGNORE_FORMAT_REINTERPRETING = true;
|
||||
bool retry = false;
|
||||
if (IGNORE_FORMAT_REINTERPRETING) {
|
||||
for (const auto& pair : RangeFromInterval(dirty_regions, interval)) {
|
||||
validate_regions.erase(pair.first & interval);
|
||||
retry = true;
|
||||
}
|
||||
}
|
||||
if (retry)
|
||||
continue;
|
||||
|
||||
// Load data from 3DS memory
|
||||
FlushRegion(params.addr, params.size);
|
||||
surface->LoadGLBuffer(params.addr, params.end);
|
||||
surface->UploadGLTexture(surface->GetSubRect(params));
|
||||
notify_validated(params.GetInterval());
|
||||
validate_regions.erase(interval)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user