Compare commits

...

3 Commits

Author SHA1 Message Date
TheLastRar
407c989860 Vif: Fixes to non-volatile SSE backup and restore logic 2025-02-09 12:28:04 -05:00
lightningterror
9b4b112a97 GS/HW: Adjust max valid tex size.
Account for index 0.
2025-02-08 23:56:42 +01:00
PCSX2 Bot
865b75bcbb [ci skip] Qt: Update Base Translation. 2025-02-07 19:04:10 -05:00
3 changed files with 64 additions and 44 deletions

View File

@@ -17162,162 +17162,168 @@ This action cannot be reversed, and you will lose any saves on the card.</source
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="123"/>
<location filename="../Debugger/MemorySearchWidget.h" line="59"/>
<location filename="../Debugger/MemorySearchWidget.h" line="60"/>
<source>Equals</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="128"/>
<location filename="../Debugger/MemorySearchWidget.h" line="60"/>
<location filename="../Debugger/MemorySearchWidget.h" line="61"/>
<source>Not Equals</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="133"/>
<location filename="../Debugger/MemorySearchWidget.h" line="61"/>
<location filename="../Debugger/MemorySearchWidget.h" line="62"/>
<source>Greater Than</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="138"/>
<location filename="../Debugger/MemorySearchWidget.h" line="62"/>
<location filename="../Debugger/MemorySearchWidget.h" line="63"/>
<source>Greater Than Or Equal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="143"/>
<location filename="../Debugger/MemorySearchWidget.h" line="63"/>
<location filename="../Debugger/MemorySearchWidget.h" line="64"/>
<source>Less Than</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="148"/>
<location filename="../Debugger/MemorySearchWidget.h" line="64"/>
<location filename="../Debugger/MemorySearchWidget.h" line="65"/>
<source>Less Than Or Equal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="156"/>
<location filename="../Debugger/MemorySearchWidget.ui" line="153"/>
<location filename="../Debugger/MemorySearchWidget.h" line="73"/>
<source>Unknown Initial Value</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="161"/>
<source>Comparison</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="167"/>
<location filename="../Debugger/MemorySearchWidget.ui" line="172"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.ui" line="181"/>
<location filename="../Debugger/MemorySearchWidget.ui" line="186"/>
<source>End</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="94"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="95"/>
<source>Search Results List Context Menu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="100"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="101"/>
<source>Copy Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="104"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="105"/>
<source>Go to in Disassembly</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="108"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="109"/>
<source>Add to Saved Memory Addresses</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="115"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="116"/>
<source>Remove Result</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="486"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="494"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="500"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="531"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="555"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="564"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="490"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="498"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="504"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="539"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="563"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="573"/>
<source>Debugger</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="486"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="490"/>
<source>Invalid start address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="494"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="498"/>
<source>Invalid end address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="500"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="504"/>
<source>Start address can&apos;t be equal to or greater than the end address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="531"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="539"/>
<source>Invalid search value</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="555"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="563"/>
<source>Value is larger than type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="564"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="573"/>
<source>This search comparison can only be used with filter searches.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="577"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="587"/>
<source>%0 results found</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.cpp" line="594"/>
<location filename="../Debugger/MemorySearchWidget.cpp" line="604"/>
<source>Searching...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="65"/>
<location filename="../Debugger/MemorySearchWidget.h" line="66"/>
<source>Increased</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="66"/>
<location filename="../Debugger/MemorySearchWidget.h" line="67"/>
<source>Increased By</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="67"/>
<location filename="../Debugger/MemorySearchWidget.h" line="68"/>
<source>Decreased</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="68"/>
<location filename="../Debugger/MemorySearchWidget.h" line="69"/>
<source>Decreased By</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="69"/>
<location filename="../Debugger/MemorySearchWidget.h" line="70"/>
<source>Changed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="70"/>
<location filename="../Debugger/MemorySearchWidget.h" line="71"/>
<source>Changed By</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Debugger/MemorySearchWidget.h" line="71"/>
<location filename="../Debugger/MemorySearchWidget.h" line="72"/>
<source>Not Changed</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -952,7 +952,7 @@ GSVector2i GSRendererHW::GetValidSize(const GSTextureCache::Source* tex)
// Make sure sizes are within max limit of 2048,
// this shouldn't happen but if it does it needs to be addressed,
// clamp the size so at least it doesn't cause a crash.
constexpr int valid_max_size = 2048;
constexpr int valid_max_size = 2047;
if ((width > valid_max_size) || (height > valid_max_size))
{
Console.Warning("Warning: GetValidSize out of bounds, X:%d Y:%d", width, height);

View File

@@ -39,6 +39,13 @@ __fi void makeMergeMask(u32& x)
x = ((x & 0x40) >> 6) | ((x & 0x10) >> 3) | (x & 4) | ((x & 1) << 3);
}
#ifdef _WIN32
__fi void makeMergeMaskAllColumns(u32& x)
{
x = ((x & 0x40404040) >> 6) | ((x & 0x10101010) >> 3) | (x & 0x04040404) | ((x & 0x01010101) << 3);
}
#endif
__fi void VifUnpackSSE_Dynarec::SetMasks(int cS) const
{
const int idx = v.idx;
@@ -260,11 +267,8 @@ void VifUnpackSSE_Dynarec::CompileRoutine()
#ifdef _WIN32
// See SetMasks()
const u32 m0 = vB.mask;
const u32 m3 = ((m0 & 0xaaaaaaaa) >> 1) & ~m0;
const u32 m2 = (m0 & 0x55555555) & (~m0 >> 1);
// see doMaskWrite()
const u32 m4 = (m0 & ~((m3 << 1) | m2)) & 0x55555555;
const u32 m5 = ~(m2 | m3 | m4) & 0x0f0f0f0f;
u32 m3 = ((m0 & 0xaaaaaaaa) >> 1) & ~m0;
u32 m2 = (m0 & 0x55555555) & (~m0 >> 1);
int regsUsed = 2;
// Allocate column registers
@@ -287,26 +291,36 @@ void VifUnpackSSE_Dynarec::CompileRoutine()
// Allocate row register
if ((doMask && m2) || doMode)
{
rowReg = xRegisterSSE(regsUsed);
if (regsUsed - 6 >= 0)
nonVolatileRegs[regsUsed - 6] = rowReg;
rowReg = xRegisterSSE(regsUsed++);
regsUsed++;
}
// see doMaskWrite()
u32 m4 = (m0 & ~((m3 << 1) | m2)) & 0x55555555;
makeMergeMaskAllColumns(m2);
makeMergeMaskAllColumns(m3);
makeMergeMaskAllColumns(m4);
const u32 m5 = ~(m2 | m3 | m4) & 0x0f0f0f0f;
// Allocate temp register
if (doMode && (doMode != 3) &&
doMask && m5 != 0x0f0f0f0f)
{
tmpReg = xRegisterSSE(regsUsed);
if (regsUsed - 6 >= 0)
nonVolatileRegs[regsUsed - 6] = tmpReg;
tmpReg = xRegisterSSE(regsUsed++);
regsUsed++;
}
// Allocate zero register
if (needXmmZero)
{
zeroReg = xRegisterSSE(regsUsed);
if (regsUsed - 6 >= 0)
nonVolatileRegs[regsUsed - 6] = zeroReg;
zeroReg = xRegisterSSE(regsUsed++);
regsUsed++;
}
regsUsed -= 6;