struct Context {
Context(glws::Context* context)
: wsContext(context),
- activeProgram(0)
+ drawable(0),
+ activeProgram(0),
+ used(false)
{
}
}
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::Drawable *currentDrawable;
-extern Context *currentContext;
+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);
extern const retrace::Entry wgl_callbacks[];
extern const retrace::Entry egl_callbacks[];
-void frame_start();
void frame_complete(trace::Call &call);
+void initContext();
+
void updateDrawable(int width, int height);
void flushQueries();
-void beginProfile(trace::Call &call);
-void endProfile(trace::Call &call);
+void beginProfile(trace::Call &call, bool isDraw);
+void endProfile(trace::Call &call, bool isDraw);
} /* namespace glretrace */