]> git.cworth.org Git - apitrace/blobdiff - retrace/glretrace.hpp
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / retrace / glretrace.hpp
index 100d5a8991870cd1ce9ead988a103467c3f7ebab..7441b56938e22481e0110b181b74b7de81a55c98 100644 (file)
 
 namespace glretrace {
 
+struct Context {
+    Context(glws::Context* context)
+        : wsContext(context),
+          drawable(0),
+          activeProgram(0),
+          used(false)
+    {
+    }
 
+    ~Context();
+
+    glws::Context* wsContext;
+
+    // Bound drawable
+    glws::Drawable *drawable;
+
+    GLuint activeProgram;
+    bool used;
+    
+    // Context must be current
+    inline bool
+    hasExtension(const char *extension) const {
+        return wsContext->hasExtension(extension);
+    }
+};
+
+extern bool insideList;
 extern bool insideGlBeginEnd;
-extern glws::Profile defaultProfile;
-extern glws::Visual *visual[glws::PROFILE_MAX];
-extern glws::Drawable *drawable;
-extern glws::Context *context;
+extern bool supportsARBShaderObjects;
+
+Context *
+getCurrentContext(void);
+
+
+int
+parseAttrib(const trace::Value *attribs, int param, int default_);
+
+
+glws::Drawable *
+createDrawable(glws::Profile profile);
+
+glws::Drawable *
+createDrawable(void);
+
+glws::Drawable *
+createPbuffer(int width, int height);
+
+Context *
+createContext(Context *shareContext, glws::Profile profile);
+
+Context *
+createContext(Context *shareContext = 0);
+
+bool
+makeCurrent(trace::Call &call, glws::Drawable *drawable, Context *context);
+
 
 void
 checkGlError(trace::Call &call);
@@ -49,9 +99,15 @@ extern const retrace::Entry wgl_callbacks[];
 extern const retrace::Entry egl_callbacks[];
 
 void frame_complete(trace::Call &call);
+void initContext();
+
 
 void updateDrawable(int width, int height);
 
+void flushQueries();
+void beginProfile(trace::Call &call, bool isDraw);
+void endProfile(trace::Call &call, bool isDraw);
+
 } /* namespace glretrace */