summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/TextureCacheBase.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2023-11-16 01:23:59 -0600
committeriwubcode <iwubcode@users.noreply.github.com>2023-11-26 16:35:03 -0600
commitfb86c6342e02c7cdc297ecaa7f2eb365c846e741 (patch)
tree92500c0fea377fbc8fb1a7f436b7b209927fa2ab /Source/Core/VideoCommon/TextureCacheBase.cpp
parent1a2d0882d04446550687424e36a81a2c16a6a00d (diff)
VideoCommon: move texture dump function out of texture cache to its own free function so it can be used elsewhere. Doing this change may also slightly improve performance of this operation
Diffstat (limited to 'Source/Core/VideoCommon/TextureCacheBase.cpp')
-rw-r--r--Source/Core/VideoCommon/TextureCacheBase.cpp49
1 files changed, 13 insertions, 36 deletions
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp
index 50464cce5f..849c032b71 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.cpp
+++ b/Source/Core/VideoCommon/TextureCacheBase.cpp
@@ -52,6 +52,7 @@
#include "VideoCommon/TextureConversionShader.h"
#include "VideoCommon/TextureConverterShaderGen.h"
#include "VideoCommon/TextureDecoder.h"
+#include "VideoCommon/TextureUtils.h"
#include "VideoCommon/VertexManagerBase.h"
#include "VideoCommon/VideoCommon.h"
#include "VideoCommon/VideoConfig.h"
@@ -998,39 +999,6 @@ RcTcacheEntry TextureCacheBase::DoPartialTextureUpdates(RcTcacheEntry& entry_to_
return entry_to_update;
}
-void TextureCacheBase::DumpTexture(RcTcacheEntry& entry, std::string basename, unsigned int level,
- bool is_arbitrary)
-{
- std::string szDir = File::GetUserPath(D_DUMPTEXTURES_IDX) + SConfig::GetInstance().GetGameID();
-
- // make sure that the directory exists
- if (!File::IsDirectory(szDir))
- File::CreateDir(szDir);
-
- if (is_arbitrary)
- {
- basename += "_arb";
- }
-
- if (level > 0)
- {
- if (!g_ActiveConfig.bDumpMipmapTextures)
- return;
- basename += fmt::format("_mip{}", level);
- }
- else
- {
- if (!g_ActiveConfig.bDumpBaseTextures)
- return;
- }
-
- const std::string filename = fmt::format("{}/{}.png", szDir, basename);
- if (File::Exists(filename))
- return;
-
- entry->texture->Save(filename, level, Config::Get(Config::GFX_TEXTURE_PNG_COMPRESSION_LEVEL));
-}
-
// Helper for checking if a BPMemory TexMode0 register is set to Point
// Filtering modes. This is used to decide whether Anisotropic enhancements
// are (mostly) safe in the VideoBackends.
@@ -1838,12 +1806,21 @@ RcTcacheEntry TextureCacheBase::CreateTextureEntry(
entry->has_arbitrary_mips = arbitrary_mip_detector.HasArbitraryMipmaps(dst_buffer);
- if (g_ActiveConfig.bDumpTextures && !skip_texture_dump)
+ if (g_ActiveConfig.bDumpTextures && !skip_texture_dump && texLevels > 0)
{
const std::string basename = texture_info.CalculateTextureName().GetFullName();
- for (u32 level = 0; level < texLevels; ++level)
+ if (g_ActiveConfig.bDumpBaseTextures)
+ {
+ VideoCommon::TextureUtils::DumpTexture(*entry->texture, basename, 0,
+ entry->has_arbitrary_mips);
+ }
+ if (g_ActiveConfig.bDumpMipmapTextures)
{
- DumpTexture(entry, basename, level, entry->has_arbitrary_mips);
+ for (u32 level = 1; level < texLevels; ++level)
+ {
+ VideoCommon::TextureUtils::DumpTexture(*entry->texture, basename, level,
+ entry->has_arbitrary_mips);
+ }
}
}
}