X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fretrace.hpp;h=228c81352e979046ece2e8040d2f885ef7b27051;hb=42b89fc9a180e56dbe55a9816904c84aacb555ea;hp=56cebc6195135dfcd7f7e0bf51158f1bf0ede755;hpb=e7cb2b98575d5ff3801bd3527a648e0dbfdebdad;p=apitrace diff --git a/retrace/retrace.hpp b/retrace/retrace.hpp index 56cebc6..228c813 100644 --- a/retrace/retrace.hpp +++ b/retrace/retrace.hpp @@ -60,6 +60,7 @@ private: uintptr_t next; public: + inline ScopedAllocator() : next(0) { } @@ -81,21 +82,14 @@ public: return static_cast(&buf[1]); } - template< class T > - inline T * - alloc(size_t n = 1) { - return static_cast(alloc(sizeof(T) * n)); - } - /** * Allocate an array with the same dimensions as the specified value. */ - template< class T > - inline T * - alloc(const trace::Value *value) { + inline void * + alloc(const trace::Value *value, size_t size) { const trace::Array *array = dynamic_cast(value); if (array) { - return alloc(array->size()); + return alloc(array->size() * size); } const trace::Null *null = dynamic_cast(value); if (null) { @@ -158,6 +152,18 @@ extern bool profilingPixelsDrawn; extern bool dumpingState; +enum Driver { + DRIVER_DEFAULT, + DRIVER_HARDWARE, // force hardware + DRIVER_SOFTWARE, + DRIVER_REFERENCE, + DRIVER_NULL, + DRIVER_MODULE, +}; + +extern Driver driver; +extern const char *driverModule; + extern bool doubleBuffer; extern bool coreProfile; @@ -211,6 +217,24 @@ public: }; +class Dumper +{ +public: + virtual image::Image * + getSnapshot(void) { + return NULL; + } + + virtual bool + dumpState(std::ostream &os) { + return false; + } +}; + + +extern Dumper *dumper; + + void setUp(void); @@ -220,11 +244,7 @@ addCallbacks(retrace::Retracer &retracer); void frameComplete(trace::Call &call); -image::Image * -getSnapshot(void); -bool -dumpState(std::ostream &os); void flushRendering(void);