diff options
author | Jeremy Huddleston Sequoia <[email protected]> | 2014-05-24 14:08:16 -0700 |
---|---|---|
committer | Jeremy Huddleston Sequoia <[email protected]> | 2014-05-24 20:41:38 -0700 |
commit | 04ce3be4010305902cc5ae81e8e0c8550d043a1e (patch) | |
tree | cf0b0f3aa01a5cfd575d5a36b29284e43eb3fe02 | |
parent | 9eb1d36c978a9b15ae2e999c630492dfffd7f165 (diff) |
darwin: Guard Core Profile usage behind a testing envvar
Signed-off-by: Jeremy Huddleston Sequoia <[email protected]>
-rw-r--r-- | src/glx/apple/apple_visual.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/glx/apple/apple_visual.c b/src/glx/apple/apple_visual.c index 951b2135ad3..046581b8b45 100644 --- a/src/glx/apple/apple_visual.c +++ b/src/glx/apple/apple_visual.c @@ -82,16 +82,7 @@ apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const struct glx_config * m int numattr = 0; GLint vsref = 0; CGLError error = 0; - - /* Request an OpenGL 3.2 profile if one is available and supported */ - attr[numattr++] = kCGLPFAOpenGLProfile; - attr[numattr++] = kCGLOGLPVersion_3_2_Core; - - /* Test for kCGLPFAOpenGLProfile support at runtime and roll it out if not supported */ - attr[numattr] = 0; - error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref); - if (error == kCGLBadAttribute) - numattr -= 2; + bool use_core_profile = getenv("LIBGL_PROFILE_CORE"); if (offscreen) { apple_glx_diagnostic @@ -167,12 +158,31 @@ apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const struct glx_config * m attr[numattr++] = mode->samples; } + /* Debugging support for Core profiles to support newer versions of OpenGL */ + if (use_core_profile) { + attr[numattr++] = kCGLPFAOpenGLProfile; + attr[numattr++] = kCGLOGLPVersion_3_2_Core; + } + attr[numattr++] = 0; assert(numattr < MAX_ATTR); error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref); + if ((error == kCGLBadAttribute || vsref == 0) && use_core_profile) { + apple_glx_diagnostic + ("Trying again without CoreProfile: error=%s, vsref=%d\n", apple_cgl.error_string(error), vsref); + + if (!error) + apple_cgl.destroy_pixel_format(*pfobj); + + numattr -= 3; + attr[numattr++] = 0; + + error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref); + } + if (error) { snprintf(__crashreporter_info_buff__, sizeof(__crashreporter_info_buff__), "CGLChoosePixelFormat error: %s\n", apple_cgl.error_string(error)); |