mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Pass by reference instead of copying parameters
This commit is contained in:
		
							parent
							
								
									8118ea160b
								
							
						
					
					
						commit
						3a20e74f40
					
				| @ -115,7 +115,7 @@ void Maxwell3D::InitializeRegisterDefaults() { | |||||||
|     mme_inline[MAXWELL3D_REG_INDEX(index_array.count)] = true; |     mme_inline[MAXWELL3D_REG_INDEX(index_array.count)] = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32>&& parameters) { | void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32>& parameters) { | ||||||
|     // Reset the current macro.
 |     // Reset the current macro.
 | ||||||
|     executing_macro = 0; |     executing_macro = 0; | ||||||
| 
 | 
 | ||||||
| @ -124,7 +124,7 @@ void Maxwell3D::CallMacroMethod(u32 method, std::vector<u32>&& parameters) { | |||||||
|         ((method - MacroRegistersStart) >> 1) % static_cast<u32>(macro_positions.size()); |         ((method - MacroRegistersStart) >> 1) % static_cast<u32>(macro_positions.size()); | ||||||
| 
 | 
 | ||||||
|     // Execute the current macro.
 |     // Execute the current macro.
 | ||||||
|     macro_engine->Execute(macro_positions[entry], std::move(parameters)); |     macro_engine->Execute(macro_positions[entry], parameters); | ||||||
|     if (mme_draw.current_mode != MMEDrawMode::Undefined) { |     if (mme_draw.current_mode != MMEDrawMode::Undefined) { | ||||||
|         FlushMMEInlineDraw(); |         FlushMMEInlineDraw(); | ||||||
|     } |     } | ||||||
| @ -160,7 +160,8 @@ void Maxwell3D::CallMethod(u32 method, u32 method_argument, bool is_last_call) { | |||||||
| 
 | 
 | ||||||
|         // Call the macro when there are no more parameters in the command buffer
 |         // Call the macro when there are no more parameters in the command buffer
 | ||||||
|         if (is_last_call) { |         if (is_last_call) { | ||||||
|             CallMacroMethod(executing_macro, std::move(macro_params)); |             CallMacroMethod(executing_macro, macro_params); | ||||||
|  |             macro_params.clear(); | ||||||
|         } |         } | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| @ -304,7 +305,8 @@ void Maxwell3D::CallMultiMethod(u32 method, const u32* base_start, u32 amount, | |||||||
| 
 | 
 | ||||||
|         // Call the macro when there are no more parameters in the command buffer
 |         // Call the macro when there are no more parameters in the command buffer
 | ||||||
|         if (amount == methods_pending) { |         if (amount == methods_pending) { | ||||||
|             CallMacroMethod(executing_macro, std::move(macro_params)); |             CallMacroMethod(executing_macro, macro_params); | ||||||
|  |             macro_params.clear(); | ||||||
|         } |         } | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1495,7 +1495,7 @@ private: | |||||||
|      * @param num_parameters Number of arguments |      * @param num_parameters Number of arguments | ||||||
|      * @param parameters Arguments to the method call |      * @param parameters Arguments to the method call | ||||||
|      */ |      */ | ||||||
|     void CallMacroMethod(u32 method, std::vector<u32>&& parameters); |     void CallMacroMethod(u32 method, std::vector<u32>& parameters); | ||||||
| 
 | 
 | ||||||
|     /// Handles writes to the macro uploading register.
 |     /// Handles writes to the macro uploading register.
 | ||||||
|     void ProcessMacroUpload(u32 data); |     void ProcessMacroUpload(u32 data); | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ void MacroEngine::AddCode(u32 method, u32 data) { | |||||||
|     uploaded_macro_code[method].push_back(data); |     uploaded_macro_code[method].push_back(data); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MacroEngine::Execute(u32 method, std::vector<u32> parameters) { | void MacroEngine::Execute(u32 method, std::vector<u32>& parameters) { | ||||||
|     auto compiled_macro = macro_cache.find(method); |     auto compiled_macro = macro_cache.find(method); | ||||||
|     if (compiled_macro != macro_cache.end()) { |     if (compiled_macro != macro_cache.end()) { | ||||||
|         compiled_macro->second->Execute(parameters, method); |         compiled_macro->second->Execute(parameters, method); | ||||||
|  | |||||||
| @ -113,7 +113,7 @@ public: | |||||||
|     void AddCode(u32 method, u32 data); |     void AddCode(u32 method, u32 data); | ||||||
| 
 | 
 | ||||||
|     // Compiles the macro if its not in the cache, and executes the compiled macro
 |     // Compiles the macro if its not in the cache, and executes the compiled macro
 | ||||||
|     void Execute(u32 method, std::vector<u32> parameters); |     void Execute(u32 method, std::vector<u32>& parameters); | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     virtual std::unique_ptr<CachedMacro> Compile(const std::vector<u32>& code) = 0; |     virtual std::unique_ptr<CachedMacro> Compile(const std::vector<u32>& code) = 0; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 David Marcec
						David Marcec