Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet2/src/LinearMath/btQuickprof.h')
-rw-r--r--extern/bullet2/src/LinearMath/btQuickprof.h232
1 files changed, 112 insertions, 120 deletions
diff --git a/extern/bullet2/src/LinearMath/btQuickprof.h b/extern/bullet2/src/LinearMath/btQuickprof.h
index 362f62d6d40..990d401d507 100644
--- a/extern/bullet2/src/LinearMath/btQuickprof.h
+++ b/extern/bullet2/src/LinearMath/btQuickprof.h
@@ -7,26 +7,13 @@
**
***************************************************************************************************/
-// Credits: The Clock class was inspired by the Timer classes in
+// Credits: The Clock class was inspired by the Timer classes in
// Ogre (www.ogre3d.org).
-
-
#ifndef BT_QUICK_PROF_H
#define BT_QUICK_PROF_H
-//To disable built-in profiling, please comment out next line
-//#define BT_NO_PROFILE 1
-#ifndef BT_NO_PROFILE
-#include <stdio.h>//@todo remove this, backwards compatibility
#include "btScalar.h"
-#include "btAlignedAllocator.h"
-#include <new>
-
-
-
-
-
#define USE_BT_CLOCK 1
#ifdef USE_BT_CLOCK
@@ -45,62 +32,88 @@ public:
/// Resets the initial reference time.
void reset();
- /// Returns the time in ms since the last call to reset or since
+ /// Returns the time in ms since the last call to reset or since
/// the btClock was created.
- unsigned long int getTimeMilliseconds();
+ unsigned long long int getTimeMilliseconds();
- /// Returns the time in us since the last call to reset or since
+ /// Returns the time in us since the last call to reset or since
/// the Clock was created.
- unsigned long int getTimeMicroseconds();
-
- /// Returns the time in s since the last call to reset or since
+ unsigned long long int getTimeMicroseconds();
+
+ unsigned long long int getTimeNanoseconds();
+
+ /// Returns the time in s since the last call to reset or since
/// the Clock was created.
btScalar getTimeSeconds();
-
+
private:
struct btClockData* m_data;
};
-#endif //USE_BT_CLOCK
+#endif //USE_BT_CLOCK
+typedef void(btEnterProfileZoneFunc)(const char* msg);
+typedef void(btLeaveProfileZoneFunc)();
+btEnterProfileZoneFunc* btGetCurrentEnterProfileZoneFunc();
+btLeaveProfileZoneFunc* btGetCurrentLeaveProfileZoneFunc();
+void btSetCustomEnterProfileZoneFunc(btEnterProfileZoneFunc* enterFunc);
+void btSetCustomLeaveProfileZoneFunc(btLeaveProfileZoneFunc* leaveFunc);
-///A node in the Profile Hierarchy Tree
-class CProfileNode {
+#ifndef BT_ENABLE_PROFILE
+#define BT_NO_PROFILE 1
+#endif //BT_NO_PROFILE
-public:
- CProfileNode( const char * name, CProfileNode * parent );
- ~CProfileNode( void );
+const unsigned int BT_QUICKPROF_MAX_THREAD_COUNT = 64;
+
+//btQuickprofGetCurrentThreadIndex will return -1 if thread index cannot be determined,
+//otherwise returns thread index in range [0..maxThreads]
+unsigned int btQuickprofGetCurrentThreadIndex2();
- CProfileNode * Get_Sub_Node( const char * name );
+#ifndef BT_NO_PROFILE
- CProfileNode * Get_Parent( void ) { return Parent; }
- CProfileNode * Get_Sibling( void ) { return Sibling; }
- CProfileNode * Get_Child( void ) { return Child; }
- void CleanupMemory();
- void Reset( void );
- void Call( void );
- bool Return( void );
+#include <stdio.h> //@todo remove this, backwards compatibility
- const char * Get_Name( void ) { return Name; }
- int Get_Total_Calls( void ) { return TotalCalls; }
- float Get_Total_Time( void ) { return TotalTime; }
- void* GetUserPointer() const {return m_userPtr;}
- void SetUserPointer(void* ptr) { m_userPtr = ptr;}
-protected:
+#include "btAlignedAllocator.h"
+#include <new>
+
+///A node in the Profile Hierarchy Tree
+class CProfileNode
+{
+public:
+ CProfileNode(const char* name, CProfileNode* parent);
+ ~CProfileNode(void);
+
+ CProfileNode* Get_Sub_Node(const char* name);
+
+ CProfileNode* Get_Parent(void) { return Parent; }
+ CProfileNode* Get_Sibling(void) { return Sibling; }
+ CProfileNode* Get_Child(void) { return Child; }
+
+ void CleanupMemory();
+ void Reset(void);
+ void Call(void);
+ bool Return(void);
- const char * Name;
- int TotalCalls;
- float TotalTime;
- unsigned long int StartTime;
- int RecursionCounter;
+ const char* Get_Name(void) { return Name; }
+ int Get_Total_Calls(void) { return TotalCalls; }
+ float Get_Total_Time(void) { return TotalTime; }
+ void* GetUserPointer() const { return m_userPtr; }
+ void SetUserPointer(void* ptr) { m_userPtr = ptr; }
- CProfileNode * Parent;
- CProfileNode * Child;
- CProfileNode * Sibling;
- void* m_userPtr;
+protected:
+ const char* Name;
+ int TotalCalls;
+ float TotalTime;
+ unsigned long int StartTime;
+ int RecursionCounter;
+
+ CProfileNode* Parent;
+ CProfileNode* Child;
+ CProfileNode* Sibling;
+ void* m_userPtr;
};
///An iterator to navigate through the tree
@@ -108,101 +121,80 @@ class CProfileIterator
{
public:
// Access all the children of the current parent
- void First(void);
- void Next(void);
- bool Is_Done(void);
- bool Is_Root(void) { return (CurrentParent->Get_Parent() == 0); }
+ void First(void);
+ void Next(void);
+ bool Is_Done(void);
+ bool Is_Root(void) { return (CurrentParent->Get_Parent() == 0); }
- void Enter_Child( int index ); // Make the given child the new parent
- void Enter_Largest_Child( void ); // Make the largest child the new parent
- void Enter_Parent( void ); // Make the current parent's parent the new parent
+ void Enter_Child(int index); // Make the given child the new parent
+ void Enter_Largest_Child(void); // Make the largest child the new parent
+ void Enter_Parent(void); // Make the current parent's parent the new parent
// Access the current child
- const char * Get_Current_Name( void ) { return CurrentChild->Get_Name(); }
- int Get_Current_Total_Calls( void ) { return CurrentChild->Get_Total_Calls(); }
- float Get_Current_Total_Time( void ) { return CurrentChild->Get_Total_Time(); }
+ const char* Get_Current_Name(void) { return CurrentChild->Get_Name(); }
+ int Get_Current_Total_Calls(void) { return CurrentChild->Get_Total_Calls(); }
+ float Get_Current_Total_Time(void) { return CurrentChild->Get_Total_Time(); }
- void* Get_Current_UserPointer( void ) { return CurrentChild->GetUserPointer(); }
- void Set_Current_UserPointer(void* ptr) {CurrentChild->SetUserPointer(ptr);}
+ void* Get_Current_UserPointer(void) { return CurrentChild->GetUserPointer(); }
+ void Set_Current_UserPointer(void* ptr) { CurrentChild->SetUserPointer(ptr); }
// Access the current parent
- const char * Get_Current_Parent_Name( void ) { return CurrentParent->Get_Name(); }
- int Get_Current_Parent_Total_Calls( void ) { return CurrentParent->Get_Total_Calls(); }
- float Get_Current_Parent_Total_Time( void ) { return CurrentParent->Get_Total_Time(); }
-
-
+ const char* Get_Current_Parent_Name(void) { return CurrentParent->Get_Name(); }
+ int Get_Current_Parent_Total_Calls(void) { return CurrentParent->Get_Total_Calls(); }
+ float Get_Current_Parent_Total_Time(void) { return CurrentParent->Get_Total_Time(); }
protected:
+ CProfileNode* CurrentParent;
+ CProfileNode* CurrentChild;
- CProfileNode * CurrentParent;
- CProfileNode * CurrentChild;
-
-
- CProfileIterator( CProfileNode * start );
- friend class CProfileManager;
+ CProfileIterator(CProfileNode* start);
+ friend class CProfileManager;
};
-
///The Manager for the Profile system
-class CProfileManager {
+class CProfileManager
+{
public:
- static void Start_Profile( const char * name );
- static void Stop_Profile( void );
+ static void Start_Profile(const char* name);
+ static void Stop_Profile(void);
- static void CleanupMemory(void)
- {
- Root.CleanupMemory();
- }
+ static void CleanupMemory(void);
+ // {
+ // Root.CleanupMemory();
+ // }
- static void Reset( void );
- static void Increment_Frame_Counter( void );
- static int Get_Frame_Count_Since_Reset( void ) { return FrameCounter; }
- static float Get_Time_Since_Reset( void );
+ static void Reset(void);
+ static void Increment_Frame_Counter(void);
+ static int Get_Frame_Count_Since_Reset(void) { return FrameCounter; }
+ static float Get_Time_Since_Reset(void);
- static CProfileIterator * Get_Iterator( void )
- {
-
- return new CProfileIterator( &Root );
- }
- static void Release_Iterator( CProfileIterator * iterator ) { delete ( iterator); }
+ static CProfileIterator* Get_Iterator(void);
+ // {
+ //
+ // return new CProfileIterator( &Root );
+ // }
+ static void Release_Iterator(CProfileIterator* iterator) { delete (iterator); }
- static void dumpRecursive(CProfileIterator* profileIterator, int spacing);
+ static void dumpRecursive(CProfileIterator* profileIterator, int spacing);
- static void dumpAll();
+ static void dumpAll();
private:
- static CProfileNode Root;
- static CProfileNode * CurrentNode;
- static int FrameCounter;
- static unsigned long int ResetTime;
+ static int FrameCounter;
+ static unsigned long int ResetTime;
};
+#endif //#ifndef BT_NO_PROFILE
///ProfileSampleClass is a simple way to profile a function's scope
///Use the BT_PROFILE macro at the start of scope to time
-class CProfileSample {
+class CProfileSample
+{
public:
- CProfileSample( const char * name )
- {
- CProfileManager::Start_Profile( name );
- }
-
- ~CProfileSample( void )
- {
- CProfileManager::Stop_Profile();
- }
-};
-
-
-#define BT_PROFILE( name ) CProfileSample __profile( name )
-
-#else
+ CProfileSample(const char* name);
-#define BT_PROFILE( name )
-
-#endif //#ifndef BT_NO_PROFILE
-
-
-
-#endif //BT_QUICK_PROF_H
+ ~CProfileSample(void);
+};
+#define BT_PROFILE(name) CProfileSample __profile(name)
+#endif //BT_QUICK_PROF_H