| 
									
										
										
										
											2014-02-10 13:54:46 -05:00
										 |  |  | #pragma once
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-17 05:18:15 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | enum PerfQueryType | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	PQ_ZCOMP_INPUT_ZCOMPLOC = 0, | 
					
						
							|  |  |  | 	PQ_ZCOMP_OUTPUT_ZCOMPLOC, | 
					
						
							|  |  |  | 	PQ_ZCOMP_INPUT, | 
					
						
							|  |  |  | 	PQ_ZCOMP_OUTPUT, | 
					
						
							|  |  |  | 	PQ_BLEND_INPUT, | 
					
						
							|  |  |  | 	PQ_EFB_COPY_CLOCKS, | 
					
						
							|  |  |  | 	PQ_NUM_MEMBERS | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum PerfQueryGroup | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	PQG_ZCOMP_ZCOMPLOC, | 
					
						
							|  |  |  | 	PQG_ZCOMP, | 
					
						
							|  |  |  | 	PQG_EFB_COPY_CLOCKS, | 
					
						
							|  |  |  | 	PQG_NUM_MEMBERS, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PerfQueryBase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2013-08-11 17:08:12 +02:00
										 |  |  | 	PerfQueryBase() {} | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 	virtual ~PerfQueryBase() {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-11 17:08:12 +02:00
										 |  |  | 	// Checks if performance queries are enabled in the gameini configuration.
 | 
					
						
							| 
									
										
										
										
											2014-01-09 18:37:59 +01:00
										 |  |  | 	// NOTE: Called from CPU+GPU thread
 | 
					
						
							| 
									
										
										
										
											2014-02-04 20:16:03 +01:00
										 |  |  | 	static bool ShouldEmulate(); | 
					
						
							| 
									
										
										
										
											2013-08-11 17:08:12 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 	// Begin querying the specified value for the following host GPU commands
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 	virtual void EnableQuery(PerfQueryGroup type) {} | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Stop querying the specified value for the following host GPU commands
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 	virtual void DisableQuery(PerfQueryGroup type) {} | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Reset query counters to zero and drop any pending queries
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 	virtual void ResetQuery() {} | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Return the measured value for the specified query type
 | 
					
						
							|  |  |  | 	// NOTE: Called from CPU thread
 | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | 	virtual u32 GetQueryResult(PerfQueryType type) { return 0; } | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Request the value of any pending queries - causes a pipeline flush and thus should be used carefully!
 | 
					
						
							| 
									
										
										
										
											2013-02-16 17:50:40 -06:00
										 |  |  | 	virtual void FlushResults() {} | 
					
						
							| 
									
										
										
										
											2013-03-01 23:02:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// True if there are no further pending query results
 | 
					
						
							|  |  |  | 	// NOTE: Called from CPU thread
 | 
					
						
							| 
									
										
										
										
											2013-02-16 17:50:40 -06:00
										 |  |  | 	virtual bool IsFlushed() const { return true; } | 
					
						
							| 
									
										
										
										
											2012-06-17 13:58:29 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern PerfQueryBase* g_perf_query; |