Fix shader GlobalToStorage pass when base address comes from local or shared memory (#5668)
* Fix shader GlobalToStorage pass when base address comes from local or shared memory * Shader cache version bump
This commit is contained in:
parent
210f475484
commit
e2cfe6fe44
@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache
|
|||||||
private const ushort FileFormatVersionMajor = 1;
|
private const ushort FileFormatVersionMajor = 1;
|
||||||
private const ushort FileFormatVersionMinor = 2;
|
private const ushort FileFormatVersionMinor = 2;
|
||||||
private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor;
|
private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor;
|
||||||
private const uint CodeGenVersion = 5551;
|
private const uint CodeGenVersion = 5668;
|
||||||
|
|
||||||
private const string SharedTocFileName = "shared.toc";
|
private const string SharedTocFileName = "shared.toc";
|
||||||
private const string SharedDataFileName = "shared.data";
|
private const string SharedDataFileName = "shared.data";
|
||||||
|
@ -1126,7 +1126,7 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations
|
|||||||
// so we want to get the byte offset back, since each one of those word
|
// so we want to get the byte offset back, since each one of those word
|
||||||
// offsets are a new "local variable" which will not match.
|
// offsets are a new "local variable" which will not match.
|
||||||
|
|
||||||
if (operation.GetSource(0).AsgOp is Operation shiftRightOp &&
|
if (operation.GetSource(1).AsgOp is Operation shiftRightOp &&
|
||||||
shiftRightOp.Inst == Instruction.ShiftRightU32 &&
|
shiftRightOp.Inst == Instruction.ShiftRightU32 &&
|
||||||
shiftRightOp.GetSource(1).Type == OperandType.Constant &&
|
shiftRightOp.GetSource(1).Type == OperandType.Constant &&
|
||||||
shiftRightOp.GetSource(1).Value == 2)
|
shiftRightOp.GetSource(1).Value == 2)
|
||||||
@ -1158,9 +1158,11 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations
|
|||||||
|
|
||||||
private static bool TryGetLocalMemoryOffset(Operation operation, out int constOffset)
|
private static bool TryGetLocalMemoryOffset(Operation operation, out int constOffset)
|
||||||
{
|
{
|
||||||
if (operation.GetSource(0).Type == OperandType.Constant)
|
Operand offset = operation.GetSource(1);
|
||||||
|
|
||||||
|
if (offset.Type == OperandType.Constant)
|
||||||
{
|
{
|
||||||
constOffset = operation.GetSource(0).Value;
|
constOffset = offset.Value;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user