width,
height);
- error = CGLCreatePBuffer(width, height, GL_TEXTURE_2D, GL_RGBA,
- 0, &pbuffer);
-
- if (error) {
- YAGL_LOG_ERROR("CGLCreatePBuffer failed: %s", CGLErrorString(error));
- pbuffer = NULL;
+ // TODO: Migrate to Metal Framework
+ // CGLCreatePBuffer is deprecated on MAC.
+ // Below hack is to fix Emulator launch issue on MAC.
+ // The surface returned by CGLCreatePBuffer is not used in case of opengl 3.2
+ // Hence return dummy surface in case of opengl 3.2 instead of returning null and exiting.
+ if (driver->gl_version > yagl_gl_2) {
+ YAGL_LOG_INFO("Creating Dummy EGLSurface\n");
+ pbuffer = (EGLSurface)1;
}
+ else {
+ error = CGLCreatePBuffer(width, height, GL_TEXTURE_2D, GL_RGBA,
+ 0, &pbuffer);
+ if (error) {
+ YAGL_LOG_ERROR("CGLCreatePBuffer failed: %s", CGLErrorString(error));
+ pbuffer = NULL;
+ }
+ }
YAGL_LOG_FUNC_EXIT("%p", pbuffer);
return pbuffer;
"dpy = %p, sfc = %p",
dpy,
sfc);
+ if (!(driver->gl_version > yagl_gl_2)) {
+ error = CGLDestroyPBuffer((CGLPBufferObj)sfc);
- error = CGLDestroyPBuffer((CGLPBufferObj)sfc);
-
- if (error) {
- YAGL_LOG_ERROR("CGLDestroyPBuffer failed: %s", CGLErrorString(error));
+ if (error) {
+ YAGL_LOG_ERROR("CGLDestroyPBuffer failed: %s", CGLErrorString(error));
+ }
}
YAGL_LOG_FUNC_EXIT(NULL);
share_ctx = NULL;
}
- if ((egl_cgl->base.gl_version > yagl_gl_2) && (version != 1)) {
+ if (egl_cgl->base.gl_version > yagl_gl_2) {
ctx->is_3_2_core = true;
} else {
ctx->is_3_2_core = false;
draw,
read,
ctx);
-
+ // Call CGLSetPBuffer only in case a valid CGLCreatePBuffer is created.
if (cgl_ctx && !cgl_ctx->is_3_2_core) {
if (read_pbuffer) {
error = CGLSetPBuffer(cgl_ctx->base, read_pbuffer, 0, 0, 0);