From f0a49a1c94c74886f4cfb35c35d7deec82f6bd8f Mon Sep 17 00:00:00 2001 From: gdkchan Date: Thu, 25 Oct 2018 18:30:09 -0300 Subject: Fix Color Mask values (#473) * Fix color mask common, set default value on first color mask register * Missing check * Better exception messages * Address PR feedback * Add fixme as per review feedback --- Ryujinx.Graphics/NvGpuEngine3d.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'Ryujinx.Graphics/NvGpuEngine3d.cs') diff --git a/Ryujinx.Graphics/NvGpuEngine3d.cs b/Ryujinx.Graphics/NvGpuEngine3d.cs index e8ded889..7d2b2b43 100644 --- a/Ryujinx.Graphics/NvGpuEngine3d.cs +++ b/Ryujinx.Graphics/NvGpuEngine3d.cs @@ -64,6 +64,10 @@ namespace Ryujinx.Graphics { UploadedKeys[i] = new List(); } + + //Ensure that all components are enabled by default. + //FIXME: Is this correct? + WriteRegister(NvGpuEngine3dReg.ColorMaskN, 0x1111); } public void CallMethod(NvGpuVmm Vmm, NvGpuPBEntry PBEntry) @@ -420,16 +424,13 @@ namespace Ryujinx.Graphics private void SetColorMask(GalPipelineState State) { - int ColorMask = ReadRegister(NvGpuEngine3dReg.ColorMask); + bool ColorMaskCommon = ReadRegisterBool(NvGpuEngine3dReg.ColorMaskCommon); - State.ColorMask.Red = ((ColorMask >> 0) & 0xf) != 0; - State.ColorMask.Green = ((ColorMask >> 4) & 0xf) != 0; - State.ColorMask.Blue = ((ColorMask >> 8) & 0xf) != 0; - State.ColorMask.Alpha = ((ColorMask >> 12) & 0xf) != 0; + State.ColorMaskCommon = ColorMaskCommon; for (int Index = 0; Index < GalPipelineState.RenderTargetsCount; Index++) { - ColorMask = ReadRegister(NvGpuEngine3dReg.ColorMaskN + Index); + int ColorMask = ReadRegister(NvGpuEngine3dReg.ColorMaskN + (ColorMaskCommon ? 0 : Index)); State.ColorMasks[Index].Red = ((ColorMask >> 0) & 0xf) != 0; State.ColorMasks[Index].Green = ((ColorMask >> 4) & 0xf) != 0; -- cgit v1.2.3