123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2012 Dolphin Emulator Project
- // Licensed under GPLv2+
- // Refer to the license.txt file included.
- #pragma once
- #include "Common/CommonTypes.h"
- 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:
- PerfQueryBase()
- : m_query_count(0)
- {
- }
- virtual ~PerfQueryBase() {}
- // Checks if performance queries are enabled in the gameini configuration.
- // NOTE: Called from CPU+GPU thread
- static bool ShouldEmulate();
- // Begin querying the specified value for the following host GPU commands
- virtual void EnableQuery(PerfQueryGroup type) {}
- // Stop querying the specified value for the following host GPU commands
- virtual void DisableQuery(PerfQueryGroup type) {}
- // Reset query counters to zero and drop any pending queries
- virtual void ResetQuery() {}
- // Return the measured value for the specified query type
- // NOTE: Called from CPU thread
- virtual u32 GetQueryResult(PerfQueryType type) { return 0; }
- // Request the value of any pending queries - causes a pipeline flush and thus should be used carefully!
- virtual void FlushResults() {}
- // True if there are no further pending query results
- // NOTE: Called from CPU thread
- virtual bool IsFlushed() const { return true; }
- protected:
- // TODO: sloppy
- volatile u32 m_query_count;
- volatile u32 m_results[PQG_NUM_MEMBERS];
- };
- extern PerfQueryBase* g_perf_query;
|