mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #2318 from yuriks/trace-opt
VideoCore: Inline IsPicaTracing
This commit is contained in:
		
						commit
						3a1eaf2efc
					
				
					 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); |     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]}); |         DebugUtils::OnPicaRegWrite({(u16)id, (u16)mask, regs[id]}); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     if (g_debug_context) |     if (g_debug_context) | ||||||
|         g_debug_context->OnEvent(DebugContext::Event::PicaCommandLoaded, |         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::unique_ptr<PicaTrace> pica_trace; | ||||||
| static std::mutex pica_trace_mutex; | static std::mutex pica_trace_mutex; | ||||||
| static int is_pica_tracing = false; | bool g_is_pica_tracing = false; | ||||||
| 
 | 
 | ||||||
| void StartPicaTracing() { | void StartPicaTracing() { | ||||||
|     if (is_pica_tracing) { |     if (g_is_pica_tracing) { | ||||||
|         LOG_WARNING(HW_GPU, "StartPicaTracing called even though tracing already running!"); |         LOG_WARNING(HW_GPU, "StartPicaTracing called even though tracing already running!"); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  | @ -287,34 +287,26 @@ void StartPicaTracing() { | ||||||
|     std::lock_guard<std::mutex> lock(pica_trace_mutex); |     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||||
|     pica_trace = std::make_unique<PicaTrace>(); |     pica_trace = std::make_unique<PicaTrace>(); | ||||||
| 
 | 
 | ||||||
|     is_pica_tracing = true; |     g_is_pica_tracing = true; | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool IsPicaTracing() { |  | ||||||
|     return is_pica_tracing != 0; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void OnPicaRegWrite(PicaTrace::Write write) { | 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); |     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||||
| 
 | 
 | ||||||
|     if (!is_pica_tracing) |     if (!g_is_pica_tracing) | ||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     pica_trace->writes.push_back(write); |     pica_trace->writes.push_back(write); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::unique_ptr<PicaTrace> FinishPicaTracing() { | 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!"); |         LOG_WARNING(HW_GPU, "FinishPicaTracing called even though tracing isn't running!"); | ||||||
|         return {}; |         return {}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // signalize that no further tracing should be performed
 |     // signalize that no further tracing should be performed
 | ||||||
|     is_pica_tracing = false; |     g_is_pica_tracing = false; | ||||||
| 
 | 
 | ||||||
|     // Wait until running tracing is finished
 |     // Wait until running tracing is finished
 | ||||||
|     std::lock_guard<std::mutex> lock(pica_trace_mutex); |     std::lock_guard<std::mutex> lock(pica_trace_mutex); | ||||||
|  |  | ||||||
|  | @ -196,8 +196,12 @@ struct PicaTrace { | ||||||
|     std::vector<Write> writes; |     std::vector<Write> writes; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | extern bool g_is_pica_tracing; | ||||||
|  | 
 | ||||||
| void StartPicaTracing(); | void StartPicaTracing(); | ||||||
| bool IsPicaTracing(); | inline bool IsPicaTracing() { | ||||||
|  |     return g_is_pica_tracing; | ||||||
|  | } | ||||||
| void OnPicaRegWrite(PicaTrace::Write write); | void OnPicaRegWrite(PicaTrace::Write write); | ||||||
| std::unique_ptr<PicaTrace> FinishPicaTracing(); | std::unique_ptr<PicaTrace> FinishPicaTracing(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue