[Cogl] [PATCH 2/2] Remove support for luminance textures

Neil Roberts neil at linux.intel.com
Wed Apr 10 08:38:13 PDT 2013


Luminance textures have been removed in GL3 so it is difficult to
support them on the GL3 driver unless we use the texture swizzle
extension like we do for alpha textures. However, it doesn't seem like
it would be worth the effort because we haven't yet hit a case in
practice where alpha textures wouldn't suffice in place of luminance
textures.
---
 cogl/cogl-bitmap-conversion.c              |  1 -
 cogl/cogl-bitmap-packing.h                 | 45 ------------------------------
 cogl/cogl-gles2-context.c                  |  4 ---
 cogl/cogl-types.h                          |  3 --
 cogl/driver/gl/gl/cogl-driver-gl.c         | 11 --------
 cogl/driver/gl/gles/cogl-driver-gles.c     |  5 ----
 tests/conform/test-read-texture-formats.c  |  7 -----
 tests/conform/test-write-texture-formats.c |  6 ----
 8 files changed, 82 deletions(-)

diff --git a/cogl/cogl-bitmap-conversion.c b/cogl/cogl-bitmap-conversion.c
index 4a388d9..102bf23 100644
--- a/cogl/cogl-bitmap-conversion.c
+++ b/cogl/cogl-bitmap-conversion.c
@@ -320,7 +320,6 @@ _cogl_bitmap_needs_short_temp_buffer (CoglPixelFormat format)
     case COGL_PIXEL_FORMAT_RGB_565:
     case COGL_PIXEL_FORMAT_RGBA_4444:
     case COGL_PIXEL_FORMAT_RGBA_5551:
-    case COGL_PIXEL_FORMAT_G_8:
     case COGL_PIXEL_FORMAT_RGB_888:
     case COGL_PIXEL_FORMAT_BGR_888:
     case COGL_PIXEL_FORMAT_RGBA_8888:
diff --git a/cogl/cogl-bitmap-packing.h b/cogl/cogl-bitmap-packing.h
index 2c714ce..47a36b9 100644
--- a/cogl/cogl-bitmap-packing.h
+++ b/cogl/cogl-bitmap-packing.h
@@ -58,27 +58,6 @@ G_PASTE (_cogl_unpack_a_8_, component_size) (const uint8_t *src,
 }
 
 inline static void
-G_PASTE (_cogl_unpack_g_8_, component_size) (const uint8_t *src,
-                                             component_type *dst,
-                                             int width)
-{
-  /* FIXME: I'm not sure if this is right. It looks like Nvidia and
-     Mesa handle luminance textures differently. Maybe we should
-     consider just removing luminance textures for Cogl 2.0 because
-     they have been removed in GL 3.0 */
-  while (width-- > 0)
-    {
-      component_type v = UNPACK_BYTE (src[0]);
-      dst[0] = v;
-      dst[1] = v;
-      dst[2] = v;
-      dst[3] = UNPACK_BYTE (255);
-      dst += 4;
-      src++;
-    }
-}
-
-inline static void
 G_PASTE (_cogl_unpack_rgb_888_, component_size) (const uint8_t *src,
                                                  component_type *dst,
                                                  int width)
@@ -318,9 +297,6 @@ G_PASTE (_cogl_unpack_, component_size) (CoglPixelFormat format,
     case COGL_PIXEL_FORMAT_A_8:
       G_PASTE (_cogl_unpack_a_8_, component_size) (src, dst, width);
       break;
-    case COGL_PIXEL_FORMAT_G_8:
-      G_PASTE (_cogl_unpack_g_8_, component_size) (src, dst, width);
-      break;
     case COGL_PIXEL_FORMAT_RGB_888:
       G_PASTE (_cogl_unpack_rgb_888_, component_size) (src, dst, width);
       break;
@@ -406,24 +382,6 @@ G_PASTE (_cogl_pack_a_8_, component_size) (const component_type *src,
 }
 
 inline static void
-G_PASTE (_cogl_pack_g_8_, component_size) (const component_type *src,
-                                           uint8_t *dst,
-                                           int width)
-{
-  /* FIXME: I'm not sure if this is right. It looks like Nvidia and
-     Mesa handle luminance textures differently. Maybe we should
-     consider just removing luminance textures for Cogl 2.0 because
-     they have been removed in GL 3.0 */
-  while (width-- > 0)
-    {
-      component_type v = (src[0] + src[1] + src[2]) / 3;
-      *dst = PACK_BYTE (v);
-      src += 4;
-      dst++;
-    }
-}
-
-inline static void
 G_PASTE (_cogl_pack_rgb_888_, component_size) (const component_type *src,
                                                uint8_t *dst,
                                                int width)
@@ -661,9 +619,6 @@ G_PASTE (_cogl_pack_, component_size) (CoglPixelFormat format,
     case COGL_PIXEL_FORMAT_A_8:
       G_PASTE (_cogl_pack_a_8_, component_size) (src, dst, width);
       break;
-    case COGL_PIXEL_FORMAT_G_8:
-      G_PASTE (_cogl_pack_g_8_, component_size) (src, dst, width);
-      break;
     case COGL_PIXEL_FORMAT_RGB_888:
       G_PASTE (_cogl_pack_rgb_888_, component_size) (src, dst, width);
       break;
diff --git a/cogl/cogl-gles2-context.c b/cogl/cogl-gles2-context.c
index 5bc0cf4..2d0ab52 100644
--- a/cogl/cogl-gles2-context.c
+++ b/cogl/cogl-gles2-context.c
@@ -291,10 +291,6 @@ copy_flipped_texture (CoglGLES2Context *gles2_ctx,
       internal_format = COGL_PIXEL_FORMAT_A_8;
       break;
 
-    case GL_LUMINANCE:
-      internal_format = COGL_PIXEL_FORMAT_G_8;
-      break;
-
     default:
       /* We can't handle this format so just give up */
       return;
diff --git a/cogl/cogl-types.h b/cogl/cogl-types.h
index 48e8488..943dbc8 100644
--- a/cogl/cogl-types.h
+++ b/cogl/cogl-types.h
@@ -268,7 +268,6 @@ typedef struct _CoglColor               CoglColor;
  * @COGL_PIXEL_FORMAT_RGB_565: RGB, 16 bits
  * @COGL_PIXEL_FORMAT_RGBA_4444: RGBA, 16 bits
  * @COGL_PIXEL_FORMAT_RGBA_5551: RGBA, 16 bits
- * @COGL_PIXEL_FORMAT_G_8: Single luminance component
  * @COGL_PIXEL_FORMAT_RGB_888: RGB, 24 bits
  * @COGL_PIXEL_FORMAT_BGR_888: BGR, 24 bits
  * @COGL_PIXEL_FORMAT_RGBA_8888: RGBA, 32 bits
@@ -320,8 +319,6 @@ typedef enum { /*< prefix=COGL_PIXEL_FORMAT >*/
   COGL_PIXEL_FORMAT_RGBA_5551 = (2 | COGL_BITWISE_BIT | COGL_A_BIT | COGL_FORMAT_ENUM(1)),
   COGL_PIXEL_FORMAT_RGBA_5551_PRE = (2 | COGL_PIXEL_FORMAT_RGBA_5551 | COGL_PREMULT_BIT),
 
-  COGL_PIXEL_FORMAT_G_8 = 1,
-
   COGL_PIXEL_FORMAT_RGB_888 = 3,
   COGL_PIXEL_FORMAT_BGR_888 = (3 | COGL_BGR_BIT),
 
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c
index efe25c1..74cc572 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -62,12 +62,6 @@ _cogl_driver_pixel_format_from_gl_internal (CoglContext *context,
       *out_format = COGL_PIXEL_FORMAT_A_8;
       return TRUE;
 
-    case GL_LUMINANCE: case GL_LUMINANCE4: case GL_LUMINANCE8:
-    case GL_LUMINANCE12: case GL_LUMINANCE16:
-
-      *out_format = COGL_PIXEL_FORMAT_G_8;
-      return TRUE;
-
     case GL_RGB: case GL_RGB4: case GL_RGB5: case GL_RGB8:
     case GL_RGB10: case GL_RGB12: case GL_RGB16: case GL_R3_G3_B2:
 
@@ -118,11 +112,6 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context,
         }
       gltype = GL_UNSIGNED_BYTE;
       break;
-    case COGL_PIXEL_FORMAT_G_8:
-      glintformat = GL_LUMINANCE;
-      glformat = GL_LUMINANCE;
-      gltype = GL_UNSIGNED_BYTE;
-      break;
 
     case COGL_PIXEL_FORMAT_RGB_888:
       glintformat = GL_RGB;
diff --git a/cogl/driver/gl/gles/cogl-driver-gles.c b/cogl/driver/gl/gles/cogl-driver-gles.c
index cde0a68..c212232 100644
--- a/cogl/driver/gl/gles/cogl-driver-gles.c
+++ b/cogl/driver/gl/gles/cogl-driver-gles.c
@@ -75,11 +75,6 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context,
       glformat = GL_ALPHA;
       gltype = GL_UNSIGNED_BYTE;
       break;
-    case COGL_PIXEL_FORMAT_G_8:
-      glintformat = GL_LUMINANCE;
-      glformat = GL_LUMINANCE;
-      gltype = GL_UNSIGNED_BYTE;
-      break;
 
     case COGL_PIXEL_FORMAT_BGRA_8888:
     case COGL_PIXEL_FORMAT_BGRA_8888_PRE:
diff --git a/tests/conform/test-read-texture-formats.c b/tests/conform/test-read-texture-formats.c
index b35e6f2..7a224d7 100644
--- a/tests/conform/test-read-texture-formats.c
+++ b/tests/conform/test-read-texture-formats.c
@@ -156,13 +156,6 @@ test_read_texture_formats (void)
 
   test_read_byte (tex_2d, COGL_PIXEL_FORMAT_A_8, 0x78);
 
-#if 0
-  /* I'm not sure what's the right value to put here because Nvidia
-     and Mesa seem to behave differently so one of them must be
-     wrong. */
-  test_read_byte (tex_2d, COGL_PIXEL_FORMAT_G_8, 0x9c);
-#endif
-
   test_read_short (tex_2d, COGL_PIXEL_FORMAT_RGB_565,
                    5, 0x12, 6, 0x34, 5, 0x56,
                    -1);
diff --git a/tests/conform/test-write-texture-formats.c b/tests/conform/test-write-texture-formats.c
index 9181a58..b1c2111 100644
--- a/tests/conform/test-write-texture-formats.c
+++ b/tests/conform/test-write-texture-formats.c
@@ -130,12 +130,6 @@ void
 test_write_texture_formats (void)
 {
   test_write_byte (COGL_PIXEL_FORMAT_A_8, 0x34, 0x00000034);
-#if 0
-  /* I'm not sure what's the right value to put here because Nvidia
-     and Mesa seem to behave differently so one of them must be
-     wrong. */
-  test_write_byte (test_ctx, COGL_PIXEL_FORMAT_G_8, 0x34, 0x340000ff);
-#endif
 
   test_write_short (COGL_PIXEL_FORMAT_RGB_565, 0x0843, 0x080819ff);
   test_write_short (COGL_PIXEL_FORMAT_RGBA_4444_PRE, 0x1234, 0x11223344);
-- 
1.7.11.3.g3c3efa5



More information about the Cogl mailing list