historical/toontown-classic.git/panda/include/pStatGPUTimer.h
2024-01-16 11:20:27 -06:00

62 lines
1.7 KiB
C++

/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file pStatGPUTimer.h
* @author rdb
* @date 2014-08-21
*/
#ifndef PSTATGPUTIMER_H
#define PSTATGPUTIMER_H
#include "pandabase.h"
#include "pStatTimer.h"
#include "pStatCollector.h"
#include "config_pstatclient.h"
#include "timerQueryContext.h"
class Thread;
class GraphicsStateGuardian;
/**
* This is a special type of PStatTimer that also uses a timer query on the
* GSG to measure how long a task actually takes to execute on the GPU, rather
* than how long it took for the API commands to be queued up.
*
* This class may only be used on the draw thread.
*
* At present, it tracks both the CPU time (like a regular PStatTimer does)
* and the GPU time, which is recorded using a special PStatThread.
*/
class EXPCL_PANDA_DISPLAY PStatGPUTimer : public PStatTimer {
public:
#ifdef DO_PSTATS
INLINE PStatGPUTimer(GraphicsStateGuardian *gsg,
PStatCollector &collector);
INLINE PStatGPUTimer(GraphicsStateGuardian *gsg,
PStatCollector &collector,
Thread *current_thread);
INLINE ~PStatGPUTimer();
GraphicsStateGuardian *_gsg;
private:
#else // DO_PSTATS
INLINE PStatGPUTimer(GraphicsStateGuardian *, PStatCollector &col)
: PStatTimer(col) { }
INLINE PStatGPUTimer(GraphicsStateGuardian *, PStatCollector &col, Thread *)
: PStatTimer(col) { }
INLINE ~PStatGPUTimer() { }
#endif // DO_PSTATS
};
#include "pStatGPUTimer.I"
#endif