[Mesa-dev] [PATCH 1/4] mesa/formats: add rest of integer formats.

Dave Airlie airlied at gmail.com
Tue Oct 4 13:11:33 PDT 2011


From: Dave Airlie <airlied at redhat.com>

This is taken from reading EXT_texture_integer + EXT_texture_rg in combination,

Comments on necessity of each format, naming of formats and bugs in the
formats tables please.

Is there any formats I've missed?

Eric looked over this to make sure its consistent at least.

As I've changed the ordering of things in the format table, the follow
patches are required to avoid regression.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/mesa/main/formats.c |  518 ++++++++++++++++++++++++++++++++++++++++++++++-
 src/mesa/main/formats.h |   46 +++++
 2 files changed, 562 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 11d6706..02b2028 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -756,6 +756,251 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
    },
 
    /* unnormalized signed int formats */
+   /* unnormalized unsigned int formats */
+   {
+      MESA_FORMAT_ALPHA_UINT8,
+      "MESA_FORMAT_ALPHA_UINT8",
+      GL_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 8,
+      0, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_ALPHA_UINT16,
+      "MESA_FORMAT_ALPHA_UINT16",
+      GL_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 16,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_ALPHA_UINT32,
+      "MESA_FORMAT_ALPHA_UINT32",
+      GL_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 32,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_ALPHA_INT8,
+      "MESA_FORMAT_ALPHA_INT8",
+      GL_ALPHA,
+      GL_INT,
+      0, 0, 0, 8,
+      0, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_ALPHA_INT16,
+      "MESA_FORMAT_ALPHA_INT16",
+      GL_ALPHA,
+      GL_INT,
+      0, 0, 0, 16,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_ALPHA_INT32,
+      "MESA_FORMAT_ALPHA_INT32",
+      GL_ALPHA,
+      GL_INT,
+      0, 0, 0, 32,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_INTENSITY_UINT8,
+      "MESA_FORMAT_INTENSITY_UINT8",
+      GL_INTENSITY,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      0, 8, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_INTENSITY_UINT16,
+      "MESA_FORMAT_INTENSITY_UINT16",
+      GL_INTENSITY,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      0, 16, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_INTENSITY_UINT32,
+      "MESA_FORMAT_INTENSITY_UINT32",
+      GL_INTENSITY,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      0, 32, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_INTENSITY_INT8,
+      "MESA_FORMAT_INTENSITY_INT8",
+      GL_INTENSITY,
+      GL_INT,
+      0, 0, 0, 0,
+      0, 8, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_INTENSITY_INT16,
+      "MESA_FORMAT_INTENSITY_INT16",
+      GL_INTENSITY,
+      GL_INT,
+      0, 0, 0, 0,
+      0, 16, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_INTENSITY_INT32,
+      "MESA_FORMAT_INTENSITY_INT32",
+      GL_INTENSITY,
+      GL_INT,
+      0, 0, 0, 0,
+      0, 32, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_LUMINANCE_UINT8,
+      "MESA_FORMAT_LUMINANCE_UINT8",
+      GL_LUMINANCE,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      8, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_LUMINANCE_UINT16,
+      "MESA_FORMAT_LUMINANCE_UINT16",
+      GL_LUMINANCE,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      16, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_LUMINANCE_UINT32,
+      "MESA_FORMAT_LUMINANCE_UINT32",
+      GL_LUMINANCE,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 0,
+      32, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_LUMINANCE_INT8,
+      "MESA_FORMAT_LUMINANCE_INT8",
+      GL_LUMINANCE,
+      GL_INT,
+      0, 0, 0, 0,
+      8, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_LUMINANCE_INT16,
+      "MESA_FORMAT_LUMINANCE_INT16",
+      GL_LUMINANCE,
+      GL_INT,
+      0, 0, 0, 0,
+      16, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_LUMINANCE_INT32,
+      "MESA_FORMAT_LUMINANCE_INT32",
+      GL_LUMINANCE,
+      GL_INT,
+      0, 0, 0, 0,
+      32, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
+      "MESA_FORMAT_LUMINANCE_ALPHA_UINT8",
+      GL_LUMINANCE_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 8,
+      8, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
+      "MESA_FORMAT_LUMINANCE_ALPHA_UINT16",
+      GL_LUMINANCE_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 16,
+      16, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
+      "MESA_FORMAT_LUMINANCE_ALPHA_UINT32",
+      GL_LUMINANCE_ALPHA,
+      GL_UNSIGNED_INT,
+      0, 0, 0, 32,
+      32, 0, 0, 0, 0,
+      1, 1, 8
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_INT8,
+      "MESA_FORMAT_LUMINANCE_ALPHA_INT8",
+      GL_LUMINANCE_ALPHA,
+      GL_INT,
+      0, 0, 0, 8,
+      8, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_INT16,
+      "MESA_FORMAT_LUMINANCE_ALPHA_INT16",
+      GL_LUMINANCE_ALPHA,
+      GL_INT,
+      0, 0, 0, 16,
+      16, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_LUMINANCE_ALPHA_INT32,
+      "MESA_FORMAT_LUMINANCE_ALPHA_INT32",
+      GL_LUMINANCE_ALPHA,
+      GL_INT,
+      0, 0, 0, 32,
+      32, 0, 0, 0, 0,
+      1, 1, 8
+   },
+
+   {
+      MESA_FORMAT_R_INT8,
+      "MESA_FORMAT_R_INT8",
+      GL_RED,
+      GL_INT,
+      8, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_RG_INT8,
+      "MESA_FORMAT_RG_INT8",
+      GL_RG,
+      GL_INT,
+      8, 8, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_RGB_INT8,
+      "MESA_FORMAT_RGB_INT8",
+      GL_RGB,
+      GL_INT,
+      8, 8, 8, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 3
+   },
    {
       MESA_FORMAT_RGBA_INT8,
       "MESA_FORMAT_RGBA_INT8",
@@ -766,6 +1011,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       1, 1, 4
    },
    {
+      MESA_FORMAT_R_INT16,
+      "MESA_FORMAT_R_INT16",
+      GL_RED,
+      GL_INT,
+      16, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_RG_INT16,
+      "MESA_FORMAT_RG_INT16",
+      GL_RG,
+      GL_INT,
+      16, 16, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_RGB_INT16,
+      "MESA_FORMAT_RGB_INT16",
+      GL_RGB,
+      GL_INT,
+      16, 16, 16, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 6
+   },
+   {
       MESA_FORMAT_RGBA_INT16,
       "MESA_FORMAT_RGBA_INT16",
       GL_RGBA,
@@ -775,6 +1047,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       1, 1, 8
    },
    {
+      MESA_FORMAT_R_INT32,
+      "MESA_FORMAT_R_INT32",
+      GL_RED,
+      GL_INT,
+      32, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_RG_INT32,
+      "MESA_FORMAT_RG_INT32",
+      GL_RG,
+      GL_INT,
+      32, 32, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 8
+   },
+   {
+      MESA_FORMAT_RGB_INT32,
+      "MESA_FORMAT_RGB_INT32",
+      GL_RGB,
+      GL_INT,
+      32, 32, 32, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 12
+   },
+   {
       MESA_FORMAT_RGBA_INT32,
       "MESA_FORMAT_RGBA_INT32",
       GL_RGBA,
@@ -783,8 +1082,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       0, 0, 0, 0, 0,
       1, 1, 16
    },
-
-   /* unnormalized unsigned int formats */
+   {
+      MESA_FORMAT_R_UINT8,
+      "MESA_FORMAT_R_UINT8",
+      GL_RED,
+      GL_UNSIGNED_INT,
+      8, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 1
+   },
+   {
+      MESA_FORMAT_RG_UINT8,
+      "MESA_FORMAT_RG_UINT8",
+      GL_RG,
+      GL_UNSIGNED_INT,
+      8, 8, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_RGB_UINT8,
+      "MESA_FORMAT_RGB_UINT8",
+      GL_RGB,
+      GL_UNSIGNED_INT,
+      8, 8, 8, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 3
+   },
    {
       MESA_FORMAT_RGBA_UINT8,
       "MESA_FORMAT_RGBA_UINT8",
@@ -795,6 +1119,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       1, 1, 4
    },
    {
+      MESA_FORMAT_R_UINT16,
+      "MESA_FORMAT_R_UINT16",
+      GL_RED,
+      GL_UNSIGNED_INT,
+      16, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 2
+   },
+   {
+      MESA_FORMAT_RG_UINT16,
+      "MESA_FORMAT_RG_UINT16",
+      GL_RG,
+      GL_UNSIGNED_INT,
+      16, 16, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_RGB_UINT16,
+      "MESA_FORMAT_RGB_UINT16",
+      GL_RGB,
+      GL_UNSIGNED_INT,
+      16, 16, 16, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 6
+   },
+   {
       MESA_FORMAT_RGBA_UINT16,
       "MESA_FORMAT_RGBA_UINT16",
       GL_RGBA,
@@ -804,6 +1155,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       1, 1, 8
    },
    {
+      MESA_FORMAT_R_UINT32,
+      "MESA_FORMAT_R_UINT32",
+      GL_RED,
+      GL_UNSIGNED_INT,
+      32, 0, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 4
+   },
+   {
+      MESA_FORMAT_RG_UINT32,
+      "MESA_FORMAT_RG_UINT32",
+      GL_RG,
+      GL_UNSIGNED_INT,
+      32, 32, 0, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 8
+   },
+   {
+      MESA_FORMAT_RGB_UINT32,
+      "MESA_FORMAT_RGB_UINT32",
+      GL_RGB,
+      GL_UNSIGNED_INT,
+      32, 32, 32, 0,
+      0, 0, 0, 0, 0,
+      1, 1, 12
+   },
+   {
       MESA_FORMAT_RGBA_UINT32,
       "MESA_FORMAT_RGBA_UINT32",
       GL_RGBA,
@@ -1876,14 +2254,114 @@ _mesa_format_to_type_and_comps(gl_format format,
       *comps = 1;
       return;
 
+   case MESA_FORMAT_ALPHA_UINT8:
+   case MESA_FORMAT_LUMINANCE_UINT8:
+   case MESA_FORMAT_INTENSITY_UINT8:
+      *datatype = GL_UNSIGNED_BYTE;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
+      *datatype = GL_UNSIGNED_BYTE;
+      *comps = 2;
+      return;
+
+   case MESA_FORMAT_ALPHA_UINT16:
+   case MESA_FORMAT_LUMINANCE_UINT16:
+   case MESA_FORMAT_INTENSITY_UINT16:
+      *datatype = GL_UNSIGNED_SHORT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
+      *datatype = GL_UNSIGNED_SHORT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_ALPHA_UINT32:
+   case MESA_FORMAT_LUMINANCE_UINT32:
+   case MESA_FORMAT_INTENSITY_UINT32:
+      *datatype = GL_UNSIGNED_INT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
+      *datatype = GL_UNSIGNED_INT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_ALPHA_INT8:
+   case MESA_FORMAT_LUMINANCE_INT8:
+   case MESA_FORMAT_INTENSITY_INT8:
+      *datatype = GL_BYTE;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
+      *datatype = GL_BYTE;
+      *comps = 2;
+      return;
+
+   case MESA_FORMAT_ALPHA_INT16:
+   case MESA_FORMAT_LUMINANCE_INT16:
+   case MESA_FORMAT_INTENSITY_INT16:
+      *datatype = GL_SHORT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
+      *datatype = GL_SHORT;
+      *comps = 2;
+      return;
+
+   case MESA_FORMAT_ALPHA_INT32:
+   case MESA_FORMAT_LUMINANCE_INT32:
+   case MESA_FORMAT_INTENSITY_INT32:
+      *datatype = GL_INT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
+      *datatype = GL_INT;
+      *comps = 2;
+      return;
+
+   case MESA_FORMAT_R_INT8:
+      *datatype = GL_BYTE;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_INT8:
+      *datatype = GL_BYTE;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_INT8:
+      *datatype = GL_BYTE;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_INT8:
       *datatype = GL_BYTE;
       *comps = 4;
       return;
+   case MESA_FORMAT_R_INT16:
+      *datatype = GL_SHORT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_INT16:
+      *datatype = GL_SHORT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_INT16:
+      *datatype = GL_SHORT;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_INT16:
       *datatype = GL_SHORT;
       *comps = 4;
       return;
+   case MESA_FORMAT_R_INT32:
+      *datatype = GL_INT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_INT32:
+      *datatype = GL_INT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_INT32:
+      *datatype = GL_INT;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_INT32:
       *datatype = GL_INT;
       *comps = 4;
@@ -1892,14 +2370,50 @@ _mesa_format_to_type_and_comps(gl_format format,
    /**
     * \name Non-normalized unsigned integer formats.
     */
+   case MESA_FORMAT_R_UINT8:
+      *datatype = GL_UNSIGNED_BYTE;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_UINT8:
+      *datatype = GL_UNSIGNED_BYTE;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_UINT8:
+      *datatype = GL_UNSIGNED_BYTE;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_UINT8:
       *datatype = GL_UNSIGNED_BYTE;
       *comps = 4;
       return;
+   case MESA_FORMAT_R_UINT16:
+      *datatype = GL_UNSIGNED_SHORT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_UINT16:
+      *datatype = GL_UNSIGNED_SHORT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_UINT16:
+      *datatype = GL_UNSIGNED_SHORT;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_UINT16:
       *datatype = GL_UNSIGNED_SHORT;
       *comps = 4;
       return;
+   case MESA_FORMAT_R_UINT32:
+      *datatype = GL_UNSIGNED_INT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_RG_UINT32:
+      *datatype = GL_UNSIGNED_INT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_RGB_UINT32:
+      *datatype = GL_UNSIGNED_INT;
+      *comps = 3;
+      return;
    case MESA_FORMAT_RGBA_UINT32:
       *datatype = GL_UNSIGNED_INT;
       *comps = 4;
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 610204c..12758f0 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -152,15 +152,61 @@ typedef enum
     * XXX Note: these are just stand-ins for some better hardware
     * formats TBD such as BGRA or ARGB.
     */
+   MESA_FORMAT_ALPHA_UINT8,
+   MESA_FORMAT_ALPHA_UINT16,
+   MESA_FORMAT_ALPHA_UINT32,
+   MESA_FORMAT_ALPHA_INT8,
+   MESA_FORMAT_ALPHA_INT16,
+   MESA_FORMAT_ALPHA_INT32,
+
+   MESA_FORMAT_INTENSITY_UINT8,
+   MESA_FORMAT_INTENSITY_UINT16,
+   MESA_FORMAT_INTENSITY_UINT32,
+   MESA_FORMAT_INTENSITY_INT8,
+   MESA_FORMAT_INTENSITY_INT16,
+   MESA_FORMAT_INTENSITY_INT32,
+
+   MESA_FORMAT_LUMINANCE_UINT8,
+   MESA_FORMAT_LUMINANCE_UINT16,
+   MESA_FORMAT_LUMINANCE_UINT32,
+   MESA_FORMAT_LUMINANCE_INT8,
+   MESA_FORMAT_LUMINANCE_INT16,
+   MESA_FORMAT_LUMINANCE_INT32,
+
+   MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
+   MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
+   MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
+   MESA_FORMAT_LUMINANCE_ALPHA_INT8,
+   MESA_FORMAT_LUMINANCE_ALPHA_INT16,
+   MESA_FORMAT_LUMINANCE_ALPHA_INT32,
+
+   MESA_FORMAT_R_INT8,
+   MESA_FORMAT_RG_INT8,
+   MESA_FORMAT_RGB_INT8,
    MESA_FORMAT_RGBA_INT8,
+   MESA_FORMAT_R_INT16,
+   MESA_FORMAT_RG_INT16,
+   MESA_FORMAT_RGB_INT16,
    MESA_FORMAT_RGBA_INT16,
+   MESA_FORMAT_R_INT32,
+   MESA_FORMAT_RG_INT32,
+   MESA_FORMAT_RGB_INT32,
    MESA_FORMAT_RGBA_INT32,
 
    /**
     * \name Non-normalized unsigned integer formats.
     */
+   MESA_FORMAT_R_UINT8,
+   MESA_FORMAT_RG_UINT8,
+   MESA_FORMAT_RGB_UINT8,
    MESA_FORMAT_RGBA_UINT8,
+   MESA_FORMAT_R_UINT16,
+   MESA_FORMAT_RG_UINT16,
+   MESA_FORMAT_RGB_UINT16,
    MESA_FORMAT_RGBA_UINT16,
+   MESA_FORMAT_R_UINT32,
+   MESA_FORMAT_RG_UINT32,
+   MESA_FORMAT_RGB_UINT32,
    MESA_FORMAT_RGBA_UINT32,
 
                                   /* msb <------ TEXEL BITS -----------> lsb */
-- 
1.7.6.2



More information about the mesa-dev mailing list