From c8674ef2bc9aef5f8375fb8f291b895219d1777e Mon Sep 17 00:00:00 2001 From: Damien Leone Date: Mon, 21 Nov 2011 15:41:40 -0800 Subject: [PATCH] Add support for X101010 and 2101010 pixel formats to fallback OpenGL rendering https://bugzilla.gnome.org/show_bug.cgi?id=660188 edit: tweaked the internal format returned by pixel_format_to_gl(); handled 1010102 formats and rebased -- Robert Bragg Reviewed-by: Robert Bragg Reviewed-by: Neil Roberts --- cogl/cogl-util.c | 5 +++++ cogl/driver/gl/cogl-texture-driver-gl.c | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/cogl/cogl-util.c b/cogl/cogl-util.c index 6f56555d6..0b1b4b7ea 100644 --- a/cogl/cogl-util.c +++ b/cogl/cogl-util.c @@ -167,6 +167,11 @@ _cogl_util_pixel_format_from_masks_real (unsigned long r_mask, { return COGL_PIXEL_FORMAT_ARGB_8888_PRE; } + else if ((depth == 30 || depth == 32) && + r_mask == 0x3ff00000 && g_mask == 0xffc00 && b_mask == 0x3ff) + { + return COGL_PIXEL_FORMAT_ARGB_2101010_PRE; + } else if (depth == 16 && bpp == 16 && r_mask == 0xf800 && g_mask == 0x7e0 && b_mask == 0x1f) { diff --git a/cogl/driver/gl/cogl-texture-driver-gl.c b/cogl/driver/gl/cogl-texture-driver-gl.c index deda4c6c4..272481164 100644 --- a/cogl/driver/gl/cogl-texture-driver-gl.c +++ b/cogl/driver/gl/cogl-texture-driver-gl.c @@ -466,6 +466,30 @@ _cogl_texture_driver_pixel_format_to_gl (CoglPixelFormat format, #endif break; + case COGL_PIXEL_FORMAT_RGBA_1010102: + glintformat = GL_RGBA; + glformat = GL_RGBA; + gltype = GL_UNSIGNED_INT_10_10_10_2; + break; + + case COGL_PIXEL_FORMAT_BGRA_1010102: + glintformat = GL_RGBA; + glformat = GL_BGRA; + gltype = GL_UNSIGNED_INT_10_10_10_2; + break; + + case COGL_PIXEL_FORMAT_ABGR_2101010: + glintformat = GL_RGBA; + glformat = GL_RGBA; + gltype = GL_UNSIGNED_INT_2_10_10_10_REV; + break; + + case COGL_PIXEL_FORMAT_ARGB_2101010: + glintformat = GL_RGBA; + glformat = GL_BGRA; + gltype = GL_UNSIGNED_INT_2_10_10_10_REV; + break; + /* The following three types of channel ordering * are always defined using system word byte * ordering (even according to GLES spec) */