diff options
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.h | 4 |
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); | |||
| 1017 | ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); | 1021 | ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); |
| 1018 | ASSERT_REG_POSITION(screen_y_control, 0x4EB); | 1022 | ASSERT_REG_POSITION(screen_y_control, 0x4EB); |
| 1019 | ASSERT_REG_POSITION(vb_element_base, 0x50D); | 1023 | ASSERT_REG_POSITION(vb_element_base, 0x50D); |
| 1024 | ASSERT_REG_POSITION(point_size, 0x546); | ||
| 1020 | ASSERT_REG_POSITION(zeta_enable, 0x54E); | 1025 | ASSERT_REG_POSITION(zeta_enable, 0x54E); |
| 1021 | ASSERT_REG_POSITION(tsc, 0x557); | 1026 | ASSERT_REG_POSITION(tsc, 0x557); |
| 1022 | ASSERT_REG_POSITION(tic, 0x55D); | 1027 | ASSERT_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 | ||
| 909 | void 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 | ||
| 84 | void OpenGLState::Apply() const { | 86 | void 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(); |