From 5007d62e2714e8f7ea1418c5f344eb67febdc198 Mon Sep 17 00:00:00 2001 From: raven02 Date: Sun, 15 Jun 2014 00:54:09 +0800 Subject: [PATCH] Regresion fix : restore point size functionality --- rpcs3/Emu/GS/GL/GLGSRender.cpp | 8 +++++++- rpcs3/Emu/GS/RSXThread.cpp | 4 +++- rpcs3/Emu/GS/RSXThread.h | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/GS/GL/GLGSRender.cpp b/rpcs3/Emu/GS/GL/GLGSRender.cpp index 3eadb2f1da..ec05c45421 100644 --- a/rpcs3/Emu/GS/GL/GLGSRender.cpp +++ b/rpcs3/Emu/GS/GL/GLGSRender.cpp @@ -843,7 +843,7 @@ void GLGSRender::ExecCMD() Enable(m_set_poly_offset_fill, GL_POLYGON_OFFSET_FILL); Enable(m_set_poly_offset_line, GL_POLYGON_OFFSET_LINE); Enable(m_set_poly_offset_point, GL_POLYGON_OFFSET_POINT); - Enable(m_set_restart_index, GL_PRIMITIVE_RESTART); // Requires OpenGL 3.1+ + Enable(m_set_restart_index, GL_PRIMITIVE_RESTART); if(m_set_clip_plane) { @@ -872,6 +872,12 @@ void GLGSRender::ExecCMD() checkForGlError("glPolygonMode(Back)"); } + if (m_set_point_size) + { + glPointSize(m_point_size); + checkForGlError("glPointSize"); + } + if (m_set_poly_offset_mode) { glPolygonOffset(m_poly_offset_scale_factor, m_poly_offset_bias); diff --git a/rpcs3/Emu/GS/RSXThread.cpp b/rpcs3/Emu/GS/RSXThread.cpp index 00add356ae..d1334e904a 100644 --- a/rpcs3/Emu/GS/RSXThread.cpp +++ b/rpcs3/Emu/GS/RSXThread.cpp @@ -1149,7 +1149,9 @@ void RSXThread::DoCmd(const u32 fcmd, const u32 cmd, mem32_ptr_t& args, const u3 // Point case NV4097_SET_POINT_SIZE: { - // Done in Vertex Shader + m_set_point_size = true; + const u32 a0 = ARGS(0); + m_point_size = (float&)a0; } break; diff --git a/rpcs3/Emu/GS/RSXThread.h b/rpcs3/Emu/GS/RSXThread.h index 72cf7b229f..887581712e 100644 --- a/rpcs3/Emu/GS/RSXThread.h +++ b/rpcs3/Emu/GS/RSXThread.h @@ -181,7 +181,9 @@ public: u32 m_restart_index; // Point + bool m_set_point_size; bool m_set_point_sprite_control; + u32 m_point_size; u16 m_point_x; u16 m_point_y; @@ -426,6 +428,7 @@ protected: m_set_scissor_vertical = false; m_set_line_smooth = false; m_set_poly_smooth = false; + m_set_point_size = false; m_set_two_sided_stencil_test_enable = false; m_set_surface_clip_horizontal = false; m_set_surface_clip_vertical = false; @@ -454,6 +457,7 @@ protected: m_point_x = 0; m_point_y = 0; + m_point_size = 0; // Construct Textures for(int i=0; i<16; i++)