diff options
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Engine/Methods.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Methods.cs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs index 093f9048..df0e713d 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs @@ -224,9 +224,12 @@ namespace Ryujinx.Graphics.Gpu.Engine UpdateVertexAttribState(state); } - if (state.QueryModified(MethodOffset.PointSize)) + if (state.QueryModified(MethodOffset.PointSize, + MethodOffset.VertexProgramPointSize, + MethodOffset.PointSpriteEnable, + MethodOffset.PointCoordReplace)) { - UpdatePointSizeState(state); + UpdatePointState(state); } if (state.QueryModified(MethodOffset.PrimitiveRestartState)) @@ -703,11 +706,16 @@ namespace Ryujinx.Graphics.Gpu.Engine /// Updates host point size based on guest GPU state. /// </summary> /// <param name="state">Current GPU state</param> - private void UpdatePointSizeState(GpuState state) + private void UpdatePointState(GpuState state) { float size = state.Get<float>(MethodOffset.PointSize); + bool isProgramPointSize = state.Get<Boolean32>(MethodOffset.VertexProgramPointSize); + bool enablePointSprite = state.Get<Boolean32>(MethodOffset.PointSpriteEnable); + + // TODO: Need to figure out a way to map PointCoordReplace enable bit. + Origin origin = (state.Get<int>(MethodOffset.PointCoordReplace) & 4) == 0 ? Origin.LowerLeft : Origin.UpperLeft; - _context.Renderer.Pipeline.SetPointSize(size); + _context.Renderer.Pipeline.SetPointParameters(size, isProgramPointSize, enablePointSprite, origin); } /// <summary> |
