diff --git a/cogl/cogl-framebuffer.c b/cogl/cogl-framebuffer.c index 5c7dbdbbb..7ae769e4d 100644 --- a/cogl/cogl-framebuffer.c +++ b/cogl/cogl-framebuffer.c @@ -1006,10 +1006,9 @@ _cogl_offscreen_allocate (CoglOffscreen *offscreen, { if ((have_working_flags && try_creating_fbo (offscreen, flags)) || -#ifdef HAVE_COGL_GL - (ctx->driver == COGL_DRIVER_GL && + ((ctx->private_feature_flags & + COGL_PRIVATE_FEATURE_EXT_PACKED_DEPTH_STENCIL) && try_creating_fbo (offscreen, flags = _TRY_DEPTH_STENCIL)) || -#endif try_creating_fbo (offscreen, flags = _TRY_DEPTH | _TRY_STENCIL) || try_creating_fbo (offscreen, flags = _TRY_STENCIL) || try_creating_fbo (offscreen, flags = _TRY_DEPTH) || diff --git a/cogl/cogl-internal.h b/cogl/cogl-internal.h index 7957786a4..b42c6c731 100644 --- a/cogl/cogl-internal.h +++ b/cogl/cogl-internal.h @@ -105,7 +105,8 @@ typedef enum COGL_PRIVATE_FEATURE_OFFSCREEN_BLIT = 1L<<3, COGL_PRIVATE_FEATURE_FOUR_CLIP_PLANES = 1L<<4, COGL_PRIVATE_FEATURE_PBOS = 1L<<5, - COGL_PRIVATE_FEATURE_VBOS = 1L<<6 + COGL_PRIVATE_FEATURE_VBOS = 1L<<6, + COGL_PRIVATE_FEATURE_EXT_PACKED_DEPTH_STENCIL = 1L<<7 } CoglPrivateFeatureFlags; /* Sometimes when evaluating pipelines, either during comparisons or diff --git a/cogl/driver/gl/cogl-gl.c b/cogl/driver/gl/cogl-gl.c index e5dc15516..b35ddbef8 100644 --- a/cogl/driver/gl/cogl-gl.c +++ b/cogl/driver/gl/cogl-gl.c @@ -266,6 +266,9 @@ _cogl_gl_update_features (CoglContext *context, if (context->glEGLImageTargetTexture2D) private_flags |= COGL_PRIVATE_FEATURE_TEXTURE_2D_FROM_EGL_IMAGE; + if (_cogl_check_extension ("GL_EXT_packed_depth_stencil", gl_extensions)) + private_flags |= COGL_PRIVATE_FEATURE_EXT_PACKED_DEPTH_STENCIL; + /* Cache features */ context->private_feature_flags |= private_flags; context->feature_flags |= flags;