[mutter] cogl: Add XRGB_FP_16161616 and XBGR_FP_16161616 formats



commit daace1aac5e96cf71d3465cca7298214029804c8
Author: Robert Mader <robert mader posteo de>
Date:   Wed Aug 4 17:39:10 2021 +0200

    cogl: Add XRGB_FP_16161616 and XBGR_FP_16161616 formats
    
    These match their alpha counterparts, apart from not setting the
    alpha bit. This allows our internal mashinery to more easily
    distinguish whether we need a slow alpha-pass during rendering or not.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1810>

 cogl/cogl/cogl-bitmap-conversion.c                  |  2 ++
 cogl/cogl/cogl-bitmap-packing.h                     |  4 ++++
 cogl/cogl/cogl-pixel-format.c                       | 14 ++++++++++++++
 cogl/cogl/cogl-pixel-format.h                       |  2 ++
 cogl/cogl/driver/gl/gl/cogl-driver-gl.c             |  2 ++
 cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c     |  2 ++
 cogl/cogl/driver/gl/gles/cogl-driver-gles.c         |  2 ++
 cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c |  2 ++
 8 files changed, 30 insertions(+)
---
diff --git a/cogl/cogl/cogl-bitmap-conversion.c b/cogl/cogl/cogl-bitmap-conversion.c
index 7cae664273..b97f90e7d5 100644
--- a/cogl/cogl/cogl-bitmap-conversion.c
+++ b/cogl/cogl/cogl-bitmap-conversion.c
@@ -355,7 +355,9 @@ _cogl_bitmap_needs_short_temp_buffer (CoglPixelFormat format)
     case COGL_PIXEL_FORMAT_ABGR_2101010_PRE:
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
diff --git a/cogl/cogl/cogl-bitmap-packing.h b/cogl/cogl/cogl-bitmap-packing.h
index 713e90d17b..9448e57ad6 100644
--- a/cogl/cogl/cogl-bitmap-packing.h
+++ b/cogl/cogl/cogl-bitmap-packing.h
@@ -408,7 +408,9 @@ G_PASTE (_cogl_unpack_, component_size) (CoglPixelFormat format,
       break;
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
@@ -789,7 +791,9 @@ G_PASTE (_cogl_pack_, component_size) (CoglPixelFormat format,
       break;
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_RGBA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
diff --git a/cogl/cogl/cogl-pixel-format.c b/cogl/cogl/cogl-pixel-format.c
index 06fe79cade..0210af0462 100644
--- a/cogl/cogl/cogl-pixel-format.c
+++ b/cogl/cogl/cogl-pixel-format.c
@@ -273,6 +273,13 @@ static const CoglPixelFormatInfo format_info_table[] = {
     .bpp = { 8 },
     .aligned = 1
   },
+  {
+    .cogl_format = COGL_PIXEL_FORMAT_XRGB_FP_16161616,
+    .format_str = "ARGB_FP_16161616",
+    .n_planes = 1,
+    .bpp = { 8 },
+    .aligned = 1
+  },
   {
     .cogl_format = COGL_PIXEL_FORMAT_ARGB_FP_16161616,
     .format_str = "ARGB_FP_16161616",
@@ -280,6 +287,13 @@ static const CoglPixelFormatInfo format_info_table[] = {
     .bpp = { 8 },
     .aligned = 1
   },
+  {
+    .cogl_format = COGL_PIXEL_FORMAT_XBGR_FP_16161616,
+    .format_str = "ABGR_FP_16161616",
+    .n_planes = 1,
+    .bpp = { 8 },
+    .aligned = 1
+  },
   {
     .cogl_format = COGL_PIXEL_FORMAT_ABGR_FP_16161616,
     .format_str = "ABGR_FP_16161616",
diff --git a/cogl/cogl/cogl-pixel-format.h b/cogl/cogl/cogl-pixel-format.h
index 771e4715c4..5c326f6a46 100644
--- a/cogl/cogl/cogl-pixel-format.h
+++ b/cogl/cogl/cogl-pixel-format.h
@@ -228,7 +228,9 @@ typedef enum /*< prefix=COGL_PIXEL_FORMAT >*/
 
   COGL_PIXEL_FORMAT_RGBA_FP_16161616 = (11 | COGL_A_BIT),
   COGL_PIXEL_FORMAT_BGRA_FP_16161616 = (11 | COGL_A_BIT | COGL_BGR_BIT),
+  COGL_PIXEL_FORMAT_XRGB_FP_16161616 = (11 | COGL_AFIRST_BIT),
   COGL_PIXEL_FORMAT_ARGB_FP_16161616 = (11 | COGL_A_BIT | COGL_AFIRST_BIT),
+  COGL_PIXEL_FORMAT_XBGR_FP_16161616 = (11 | COGL_BGR_BIT | COGL_AFIRST_BIT),
   COGL_PIXEL_FORMAT_ABGR_FP_16161616 = (11 | COGL_A_BIT | COGL_BGR_BIT | COGL_AFIRST_BIT),
 
   COGL_PIXEL_FORMAT_RGBA_8888_PRE = (3 | COGL_A_BIT | COGL_PREMULT_BIT),
diff --git a/cogl/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
index b3270734cf..83939e8828 100644
--- a/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -302,12 +302,14 @@ _cogl_driver_pixel_format_to_gl (CoglContext     *context,
       glformat = GL_BGRA;
       gltype = GL_HALF_FLOAT;
       break;
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616_PRE:
       glintformat = GL_RGBA;
       glformat = GL_BGRA;
       gltype = GL_HALF_FLOAT;
       break;
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616_PRE:
       glintformat = GL_RGBA;
diff --git a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
index d411c58323..6c59e24711 100644
--- a/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
+++ b/cogl/cogl/driver/gl/gl/cogl-texture-driver-gl.c
@@ -432,7 +432,9 @@ _cogl_texture_driver_upload_supported (CoglContext *ctx,
     case COGL_PIXEL_FORMAT_RGBA_5551_PRE:
       return TRUE;
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616_PRE:
diff --git a/cogl/cogl/driver/gl/gles/cogl-driver-gles.c b/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
index 9ea3b55fd6..a9c3e7f329 100644
--- a/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
+++ b/cogl/cogl/driver/gl/gles/cogl-driver-gles.c
@@ -213,7 +213,9 @@ _cogl_driver_pixel_format_to_gl (CoglContext     *context,
       break;
 
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616_PRE:
diff --git a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c 
b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
index b9f396c9b7..978ffeb8be 100644
--- a/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
+++ b/cogl/cogl/driver/gl/gles/cogl-texture-driver-gles.c
@@ -485,7 +485,9 @@ _cogl_texture_driver_upload_supported (CoglContext *ctx,
     case COGL_PIXEL_FORMAT_RGBA_5551_PRE:
       return TRUE;
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616:
+    case COGL_PIXEL_FORMAT_XRGB_FP_16161616:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616:
+    case COGL_PIXEL_FORMAT_XBGR_FP_16161616:
     case COGL_PIXEL_FORMAT_ABGR_FP_16161616:
     case COGL_PIXEL_FORMAT_BGRA_FP_16161616_PRE:
     case COGL_PIXEL_FORMAT_ARGB_FP_16161616_PRE:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]