12 #ifndef hifi_gpu_Query_h
13 #define hifi_gpu_Query_h
20 #include <SimpleMovingAverage.h>
33 using Handler = std::function<void(
const Query&)>;
39 Query(
const Handler& returnHandler,
const std::string& name =
"gpu::query");
82 friend class Serializer;
83 friend class Deserializer;
86 typedef std::shared_ptr<Query> QueryPointer;
87 typedef std::vector< QueryPointer > Queries;
104 void begin(gpu::Batch& batch);
111 void end(gpu::Batch& batch);
157 using RangeTimerPointer = std::shared_ptr<RangeTimer>;
Definition: gpu/src/gpu/Forward.h:134
double getBatchElapsedTime() const
Definition: Query.cpp:31
Handler _returnHandler
Function to call when query results are available.
Definition: Query.h:71
uint64_t _nsecBatchElapsedTime
Batch time elapsed in nanoseconds.
Definition: Query.h:80
const GPUObjectPointer gpuObject
Only for gpu::Context.
Definition: Query.h:59
Query(const Handler &returnHandler, const std::string &name="gpu::query")
Definition: Query.cpp:18
void triggerReturnHandler(uint64_t queryResult, uint64_t batchElapsedTime)
Saves query results and calls the callback function.
Definition: Query.cpp:35
double getGPUElapsedTime() const
Definition: Query.cpp:28
const std::string _name
Name of the query.
Definition: Query.h:74
const std::string & getName() const
Definition: Query.h:56
uint64_t _queryResult
Query result - GPU elapsed time in nanoseconds.
Definition: Query.h:77
double getGPUAverage() const
Definition: Query.cpp:76
int _tailIndex
Definition: Query.h:145
void end(gpu::Batch &batch)
Adds a batch command to get query.
Definition: Query.cpp:61
const std::string _name
Name of the range timer.
Definition: Query.h:135
const std::string & name() const
Definition: Query.h:127
MovingAverage< double, QUERY_QUEUE_SIZE *2 > _movingAverageGPU
Average of the time measured on GPU in millseconds.
Definition: Query.h:148
int rangeIndex(int index) const
Calculates index in the circular buffer where the queries are stored.
Definition: Query.h:154
void begin(gpu::Batch &batch)
Adds a batch command to begin query.
Definition: Query.cpp:57
gpu::Queries _timerQueries
Query objects used for this range timer.
Definition: Query.h:138
MovingAverage< double, QUERY_QUEUE_SIZE *2 > _movingAverageBatch
Average of the time between do_beginQuery and do_endQuery measured when the batch is executed.
Definition: Query.h:151
static const int QUERY_QUEUE_SIZE
Number of query objects in this range timer.
Definition: Query.h:132
double getBatchAverage() const
Definition: Query.cpp:80
int _headIndex
Used for circular buffer. Index of the last query that was executed can be calculated from this using...
Definition: Query.h:141