mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	VideoCore: Inline IsPicaTracing
Speeds up ALBW main menu slightly (~3%)
This commit is contained in:
		
							parent
							
								
									ec9130de8d
								
							
						
					
					
						commit
						945f554b84
					
				
					 3 changed files with 15 additions and 16 deletions
				
			
		|  | @ -59,7 +59,10 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) { | |||
| 
 | ||||
|     regs[id] = (old_value & ~write_mask) | (value & write_mask); | ||||
| 
 | ||||
|     // Double check for is_pica_tracing to avoid call overhead
 | ||||
|     if (DebugUtils::IsPicaTracing()) { | ||||
|         DebugUtils::OnPicaRegWrite({(u16)id, (u16)mask, regs[id]}); | ||||
|     } | ||||
| 
 | ||||
|     if (g_debug_context) | ||||
|         g_debug_context->OnEvent(DebugContext::Event::PicaCommandLoaded, | ||||
|  |  | |||
|  | @ -276,10 +276,10 @@ void DumpShader(const std::string& filename, const Regs::ShaderConfig& config, | |||
| 
 | ||||
| static std::unique_ptr<PicaTrace> pica_trace; | ||||
| static std::mutex pica_trace_mutex; | ||||
| static int is_pica_tracing = false; | ||||
| bool g_is_pica_tracing = false; | ||||
| 
 | ||||
| void StartPicaTracing() { | ||||
|     if (is_pica_tracing) { | ||||
|     if (g_is_pica_tracing) { | ||||
|         LOG_WARNING(HW_GPU, "StartPicaTracing called even though tracing already running!"); | ||||
|         return; | ||||
|     } | ||||
|  | @ -287,34 +287,26 @@ void StartPicaTracing() { | |||
|     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||
|     pica_trace = std::make_unique<PicaTrace>(); | ||||
| 
 | ||||
|     is_pica_tracing = true; | ||||
| } | ||||
| 
 | ||||
| bool IsPicaTracing() { | ||||
|     return is_pica_tracing != 0; | ||||
|     g_is_pica_tracing = true; | ||||
| } | ||||
| 
 | ||||
| void OnPicaRegWrite(PicaTrace::Write write) { | ||||
|     // Double check for is_pica_tracing to avoid pointless locking overhead
 | ||||
|     if (!is_pica_tracing) | ||||
|         return; | ||||
| 
 | ||||
|     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||
| 
 | ||||
|     if (!is_pica_tracing) | ||||
|     if (!g_is_pica_tracing) | ||||
|         return; | ||||
| 
 | ||||
|     pica_trace->writes.push_back(write); | ||||
| } | ||||
| 
 | ||||
| std::unique_ptr<PicaTrace> FinishPicaTracing() { | ||||
|     if (!is_pica_tracing) { | ||||
|     if (!g_is_pica_tracing) { | ||||
|         LOG_WARNING(HW_GPU, "FinishPicaTracing called even though tracing isn't running!"); | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     // signalize that no further tracing should be performed
 | ||||
|     is_pica_tracing = false; | ||||
|     g_is_pica_tracing = false; | ||||
| 
 | ||||
|     // Wait until running tracing is finished
 | ||||
|     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||
|  |  | |||
|  | @ -196,8 +196,12 @@ struct PicaTrace { | |||
|     std::vector<Write> writes; | ||||
| }; | ||||
| 
 | ||||
| extern bool g_is_pica_tracing; | ||||
| 
 | ||||
| void StartPicaTracing(); | ||||
| bool IsPicaTracing(); | ||||
| inline bool IsPicaTracing() { | ||||
|     return g_is_pica_tracing; | ||||
| } | ||||
| void OnPicaRegWrite(PicaTrace::Write write); | ||||
| std::unique_ptr<PicaTrace> FinishPicaTracing(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue