diff options
| author | 2018-09-28 01:31:01 -0300 | |
|---|---|---|
| committer | 2018-09-28 02:13:29 -0300 | |
| commit | e3e51d3ddb45597b843ae710d8d9a33caec6931f (patch) | |
| tree | 63a4125d1102bdec94d1772e11f824d98a0f68c8 /src/video_core/renderer_opengl | |
| parent | Merge pull request #1360 from FearlessTobi/port-3979 (diff) | |
| download | yuzu-e3e51d3ddb45597b843ae710d8d9a33caec6931f.tar.gz yuzu-e3e51d3ddb45597b843ae710d8d9a33caec6931f.tar.xz yuzu-e3e51d3ddb45597b843ae710d8d9a33caec6931f.zip | |
video_core: Implement point_size and add point state sync
Diffstat (limited to 'src/video_core/renderer_opengl')
| -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 |
4 files changed, 21 insertions, 0 deletions
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(); |