]> git.cworth.org Git - apitrace/commitdiff
Create a Visual for each Profile.
authorAlexandros Frantzis <alexandros.frantzis@linaro.org>
Mon, 5 Dec 2011 09:35:35 +0000 (11:35 +0200)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 8 Dec 2011 23:27:10 +0000 (23:27 +0000)
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
glretrace.hpp
glretrace_cgl.cpp
glretrace_egl.cpp
glretrace_glx.cpp
glretrace_main.cpp
glretrace_wgl.cpp
glws.hpp
glws_egl_xlib.cpp

index 15035b2108143ba4d977c7932ed38f39afe0aa9a..41e2997c1482c126ae9b9c9f40180bb4f09a5fba 100644 (file)
@@ -38,7 +38,7 @@ extern bool double_buffer;
 extern bool insideGlBeginEnd;
 extern trace::Parser parser;
 extern glws::Profile defaultProfile;
-extern glws::Visual *visual;
+extern glws::Visual *visual[glws::PROFILE_MAX];
 extern glws::Drawable *drawable;
 extern glws::Context *context;
 
index 0c5aa7355d9419b1e029efced880be173e3ff8d6..63b94b466d6f2804a8663f3effb67f405eeabeb4 100644 (file)
@@ -53,7 +53,7 @@ getDrawable(unsigned long drawable_id) {
     DrawableMap::const_iterator it;
     it = drawable_map.find(drawable_id);
     if (it == drawable_map.end()) {
-        return (drawable_map[drawable_id] = glws::createDrawable(visual));
+        return (drawable_map[drawable_id] = glws::createDrawable(visual[glretrace::defaultProfile]));
     }
 
     return it->second;
@@ -70,7 +70,7 @@ getContext(unsigned long long ctx) {
     it = context_map.find(ctx);
     if (it == context_map.end()) {
         glws::Context *context;
-        context_map[ctx] = context = glws::createContext(visual, sharedContext, glretrace::defaultProfile);
+        context_map[ctx] = context = glws::createContext(visual[glretrace::defaultProfile], sharedContext, glretrace::defaultProfile);
         if (!sharedContext) {
             sharedContext = context;
         }
index 4e549a3446401111d6a65d7b94a838ed65683b8a..ce037522a6d67ad3ee458b4359d3e8c326654db6 100644 (file)
@@ -78,7 +78,7 @@ getContext(unsigned long long context_ptr) {
 static void retrace_eglCreateWindowSurface(trace::Call &call) {
     unsigned long long orig_surface = call.ret->toUIntPtr();
 
-    glws::Drawable *drawable = glws::createDrawable(glretrace::visual);
+    glws::Drawable *drawable = glws::createDrawable(glretrace::visual[glws::PROFILE_COMPAT]);
     drawable_map[orig_surface] = drawable;
 }
 
@@ -126,7 +126,7 @@ static void retrace_eglCreateContext(trace::Call &call) {
     }
 
 
-    glws::Context *context = glws::createContext(glretrace::visual, share_context, profile);
+    glws::Context *context = glws::createContext(glretrace::visual[glws::PROFILE_COMPAT], share_context, profile);
     if (!context) {
         const char *name;
         switch (profile) {
index 749907ac7a4f520e416a877b6f0608575d5b6bc9..a3b80f264a9c1c4401c953c18da155b1d0a9cb32 100644 (file)
@@ -47,7 +47,7 @@ getDrawable(unsigned long drawable_id) {
     DrawableMap::const_iterator it;
     it = drawable_map.find(drawable_id);
     if (it == drawable_map.end()) {
-        return (drawable_map[drawable_id] = glws::createDrawable(visual));
+        return (drawable_map[drawable_id] = glws::createDrawable(visual[glretrace::defaultProfile]));
     }
 
     return it->second;
@@ -62,7 +62,7 @@ getContext(unsigned long long context_ptr) {
     ContextMap::const_iterator it;
     it = context_map.find(context_ptr);
     if (it == context_map.end()) {
-        return (context_map[context_ptr] = glws::createContext(visual, NULL, glretrace::defaultProfile));
+        return (context_map[context_ptr] = glws::createContext(visual[glretrace::defaultProfile], NULL, glretrace::defaultProfile));
     }
 
     return it->second;
@@ -72,7 +72,7 @@ static void retrace_glXCreateContext(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
 
-    glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
@@ -80,7 +80,7 @@ static void retrace_glXCreateContextAttribsARB(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(2).toUIntPtr());
 
-    glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
@@ -134,7 +134,7 @@ static void retrace_glXCreateNewContext(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
     glws::Context *share_context = getContext(call.arg(3).toUIntPtr());
 
-    glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
index fdc52ab740beb5283324400587f1e61b2b79e851..7c836bade456ef84d109fd25ce897fd0a0617c86 100644 (file)
@@ -40,7 +40,7 @@ bool double_buffer = true;
 bool insideGlBeginEnd = false;
 trace::Parser parser;
 glws::Profile defaultProfile = glws::PROFILE_COMPAT;
-glws::Visual *visual = NULL;
+glws::Visual *visual[glws::PROFILE_MAX];
 glws::Drawable *drawable = NULL;
 glws::Context *context = NULL;
 
@@ -330,7 +330,10 @@ int main(int argc, char **argv)
     }
 
     glws::init();
-    visual = glws::createVisual(double_buffer, defaultProfile);
+    visual[glws::PROFILE_COMPAT] = glws::createVisual(double_buffer, glws::PROFILE_COMPAT);
+    visual[glws::PROFILE_CORE] = glws::createVisual(double_buffer, glws::PROFILE_CORE);
+    visual[glws::PROFILE_ES1] = glws::createVisual(double_buffer, glws::PROFILE_ES1);
+    visual[glws::PROFILE_ES2] = glws::createVisual(double_buffer, glws::PROFILE_ES2);
 
     for ( ; i < argc; ++i) {
         if (!parser.open(argv[i])) {
@@ -342,8 +345,11 @@ int main(int argc, char **argv)
 
         parser.close();
     }
-    
-    delete visual;
+
+    for (int n = 0; n < glws::PROFILE_MAX; n++) {
+        delete visual[n];
+    }
+
     glws::cleanup();
 
     return 0;
index 243dfe0e14062fbc56a42a7c73fb8ba801fd566f..447d1771f872803e1fb03982760fb3363d2e094a 100644 (file)
@@ -48,7 +48,7 @@ getDrawable(unsigned long long hdc) {
     DrawableMap::const_iterator it;
     it = drawable_map.find(hdc);
     if (it == drawable_map.end()) {
-        return (drawable_map[hdc] = glws::createDrawable(visual));
+        return (drawable_map[hdc] = glws::createDrawable(visual[glretrace::defaultProfile]));
     }
 
     return it->second;
@@ -56,7 +56,7 @@ getDrawable(unsigned long long hdc) {
 
 static void retrace_wglCreateContext(trace::Call &call) {
     unsigned long long orig_context = call.ret->toUIntPtr();
-    glws::Context *context = glws::createContext(glretrace::visual, NULL, glretrace::defaultProfile);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], NULL, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
@@ -181,7 +181,7 @@ static void retrace_wglCreatePbufferARB(trace::Call &call) {
     int iHeight = call.arg(3).toUInt();
 
     unsigned long long orig_pbuffer = call.ret->toUIntPtr();
-    glws::Drawable *drawable = glws::createDrawable(glretrace::visual);
+    glws::Drawable *drawable = glws::createDrawable(glretrace::visual[glretrace::defaultProfile]);
 
     drawable->resize(iWidth, iHeight);
     drawable->show();
@@ -223,7 +223,7 @@ static void retrace_wglCreateContextAttribsARB(trace::Call &call) {
         share_context = context_map[call.arg(1).toUIntPtr()];
     }
 
-    glws::Context *context = glws::createContext(glretrace::visual, share_context, glretrace::defaultProfile);
+    glws::Context *context = glws::createContext(glretrace::visual[glretrace::defaultProfile], share_context, glretrace::defaultProfile);
     context_map[orig_context] = context;
 }
 
index fdc61c0b9a64ee2e82f28c9039cb2da28efc9037..9afebf4b878a4b639863bb08d8bf12927fbd0495 100644 (file)
--- a/glws.hpp
+++ b/glws.hpp
@@ -42,6 +42,7 @@ enum Profile {
     PROFILE_CORE,
     PROFILE_ES1,
     PROFILE_ES2,
+    PROFILE_MAX
 };
 
 
index 4498430f4995d59044fa876e595d03d4c28bb39a..c1cb0d9dc626f9b126eae00c1d9aa53a83d011c9 100644 (file)
@@ -384,6 +384,8 @@ createContext(const Visual *_visual, Context *shareContext, Profile profile)
         eglBindAPI(EGL_OPENGL_ES_API);
         attribs.add(EGL_CONTEXT_CLIENT_VERSION, 2);
         break;
+    default:
+        return NULL;
     }
 
     attribs.end(EGL_NONE);