diff options
| author | 2020-01-15 16:14:17 -0300 | |
|---|---|---|
| committer | 2020-01-15 16:14:17 -0300 | |
| commit | c375d735e66b275d70de7c8a29113cf1e1e41d7e (patch) | |
| tree | b9797b0801720f2710681dd527916a61affa3557 /src/video_core/renderer_opengl | |
| parent | Merge pull request #3303 from lioncash/reorder (diff) | |
| download | yuzu-c375d735e66b275d70de7c8a29113cf1e1e41d7e.tar.gz yuzu-c375d735e66b275d70de7c8a29113cf1e1e41d7e.tar.xz yuzu-c375d735e66b275d70de7c8a29113cf1e1e41d7e.zip | |
gl_state: Implement PROGRAM_POINT_SIZE
For gl_PointSize to have effect we have to activate
GL_PROGRAM_POINT_SIZE.
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.h | 3 |
3 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 672051102..926bccd42 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -1272,6 +1272,7 @@ void RasterizerOpenGL::SyncPointState() { | |||
| 1272 | const auto& regs = system.GPU().Maxwell3D().regs; | 1272 | const auto& regs = system.GPU().Maxwell3D().regs; |
| 1273 | // Limit the point size to 1 since nouveau sometimes sets a point size of 0 (and that's invalid | 1273 | // Limit the point size to 1 since nouveau sometimes sets a point size of 0 (and that's invalid |
| 1274 | // in OpenGL). | 1274 | // in OpenGL). |
| 1275 | state.point.program_control = regs.vp_point_size.enable ? GL_TRUE : GL_FALSE; | ||
| 1275 | state.point.size = std::max(1.0f, regs.point_size); | 1276 | state.point.size = std::max(1.0f, regs.point_size); |
| 1276 | } | 1277 | } |
| 1277 | 1278 | ||
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp index df2e2395a..cc185e9e1 100644 --- a/src/video_core/renderer_opengl/gl_state.cpp +++ b/src/video_core/renderer_opengl/gl_state.cpp | |||
| @@ -127,6 +127,7 @@ void OpenGLState::ApplyClipDistances() { | |||
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | void OpenGLState::ApplyPointSize() { | 129 | void OpenGLState::ApplyPointSize() { |
| 130 | Enable(GL_PROGRAM_POINT_SIZE, cur_state.point.program_control, point.program_control); | ||
| 130 | if (UpdateValue(cur_state.point.size, point.size)) { | 131 | if (UpdateValue(cur_state.point.size, point.size)) { |
| 131 | glPointSize(point.size); | 132 | glPointSize(point.size); |
| 132 | } | 133 | } |
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h index fb180f302..71d418776 100644 --- a/src/video_core/renderer_opengl/gl_state.h +++ b/src/video_core/renderer_opengl/gl_state.h | |||
| @@ -131,7 +131,8 @@ public: | |||
| 131 | std::array<Viewport, Tegra::Engines::Maxwell3D::Regs::NumViewports> viewports; | 131 | std::array<Viewport, Tegra::Engines::Maxwell3D::Regs::NumViewports> viewports; |
| 132 | 132 | ||
| 133 | struct { | 133 | struct { |
| 134 | float size = 1.0f; // GL_POINT_SIZE | 134 | GLboolean program_control = GL_FALSE; // GL_PROGRAM_POINT_SIZE |
| 135 | GLfloat size = 1.0f; // GL_POINT_SIZE | ||
| 135 | } point; | 136 | } point; |
| 136 | 137 | ||
| 137 | struct { | 138 | struct { |