Merge pull request #21244 from hrydgard/more-fixes

Fix black background in Mahjong Artifacts, minor GE debugger improvement
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2026-02-12 13:37:38 +01:00
commit fdfafc3e9f
7 files changed
+44 -12

No files matched your search

+5 -3
View File
@@ -508,6 +508,9 @@ public:
return displayLayoutConfigCopy_;
}
// For the debugger.
inline int PeekBindSeqCount() const { return fbBindSeqCount_; }
protected:
virtual void ReadbackFramebuffer(VirtualFramebuffer *vfb, int x, int y, int w, int h, RasterChannel channel, Draw::ReadbackMode mode);
// Used for when a shader is required, such as GLES.
@@ -565,9 +568,8 @@ protected:
dstBuffer->reallyDirtyAfterDisplay = true;
}
inline int GetBindSeqCount() {
return fbBindSeqCount_++;
}
// For use when binding.
inline int GetBindSeqCount() { return fbBindSeqCount_++; }
static SkipGPUReadbackMode GetSkipGPUReadbackMode();
+7 -3
View File
@@ -1090,6 +1090,10 @@ bool TextureCacheCommon::MatchFramebuffer(
matchInfo->xOffset = entry.bufw == 0 ? 0 : -(-texelOffset % (int)entry.bufw);
}
if (matchInfo->yOffset >= 512) {
// Reject unreasonably large y offsets. 512 is the largest texture size.
return false;
}
if (matchInfo->yOffset > 0 && matchInfo->yOffset + minSubareaHeight >= framebuffer->height) {
// Can't be inside the framebuffer.
return false;
@@ -1121,14 +1125,14 @@ bool TextureCacheCommon::MatchFramebuffer(
// Check for CLUT. The framebuffer is always RGB, but it can be interpreted as a CLUT texture.
// 3rd Birthday (and a bunch of other games) render to a 16 bit clut texture.
if (matchingClutFormat) {
if (!noOffset) {
WARN_LOG_ONCE(subareaClut, Log::G3D, "Matching framebuffer (%s) using %s with offset at %08x +%dx%d", RasterChannelToString(channel), GeTextureFormatToString(entry.format), fb_address, matchInfo->xOffset, matchInfo->yOffset);
}
if (channel == RasterChannel::RASTER_DEPTH && framebuffer->last_frame_depth_updated < 0) {
// Reject depth textures that have not been rendered to. See #15828
// We're right before the final check here, so we can bail.
return false;
} else {
if (!noOffset) {
WARN_LOG_ONCE(subareaClut, Log::G3D, "Matching framebuffer (%s) using %s with offset at %08x +%dx%d", RasterChannelToString(channel), GeTextureFormatToString(entry.format), fb_address, matchInfo->xOffset, matchInfo->yOffset);
}
return true;
}
} else if (IsClutFormat((GETextureFormat)(entry.format)) || IsDXTFormat((GETextureFormat)(entry.format))) {
-1
View File
@@ -17,7 +17,6 @@
#include <algorithm>
#include "Common/GPU/Vulkan/VulkanLoader.h"
#include "Common/GPU/Vulkan/VulkanRenderManager.h"
#include "GPU/GPUState.h"
+12 -1
View File
@@ -33,11 +33,16 @@ void DrawFramebuffersWindow(ImConfig &cfg, FramebufferManagerCommon *framebuffer
return;
}
ImGui::BeginTable("framebuffers", 4);
ImGui::Text("Cur frame: %d seq: %d", gpuStats.numFlips, framebufferManager->PeekBindSeqCount());
ImGui::BeginTable("framebuffers", 7);
ImGui::TableSetupColumn("Tag", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Color Addr", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Depth Addr", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("Size", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("BindSeq", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("LastRender", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("LastUse", ImGuiTableColumnFlags_WidthFixed);
ImGui::TableHeadersRow();
@@ -69,6 +74,12 @@ void DrawFramebuffersWindow(ImConfig &cfg, FramebufferManagerCommon *framebuffer
ImGui::Text("Framebuffer: %s", tag);
ImGui::EndPopup();
}
ImGui::TableNextColumn();
ImGui::Text("%d/%d", vfb->colorBindSeq, vfb->depthBindSeq);
ImGui::TableNextColumn();
ImGui::Text("%d/%d", vfb->last_frame_render, vfb->last_frame_depth_updated);
ImGui::TableNextColumn();
ImGui::Text("%d/%d", vfb->last_frame_used, vfb->last_frame_depth_render);
ImGui::PopID();
}
ImGui::EndTable();
+4 -4
View File
@@ -24,9 +24,9 @@
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="2.8284275"
inkscape:cx="173.06436"
inkscape:cy="581.41847"
inkscape:zoom="2.0000003"
inkscape:cx="302.24996"
inkscape:cy="339.74995"
inkscape:window-width="3840"
inkscape:window-height="2071"
inkscape:window-x="-9"
@@ -4312,7 +4312,7 @@
sodipodi:nodetypes="sscssssscssscccccc" /><g
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3"
id="I_EXIT"
transform="matrix(0.16780779,0,0,0.16780779,40.523958,144.13668)"><path
transform="matrix(-0.16780779,0,0,0.16780779,51.550514,144.13668)"><path
id="asdf"
style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.49782;-inkscape-stroke:none"
d="M 8.5630832,3.4509903 C 5.808118,3.4114746 3.50815,5.6543991 3.4789128,8.409493 v 0.010771 46.913683 c -2.832e-4,2.775449 2.3090041,5.0556 5.0841704,5.015949 H 37.908371 c 2.752855,0.0073 5.026739,-2.262539 5.026721,-5.015949 V 39.223301 H 38.46131 v 14.96168 c 0,0.860175 -0.662202,1.518788 -1.522378,1.518788 H 36.93534 9.4463499 9.4319878 c -0.8672443,0 -1.5368289,-0.651488 -1.5367403,-1.518788 V 9.1383681 C 7.9043418,8.2781405 8.5717112,7.6375317 9.4319878,7.6375317 h 0.014362 27.4889902 0.0036 c 0.853184,0 1.513243,0.6477012 1.522378,1.5008364 V 23.855892 H 42.9351 V 8.420264 8.409493 C 42.905739,5.6771648 40.64003,3.4448758 37.908371,3.4509903 Z M 49.441108,19.062553 46.967242,21.532829 55.537804,30.10339 H 17.388572 v 3.497163 h 38.149232 l -8.570562,8.570562 2.473866,2.473865 12.789418,-12.793008 z" /></g><g

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 257 KiB

+13
View File
@@ -0,0 +1,13 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/10fc3bf1ee0001078a473afe6e43cfdb/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/9c55677aff3966382f3d853c0959bfb2/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/39846e8427e64a3824c13e399d7d813c/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect
toolchainVendor=JETBRAINS
toolchainVersion=21
+3
View File
@@ -5,6 +5,9 @@ pluginManagement {
gradlePluginPortal()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)