Fixup Ssy instruction
This commit is contained in:
parent
e85a6a1e17
commit
da87040d58
2 changed files with 9 additions and 2 deletions
|
@ -39,8 +39,15 @@ namespace Ryujinx.Graphics.Gal.Shader
|
||||||
Block.AddNode(GetPredNode(new ShaderIrOp(ShaderIrInst.Kil), OpCode));
|
Block.AddNode(GetPredNode(new ShaderIrOp(ShaderIrInst.Kil), OpCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Ssy_I(ShaderIrBlock Block, long OpCode, long Position)
|
public static void Ssy(ShaderIrBlock Block, long OpCode, long Position)
|
||||||
{
|
{
|
||||||
|
if ((OpCode & 0x20) != 0)
|
||||||
|
{
|
||||||
|
//This reads the target offset from the constant buffer.
|
||||||
|
//Almost impossible to support with GLSL.
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
int Offset = ((int)(OpCode >> 20) << 8) >> 8;
|
int Offset = ((int)(OpCode >> 20) << 8) >> 8;
|
||||||
|
|
||||||
int Target = (int)(Position + Offset);
|
int Target = (int)(Position + Offset);
|
||||||
|
|
|
@ -112,7 +112,7 @@ namespace Ryujinx.Graphics.Gal.Shader
|
||||||
Set("0100110000101x", ShaderDecode.Shr_C);
|
Set("0100110000101x", ShaderDecode.Shr_C);
|
||||||
Set("0011100x00101x", ShaderDecode.Shr_I);
|
Set("0011100x00101x", ShaderDecode.Shr_I);
|
||||||
Set("0101110000101x", ShaderDecode.Shr_R);
|
Set("0101110000101x", ShaderDecode.Shr_R);
|
||||||
Set("1110001010010x", ShaderDecode.Ssy_I);
|
Set("1110001010010x", ShaderDecode.Ssy);
|
||||||
Set("1110111111110x", ShaderDecode.St_A);
|
Set("1110111111110x", ShaderDecode.St_A);
|
||||||
Set("1111000011111x", ShaderDecode.Sync);
|
Set("1111000011111x", ShaderDecode.Sync);
|
||||||
Set("110000xxxx111x", ShaderDecode.Tex);
|
Set("110000xxxx111x", ShaderDecode.Tex);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue