diff options
| author | 2019-07-15 10:24:01 -0400 | |
|---|---|---|
| committer | 2019-07-17 17:29:55 -0400 | |
| commit | 5ad889f6fdb4a2d331e8e80e82fef8b8d582d7f7 (patch) | |
| tree | 5307536ff8d048f313c4cfa5668e62bcdb546b20 /src/video_core/engines | |
| parent | Texture_Cache: Rebase Fixes (diff) | |
| download | yuzu-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.cpp | 17 | ||||
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 6 |
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 | ||
| 92 | void Maxwell3D::InitDirtySettings() { | 92 | void 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 | ||
| 541 | void Maxwell3D::ProcessCBData(u32 value) { | 538 | void 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{}; |