diff --git a/Ryujinx.Graphics.GAL/IPipeline.cs b/Ryujinx.Graphics.GAL/IPipeline.cs
index 41e35dd40a..1a5f1cf02f 100644
--- a/Ryujinx.Graphics.GAL/IPipeline.cs
+++ b/Ryujinx.Graphics.GAL/IPipeline.cs
@@ -42,6 +42,8 @@ namespace Ryujinx.Graphics.GAL
void SetImage(int index, ShaderStage stage, ITexture texture);
+ void SetPointSize(float size);
+
void SetPrimitiveRestart(bool enable, int index);
void SetPrimitiveTopology(PrimitiveTopology topology);
diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
index 31769f5a23..d9e7582b7a 100644
--- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs
+++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs
@@ -161,6 +161,11 @@ namespace Ryujinx.Graphics.Gpu.Engine
UpdateVertexAttribState(state);
}
+ if (state.QueryModified(MethodOffset.PointSize))
+ {
+ UpdatePointSizeState(state);
+ }
+
if (state.QueryModified(MethodOffset.PrimitiveRestartState))
{
UpdatePrimitiveRestartState(state);
@@ -507,6 +512,17 @@ namespace Ryujinx.Graphics.Gpu.Engine
_context.Renderer.Pipeline.SetVertexAttribs(vertexAttribs);
}
+ ///
+ /// Updates host point size based on guest GPU state.
+ ///
+ /// Current GPU state
+ private void UpdatePointSizeState(GpuState state)
+ {
+ float size = state.Get(MethodOffset.PointSize);
+
+ _context.Renderer.Pipeline.SetPointSize(size);
+ }
+
///
/// Updates host primitive restart based on guest GPU state.
///
diff --git a/Ryujinx.Graphics.Gpu/State/MethodOffset.cs b/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
index a89fc3797e..730ff40afa 100644
--- a/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
+++ b/Ryujinx.Graphics.Gpu/State/MethodOffset.cs
@@ -53,6 +53,7 @@ namespace Ryujinx.Graphics.Gpu.State
YControl = 0x4eb,
FirstVertex = 0x50d,
FirstInstance = 0x50e,
+ PointSize = 0x546,
ResetCounter = 0x54c,
RtDepthStencilEnable = 0x54e,
ConditionState = 0x554,
diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs
index e308becfe6..c2a42370d0 100644
--- a/Ryujinx.Graphics.OpenGL/Pipeline.cs
+++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs
@@ -601,6 +601,11 @@ namespace Ryujinx.Graphics.OpenGL
_vertexArray.SetIndexBuffer((Buffer)buffer.Buffer);
}
+ public void SetPointSize(float size)
+ {
+ GL.PointSize(size);
+ }
+
public void SetPrimitiveRestart(bool enable, int index)
{
if (!enable)