From e158951695f6ed5626adc0685431a78c5a13867a Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 10 May 2022 17:07:21 -0400 Subject: video_core/macro: clear code on upload address assignment --- src/video_core/macro/macro.cpp | 5 +++++ src/video_core/macro/macro.h | 3 +++ 2 files changed, 8 insertions(+) (limited to 'src/video_core/macro') diff --git a/src/video_core/macro/macro.cpp b/src/video_core/macro/macro.cpp index 86393c49c..e7279efcd 100644 --- a/src/video_core/macro/macro.cpp +++ b/src/video_core/macro/macro.cpp @@ -45,6 +45,11 @@ void MacroEngine::AddCode(u32 method, u32 data) { uploaded_macro_code[method].push_back(data); } +void MacroEngine::ClearCode(u32 method) { + macro_cache.erase(method); + uploaded_macro_code.erase(method); +} + void MacroEngine::Execute(u32 method, const std::vector& parameters) { auto compiled_macro = macro_cache.find(method); if (compiled_macro != macro_cache.end()) { diff --git a/src/video_core/macro/macro.h b/src/video_core/macro/macro.h index 7e12c16dc..07d97ba39 100644 --- a/src/video_core/macro/macro.h +++ b/src/video_core/macro/macro.h @@ -117,6 +117,9 @@ public: // Store the uploaded macro code to compile them when they're called. void AddCode(u32 method, u32 data); + // Clear the code associated with a method. + void ClearCode(u32 method); + // Compiles the macro if its not in the cache, and executes the compiled macro void Execute(u32 method, const std::vector& parameters); -- cgit v1.2.3