summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2019-07-15 10:24:01 -0400
committerGravatar FernandoS272019-07-17 17:29:55 -0400
commit5ad889f6fdb4a2d331e8e80e82fef8b8d582d7f7 (patch)
tree5307536ff8d048f313c4cfa5668e62bcdb546b20 /src/video_core/engines
parentTexture_Cache: Rebase Fixes (diff)
downloadyuzu-5ad889f6fdb4a2d331e8e80e82fef8b8d582d7f7.tar.gz
yuzu-5ad889f6fdb4a2d331e8e80e82fef8b8d582d7f7.tar.xz
yuzu-5ad889f6fdb4a2d331e8e80e82fef8b8d582d7f7.zip
Maxwell3D: Address Feedback
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp17
-rw-r--r--src/video_core/engines/maxwell_3d.h6
2 files changed, 10 insertions, 13 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{};