PxProfiler.h
Go to the documentation of this file.
1 //
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions
4 // are met:
5 // * Redistributions of source code must retain the above copyright
6 // notice, this list of conditions and the following disclaimer.
7 // * Redistributions in binary form must reproduce the above copyright
8 // notice, this list of conditions and the following disclaimer in the
9 // documentation and/or other materials provided with the distribution.
10 // * Neither the name of NVIDIA CORPORATION nor the names of its
11 // contributors may be used to endorse or promote products derived
12 // from this software without specific prior written permission.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
15 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 //
26 // Copyright (c) 2008-2021 NVIDIA Corporation. All rights reserved.
27 
28 #ifndef PXFOUNDATION_PXPROFILER_H
29 #define PXFOUNDATION_PXPROFILER_H
30 
31 #include "foundation/Px.h"
32 
33 namespace physx
34 {
35 
41 {
42 protected:
43  virtual ~PxProfilerCallback() {}
44 
45 public:
46  /**************************************************************************************************************************
47  Instrumented profiling events
48  ***************************************************************************************************************************/
49 
57  virtual void* zoneStart(const char* eventName, bool detached, uint64_t contextId) = 0;
58 
68  virtual void zoneEnd(void* profilerData, const char* eventName, bool detached, uint64_t contextId) = 0;
69 };
70 
72 {
73  public:
74  PX_FORCE_INLINE PxProfileScoped(PxProfilerCallback* callback, const char* eventName, bool detached, uint64_t contextId) : mCallback(callback), mProfilerData(NULL)
75  {
76  if(mCallback)
77  {
78  mEventName = eventName;
79  mContextId = contextId;
80  mDetached = detached;
81  mProfilerData = mCallback->zoneStart(eventName, detached, contextId);
82  }
83  }
84 
86  {
87  if(mCallback)
89  }
91  const char* mEventName;
93  uint64_t mContextId;
94  bool mDetached;
95 };
96 
97 } // end of physx namespace
98 
99 #endif // PXFOUNDATION_PXPROFILER_H
Definition: GuContactBuffer.h:37
PxProfilerCallback * mCallback
Definition: PxProfiler.h:90
uint64_t mContextId
Definition: PxProfiler.h:93
void * mProfilerData
Definition: PxProfiler.h:92
#define PX_FORCE_INLINE
Definition: PxPreprocessor.h:351
PX_FORCE_INLINE PxProfileScoped(PxProfilerCallback *callback, const char *eventName, bool detached, uint64_t contextId)
Definition: PxProfiler.h:74
const char * mEventName
Definition: PxProfiler.h:91
Definition: PxProfiler.h:71
virtual void zoneEnd(void *profilerData, const char *eventName, bool detached, uint64_t contextId)=0
Mark the end of a nested profile block.
bool mDetached
Definition: PxProfiler.h:94
The pure virtual callback interface for general purpose instrumentation and profiling of GameWorks mo...
Definition: PxProfiler.h:40
PX_FORCE_INLINE ~PxProfileScoped()
Definition: PxProfiler.h:85
virtual void * zoneStart(const char *eventName, bool detached, uint64_t contextId)=0
Mark the beginning of a nested profile block.
virtual ~PxProfilerCallback()
Definition: PxProfiler.h:43