summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/engines/maxwell_3d.cpp17
-rw-r--r--src/video_core/engines/maxwell_3d.h6
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp2
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp3
-rw-r--r--src/video_core/renderer_opengl/gl_state.h2
5 files changed, 13 insertions, 17 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 97422e700..87777e265 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -91,14 +91,11 @@ void Maxwell3D::InitializeRegisterDefaults() {
91 91
92void Maxwell3D::InitDirtySettings() { 92void Maxwell3D::InitDirtySettings() {
93 const auto set_block = [this](const u32 start, const u32 range, const u8 position) { 93 const auto set_block = [this](const u32 start, const u32 range, const u8 position) {
94 const u32 end = start + range; 94 const auto start_itr = dirty_pointers.begin() + start;
95 for (std::size_t i = start; i < end; i++) { 95 const auto end_itr = start_itr + range;
96 dirty_pointers[i] = position; 96 std::fill(start_itr, end_itr, position);
97 }
98 }; 97 };
99 for (std::size_t i = 0; i < DirtyRegs::NUM_REGS; i++) { 98 dirty.regs.fill(true);
100 dirty.regs[i] = true;
101 }
102 99
103 // Init Render Targets 100 // Init Render Targets
104 constexpr u32 registers_per_rt = sizeof(regs.rt[0]) / sizeof(u32); 101 constexpr u32 registers_per_rt = sizeof(regs.rt[0]) / sizeof(u32);
@@ -308,7 +305,7 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) {
308 305
309 if (regs.reg_array[method] != method_call.argument) { 306 if (regs.reg_array[method] != method_call.argument) {
310 regs.reg_array[method] = method_call.argument; 307 regs.reg_array[method] = method_call.argument;
311 std::size_t dirty_reg = dirty_pointers[method]; 308 const std::size_t dirty_reg = dirty_pointers[method];
312 if (dirty_reg) { 309 if (dirty_reg) {
313 dirty.regs[dirty_reg] = true; 310 dirty.regs[dirty_reg] = true;
314 if (dirty_reg >= DIRTY_REGS_POS(vertex_array) && 311 if (dirty_reg >= DIRTY_REGS_POS(vertex_array) &&
@@ -540,7 +537,7 @@ void Maxwell3D::ProcessCBBind(Regs::ShaderStage stage) {
540 537
541void Maxwell3D::ProcessCBData(u32 value) { 538void Maxwell3D::ProcessCBData(u32 value) {
542 const u32 id = cb_data_state.id; 539 const u32 id = cb_data_state.id;
543 cb_data_state.buff[id][cb_data_state.counter] = value; 540 cb_data_state.buffer[id][cb_data_state.counter] = value;
544 // Increment the current buffer position. 541 // Increment the current buffer position.
545 regs.const_buffer.cb_pos = regs.const_buffer.cb_pos + 4; 542 regs.const_buffer.cb_pos = regs.const_buffer.cb_pos + 4;
546 cb_data_state.counter++; 543 cb_data_state.counter++;
@@ -567,7 +564,7 @@ void Maxwell3D::FinishCBData() {
567 const std::size_t size = regs.const_buffer.cb_pos - cb_data_state.start_pos; 564 const std::size_t size = regs.const_buffer.cb_pos - cb_data_state.start_pos;
568 565
569 const u32 id = cb_data_state.id; 566 const u32 id = cb_data_state.id;
570 memory_manager.WriteBlock(address, cb_data_state.buff[id].data(), size); 567 memory_manager.WriteBlock(address, cb_data_state.buffer[id].data(), size);
571 dirty.OnMemoryWrite(); 568 dirty.OnMemoryWrite();
572 569
573 cb_data_state.id = null_cb_data; 570 cb_data_state.id = null_cb_data;
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index abc69cc65..6bf8d0603 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -1169,13 +1169,13 @@ public:
1169 }; 1169 };
1170 1170
1171 void ResetVertexArrays() { 1171 void ResetVertexArrays() {
1172 std::fill(vertex_array.begin(), vertex_array.end(), true); 1172 vertex_array.fill(true);
1173 vertex_array_buffers = true; 1173 vertex_array_buffers = true;
1174 } 1174 }
1175 1175
1176 void ResetRenderTargets() { 1176 void ResetRenderTargets() {
1177 depth_buffer = true; 1177 depth_buffer = true;
1178 std::fill(render_target.begin(), render_target.end(), true); 1178 render_target.fill(true);
1179 render_settings = true; 1179 render_settings = true;
1180 } 1180 }
1181 1181
@@ -1244,7 +1244,7 @@ private:
1244 1244
1245 static constexpr u32 null_cb_data = 0xFFFFFFFF; 1245 static constexpr u32 null_cb_data = 0xFFFFFFFF;
1246 struct { 1246 struct {
1247 std::array<std::array<u32, 0x4000>, 16> buff; 1247 std::array<std::array<u32, 0x4000>, 16> buffer;
1248 u32 current{null_cb_data}; 1248 u32 current{null_cb_data};
1249 u32 id{null_cb_data}; 1249 u32 id{null_cb_data};
1250 u32 start_pos{}; 1250 u32 start_pos{};
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 77195ad93..2e974c98a 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -605,7 +605,7 @@ void RasterizerOpenGL::Clear() {
605 }); 605 });
606 606
607 OpenGLState clear_state{OpenGLState::GetCurState()}; 607 OpenGLState clear_state{OpenGLState::GetCurState()};
608 clear_state.DefaultViewports(); 608 clear_state.SetDefaultViewports();
609 if (regs.clear_buffers.R || regs.clear_buffers.G || regs.clear_buffers.B || 609 if (regs.clear_buffers.R || regs.clear_buffers.G || regs.clear_buffers.B ||
610 regs.clear_buffers.A) { 610 regs.clear_buffers.A) {
611 use_color = true; 611 use_color = true;
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 8d62045b0..f4777d0b0 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -165,7 +165,7 @@ OpenGLState::OpenGLState() {
165 alpha_test.ref = 0.0f; 165 alpha_test.ref = 0.0f;
166} 166}
167 167
168void OpenGLState::DefaultViewports() { 168void OpenGLState::SetDefaultViewports() {
169 for (auto& item : viewports) { 169 for (auto& item : viewports) {
170 item.x = 0; 170 item.x = 0;
171 item.y = 0; 171 item.y = 0;
@@ -182,7 +182,6 @@ void OpenGLState::DefaultViewports() {
182 182
183 depth_clamp.far_plane = false; 183 depth_clamp.far_plane = false;
184 depth_clamp.near_plane = false; 184 depth_clamp.near_plane = false;
185
186} 185}
187 186
188void OpenGLState::ApplyDefaultState() { 187void OpenGLState::ApplyDefaultState() {
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index 2860a2c82..6a85d15b1 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -195,7 +195,7 @@ public:
195 s_rgb_used = false; 195 s_rgb_used = false;
196 } 196 }
197 197
198 void DefaultViewports(); 198 void SetDefaultViewports();
199 /// Apply this state as the current OpenGL state 199 /// Apply this state as the current OpenGL state
200 void Apply(); 200 void Apply();
201 201