summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2018-09-28 01:31:01 -0300
committerGravatar ReinUsesLisp2018-09-28 02:13:29 -0300
commite3e51d3ddb45597b843ae710d8d9a33caec6931f (patch)
tree63a4125d1102bdec94d1772e11f824d98a0f68c8 /src/video_core/renderer_opengl
parentMerge pull request #1360 from FearlessTobi/port-3979 (diff)
downloadyuzu-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.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
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
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();