diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-09-01 09:59:27 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-09-01 10:01:11 +0200 |
commit | 52a41f482f2f1e13d709176b2ddb9a135b064def (patch) | |
tree | 585ad40658f3db774a72620be14df93c102d360a /src | |
parent | video_core: Silent miscellaneous warnings (#2820) (diff) | |
download | yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar.gz yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar.bz2 yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar.lz yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar.xz yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.tar.zst yuzu-52a41f482f2f1e13d709176b2ddb9a135b064def.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 12 | ||||
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 2 |
2 files changed, 4 insertions, 10 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 6a5a4f5c4..f5158d219 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -249,16 +249,10 @@ void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32> parameters) { executing_macro = 0; // Lookup the macro offset - const u32 entry{(method - MacroRegistersStart) >> 1}; - const auto& search{macro_offsets.find(entry)}; - if (search == macro_offsets.end()) { - LOG_CRITICAL(HW_GPU, "macro not found for method 0x{:X}!", method); - UNREACHABLE(); - return; - } + const u32 entry = ((method - MacroRegistersStart) >> 1) % macro_positions.size(); // Execute the current macro. - macro_interpreter.Execute(search->second, std::move(parameters)); + macro_interpreter.Execute(macro_positions[entry], std::move(parameters)); } void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) { @@ -421,7 +415,7 @@ void Maxwell3D::ProcessMacroUpload(u32 data) { } void Maxwell3D::ProcessMacroBind(u32 data) { - macro_offsets[regs.macros.entry] = data; + macro_positions[regs.macros.entry++] = data; } void Maxwell3D::ProcessQueryGet() { diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 1ee982b76..0184342a0 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -1270,7 +1270,7 @@ private: MemoryManager& memory_manager; /// Start offsets of each macro in macro_memory - std::unordered_map<u32, u32> macro_offsets; + std::array<u32, 0x80> macro_positions = {}; /// Memory for macro code MacroMemory macro_memory; |