summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/engines/maxwell_3d.h7
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp7
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h3
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp7
-rw-r--r--src/video_core/renderer_opengl/gl_state.h4
5 files changed, 27 insertions, 1 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 16cdfc7e2..63dec5a83 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -641,7 +641,11 @@ public:
641 641
642 u32 vb_element_base; 642 u32 vb_element_base;
643 643
644 INSERT_PADDING_WORDS(0x40); 644 INSERT_PADDING_WORDS(0x38);
645
646 float point_size;
647
648 INSERT_PADDING_WORDS(0x7);
645 649
646 u32 zeta_enable; 650 u32 zeta_enable;
647 651
@@ -1017,6 +1021,7 @@ ASSERT_REG_POSITION(stencil_front_func_mask, 0x4E6);
1017ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); 1021ASSERT_REG_POSITION(stencil_front_mask, 0x4E7);
1018ASSERT_REG_POSITION(screen_y_control, 0x4EB); 1022ASSERT_REG_POSITION(screen_y_control, 0x4EB);
1019ASSERT_REG_POSITION(vb_element_base, 0x50D); 1023ASSERT_REG_POSITION(vb_element_base, 0x50D);
1024ASSERT_REG_POSITION(point_size, 0x546);
1020ASSERT_REG_POSITION(zeta_enable, 0x54E); 1025ASSERT_REG_POSITION(zeta_enable, 0x54E);
1021ASSERT_REG_POSITION(tsc, 0x557); 1026ASSERT_REG_POSITION(tsc, 0x557);
1022ASSERT_REG_POSITION(tic, 0x55D); 1027ASSERT_REG_POSITION(tic, 0x55D);
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 44850d193..1fcd13f04 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -452,6 +452,7 @@ void RasterizerOpenGL::DrawArrays() {
452 SyncCullMode(); 452 SyncCullMode();
453 SyncAlphaTest(); 453 SyncAlphaTest();
454 SyncTransformFeedback(); 454 SyncTransformFeedback();
455 SyncPointState();
455 456
456 // TODO(bunnei): Sync framebuffer_scale uniform here 457 // TODO(bunnei): Sync framebuffer_scale uniform here
457 // TODO(bunnei): Sync scissorbox uniform(s) here 458 // TODO(bunnei): Sync scissorbox uniform(s) here
@@ -905,4 +906,10 @@ void RasterizerOpenGL::SyncTransformFeedback() {
905 } 906 }
906} 907}
907 908
909void RasterizerOpenGL::SyncPointState() {
910 const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs;
911
912 state.point.size = regs.point_size;
913}
914
908} // namespace OpenGL 915} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index c3f1e14bf..db6ff191c 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -164,6 +164,9 @@ private:
164 /// Syncs the transform feedback state to match the guest state 164 /// Syncs the transform feedback state to match the guest state
165 void SyncTransformFeedback(); 165 void SyncTransformFeedback();
166 166
167 /// Syncs the point state to match the guest state
168 void SyncPointState();
169
167 bool has_ARB_direct_state_access = false; 170 bool has_ARB_direct_state_access = false;
168 bool has_ARB_multi_bind = false; 171 bool has_ARB_multi_bind = false;
169 bool has_ARB_separate_shader_objects = false; 172 bool has_ARB_separate_shader_objects = false;
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index e5173e20a..9c3b3b546 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -79,6 +79,8 @@ OpenGLState::OpenGLState() {
79 viewport.height = 0; 79 viewport.height = 0;
80 80
81 clip_distance = {}; 81 clip_distance = {};
82
83 point.size = 1;
82} 84}
83 85
84void OpenGLState::Apply() const { 86void OpenGLState::Apply() const {
@@ -283,6 +285,11 @@ void OpenGLState::Apply() const {
283 } 285 }
284 } 286 }
285 287
288 // Point
289 if (point.size != cur_state.point.size) {
290 glPointSize(point.size);
291 }
292
286 cur_state = *this; 293 cur_state = *this;
287} 294}
288 295
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index 9a93029d8..ac4bb0555 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -141,6 +141,10 @@ public:
141 GLsizei height; 141 GLsizei height;
142 } viewport; 142 } viewport;
143 143
144 struct {
145 float size; // GL_POINT_SIZE
146 } point;
147
144 std::array<bool, 2> clip_distance; // GL_CLIP_DISTANCE 148 std::array<bool, 2> clip_distance; // GL_CLIP_DISTANCE
145 149
146 OpenGLState(); 150 OpenGLState();