diff options
Diffstat (limited to 'src')
| -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 cd26c7216..9f5581045 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h | |||
| @@ -642,7 +642,11 @@ public: | |||
| 642 | 642 | ||
| 643 | u32 vb_element_base; | 643 | u32 vb_element_base; |
| 644 | 644 | ||
| 645 | INSERT_PADDING_WORDS(0x40); | 645 | INSERT_PADDING_WORDS(0x38); |
| 646 | |||
| 647 | float point_size; | ||
| 648 | |||
| 649 | INSERT_PADDING_WORDS(0x7); | ||
| 646 | 650 | ||
| 647 | u32 zeta_enable; | 651 | u32 zeta_enable; |
| 648 | 652 | ||
| @@ -1018,6 +1022,7 @@ ASSERT_REG_POSITION(stencil_front_func_mask, 0x4E6); | |||
| 1018 | ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); | 1022 | ASSERT_REG_POSITION(stencil_front_mask, 0x4E7); |
| 1019 | ASSERT_REG_POSITION(screen_y_control, 0x4EB); | 1023 | ASSERT_REG_POSITION(screen_y_control, 0x4EB); |
| 1020 | ASSERT_REG_POSITION(vb_element_base, 0x50D); | 1024 | ASSERT_REG_POSITION(vb_element_base, 0x50D); |
| 1025 | ASSERT_REG_POSITION(point_size, 0x546); | ||
| 1021 | ASSERT_REG_POSITION(zeta_enable, 0x54E); | 1026 | ASSERT_REG_POSITION(zeta_enable, 0x54E); |
| 1022 | ASSERT_REG_POSITION(tsc, 0x557); | 1027 | ASSERT_REG_POSITION(tsc, 0x557); |
| 1023 | ASSERT_REG_POSITION(tic, 0x55D); | 1028 | 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 b64c93b81..4c8ecbd1c 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 e494b3f16..1fe26a2a9 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 { |
| @@ -301,6 +303,11 @@ void OpenGLState::Apply() const { | |||
| 301 | } | 303 | } |
| 302 | } | 304 | } |
| 303 | 305 | ||
| 306 | // Point | ||
| 307 | if (point.size != cur_state.point.size) { | ||
| 308 | glPointSize(point.size); | ||
| 309 | } | ||
| 310 | |||
| 304 | cur_state = *this; | 311 | cur_state = *this; |
| 305 | } | 312 | } |
| 306 | 313 | ||
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h index 49f30b111..dc21a2ee3 100644 --- a/src/video_core/renderer_opengl/gl_state.h +++ b/src/video_core/renderer_opengl/gl_state.h | |||
| @@ -142,6 +142,10 @@ public: | |||
| 142 | GLsizei height; | 142 | GLsizei height; |
| 143 | } viewport; | 143 | } viewport; |
| 144 | 144 | ||
| 145 | struct { | ||
| 146 | float size; // GL_POINT_SIZE | ||
| 147 | } point; | ||
| 148 | |||
| 145 | std::array<bool, 2> clip_distance; // GL_CLIP_DISTANCE | 149 | std::array<bool, 2> clip_distance; // GL_CLIP_DISTANCE |
| 146 | 150 | ||
| 147 | OpenGLState(); | 151 | OpenGLState(); |