]> git.cworth.org Git - apitrace/blobdiff - retrace/retrace.hpp
Add support for basic GPU profiling of draw calls to retrace.
[apitrace] / retrace / retrace.hpp
index 9a1d5ccc2832c7e5c704b7bac9c42edf5014da13..311cef9474deb62158b236ba0ab361dda014fe8a 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "trace_model.hpp"
 #include "trace_parser.hpp"
+#include "trace_profiler.hpp"
 
 
 namespace image {
@@ -47,48 +48,7 @@ namespace retrace {
 
 
 extern trace::Parser parser;
-
-
-/**
- * Handle map.
- *
- * It is just like a regular std::map<T, T> container, but lookups of missing
- * keys return the key instead of default constructor.
- *
- * This is necessary for several GL named objects, where one can either request
- * the implementation to generate an unique name, or pick a value never used
- * before.
- *
- * XXX: In some cases, instead of returning the key, it would make more sense
- * to return an unused data value (e.g., container count).
- */
-template <class T>
-class map
-{
-private:
-    typedef std::map<T, T> base_type;
-    base_type base;
-
-public:
-
-    T & operator[] (const T &key) {
-        typename base_type::iterator it;
-        it = base.find(key);
-        if (it == base.end()) {
-            return (base[key] = key);
-        }
-        return it->second;
-    }
-    
-    const T & operator[] (const T &key) const {
-        typename base_type::const_iterator it;
-        it = base.find(key);
-        if (it == base.end()) {
-            return (base[key] = key);
-        }
-        return it->second;
-    }
-};
+extern trace::Profiler profiler;
 
 
 /**
@@ -174,16 +134,6 @@ public:
 };
 
 
-void
-addRegion(unsigned long long address, void *buffer, unsigned long long size);
-
-void
-delRegionByPointer(void *ptr);
-
-void *
-toPointer(trace::Value &value, bool bind = false);
-
-
 /**
  * Output verbosity when retracing files.
  */
@@ -208,6 +158,10 @@ extern bool dumpingState;
 extern bool doubleBuffer;
 extern bool coreProfile;
 
+extern bool profileGPU;
+
+extern unsigned frameNo;
+
 
 std::ostream &warning(trace::Call &call);