diff options
Diffstat (limited to 'cogl/driver/gl/cogl-gl.c')
-rw-r--r-- | cogl/driver/gl/cogl-gl.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/cogl/driver/gl/cogl-gl.c b/cogl/driver/gl/cogl-gl.c index 3976d5a6..ce0c9bca 100644 --- a/cogl/driver/gl/cogl-gl.c +++ b/cogl/driver/gl/cogl-gl.c @@ -199,6 +199,33 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context, gltype = GL_UNSIGNED_SHORT_5_5_5_1; break; + case COGL_PIXEL_FORMAT_DEPTH_ANY: + glintformat = GL_DEPTH_COMPONENT; + glformat = GL_DEPTH_COMPONENT; + gltype = GL_UNSIGNED_BYTE; + break; + case COGL_PIXEL_FORMAT_DEPTH_16: + glintformat = GL_DEPTH_COMPONENT16; + glformat = GL_DEPTH_COMPONENT; + gltype = GL_UNSIGNED_SHORT; + break; + case COGL_PIXEL_FORMAT_DEPTH_24: + glintformat = GL_DEPTH_COMPONENT24; + glformat = GL_DEPTH_COMPONENT; + gltype = GL_UNSIGNED_INT; + break; + case COGL_PIXEL_FORMAT_DEPTH_32: + glintformat = GL_DEPTH_COMPONENT32; + glformat = GL_DEPTH_COMPONENT; + gltype = GL_UNSIGNED_INT; + break; + + case COGL_PIXEL_FORMAT_DEPTH_24_STENCIL_8: + glintformat = GL_DEPTH24_STENCIL8; + glformat = GL_DEPTH_STENCIL; + gltype = GL_UNSIGNED_INT_24_8; + break; + case COGL_PIXEL_FORMAT_ANY: case COGL_PIXEL_FORMAT_YUV: g_assert_not_reached (); @@ -403,6 +430,13 @@ _cogl_driver_update_features (CoglContext *ctx, COGL_FEATURE_ID_OFFSCREEN_MULTISAMPLE, TRUE); } + if (COGL_CHECK_GL_VERSION (gl_major, gl_minor, 3, 0) || + _cogl_check_extension ("GL_ARB_depth_texture", gl_extensions)) + { + flags |= COGL_FEATURE_DEPTH_TEXTURE; + COGL_FLAGS_SET (ctx->features, COGL_FEATURE_ID_DEPTH_TEXTURE, TRUE); + } + if (COGL_CHECK_GL_VERSION (gl_major, gl_minor, 2, 1) || _cogl_check_extension ("GL_EXT_pixel_buffer_object", gl_extensions)) private_flags |= COGL_PRIVATE_FEATURE_PBOS; |