diff --git a/rpcs3/Emu/RSX/Common/texture_cache.h b/rpcs3/Emu/RSX/Common/texture_cache.h index cea4e0e1e9..fd3d7bb731 100644 --- a/rpcs3/Emu/RSX/Common/texture_cache.h +++ b/rpcs3/Emu/RSX/Common/texture_cache.h @@ -1329,7 +1329,7 @@ namespace rsx { std::lock_guard lock(m_cache_mutex); - auto* region_ptr = find_cached_texture(memory_range, { .gcm_format = RSX_GCM_FORMAT_IGNORED }, false, false, false); + auto* region_ptr = find_cached_texture(memory_range, { .gcm_format = RSX_GCM_FORMAT_IGNORED }, false, false, true); if (region_ptr == nullptr) { AUDIT(m_flush_always_cache.find(memory_range) == m_flush_always_cache.end()); @@ -1337,6 +1337,12 @@ namespace rsx return; } + if (region_ptr->is_dirty()) + { + // Previously invalidated + return; + } + auto& region = *region_ptr; if (!region.exists() || region.is_dirty() || region.get_context() != texture_upload_context::framebuffer_storage) diff --git a/rpcs3/Emu/RSX/Common/texture_cache_helpers.h b/rpcs3/Emu/RSX/Common/texture_cache_helpers.h index b342374b64..8b5f7a8625 100644 --- a/rpcs3/Emu/RSX/Common/texture_cache_helpers.h +++ b/rpcs3/Emu/RSX/Common/texture_cache_helpers.h @@ -459,8 +459,8 @@ namespace rsx { if (found_slices > 0) { - //TODO: Gather remaining sides from the texture cache or upload from cpu (too slow?) - rsx_log.error("Could not gather all required slices for cubemap/3d generation"); + // TODO: Gather remaining sides from the texture cache or upload from cpu (too slow?) + rsx_log.warning("Could not gather all required slices for cubemap/3d generation"); } else {