Skip to content

Commit

Permalink
Merge pull request #15431 from hrydgard/shortcircuit-texture-replacement
Browse files Browse the repository at this point in the history
Early-out in texture replacement code, if replacement disabled
  • Loading branch information
hrydgard committed Mar 8, 2022
2 parents 81fcb3c + 7cab540 commit 2abe3d6
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 deletions.
7 changes: 7 additions & 0 deletions GPU/Common/TextureCacheCommon.cpp
Expand Up @@ -1277,6 +1277,13 @@ u32 TextureCacheCommon::EstimateTexMemoryUsage(const TexCacheEntry *entry) {
}

ReplacedTexture &TextureCacheCommon::FindReplacement(TexCacheEntry *entry, int &w, int &h) {
// Short circuit the non-enabled case.
// Otherwise, due to bReplaceTexturesAllowLate, we'll still spawn tasks looking for replacements
// that then won't be used.
if (!replacer_.Enabled()) {
return replacer_.FindNone();
}

// Allow some delay to reduce pop-in.
constexpr double MAX_BUDGET_PER_TEX = 0.25 / 60.0;

Expand Down
5 changes: 4 additions & 1 deletion GPU/GPUCommon.cpp
Expand Up @@ -2771,9 +2771,12 @@ void GPUCommon::DoBlockTransfer(u32 skipDrawReason) {
framebufferManager_->NotifyBlockTransferAfter(dstBasePtr, dstStride, dstX, dstY, srcBasePtr, srcStride, srcX, srcY, width, height, bpp, skipDrawReason);
}

const uint32_t numBytes = width * height * bpp;
const uint32_t srcSize = height * srcStride * bpp;
const uint32_t dstSize = height * dstStride * bpp;
if (MemBlockInfoDetailed(srcSize, dstSize)) {
// We do the check here on the number of bytes to avoid marking really tiny images.
// Helps perf in GT menu which does insane amounts of these, one for each text character per frame.
if (MemBlockInfoDetailed(numBytes, numBytes)) {
const uint32_t src = srcBasePtr + (srcY * srcStride + srcX) * bpp;
const uint32_t dst = dstBasePtr + (dstY * dstStride + dstX) * bpp;
const std::string tag = "GPUBlockTransfer/" + GetMemWriteTagAt(src, srcSize);
Expand Down
1 change: 0 additions & 1 deletion GPU/Vulkan/TextureCacheVulkan.cpp
Expand Up @@ -657,7 +657,6 @@ void TextureCacheVulkan::BuildTexture(TexCacheEntry *const entry) {
badMipSizes = false;
}


// Don't scale the PPGe texture.
if (entry->addr > 0x05000000 && entry->addr < PSP_GetKernelMemoryEnd()) {
scaleFactor = 1;
Expand Down

0 comments on commit 2abe3d6

Please sign in to comment.