Currently not supported by any driver implementation; this only adds the
API framework.

Signed-off-by: Oliver McFadden <[email protected]>
---
 src/mesa/main/APIspec.xml  |    7 +++----
 src/mesa/main/extensions.c |    1 +
 src/mesa/main/glheader.h   |    5 +++++
 src/mesa/main/mtypes.h     |    1 +
 src/mesa/main/varray.c     |   14 +++++++++++++-
 5 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml
index f23857a..71cc47e 100644
--- a/src/mesa/main/APIspec.xml
+++ b/src/mesa/main/APIspec.xml
@@ -2691,15 +2691,13 @@
                <value name="GL_FLOAT"/>
                <value name="GL_FIXED"/>
                <value name="GL_HALF_FLOAT_OES" 
category="OES_vertex_half_float"/>
-               <value name="GL_UNSIGNED_INT_10_10_10_2_OES" 
category="OES_vertex_type_10_10_10_2"/>
-               <value name="GL_INT_10_10_10_2_OES" 
category="OES_vertex_type_10_10_10_2"/>
        </desc>
 
-       <desc name="type" category="OES_vertex_type_10_10_10_2">
+       <desc name="type" error="GL_INVALID_VALUE" 
category="OES_vertex_type_10_10_10_2">
                <value name="GL_UNSIGNED_INT_10_10_10_2_OES"/>
                <value name="GL_INT_10_10_10_2_OES"/>
 
-               <desc name="size">
+               <desc name="size" error="GL_INVALID_VALUE">
                        <value name="3"/>
                        <value name="4"/>
                </desc>
@@ -4122,6 +4120,7 @@
 <api name="GLES2.0">
        <category name="GLES2.0"/>
 
+       <category name="OES_vertex_type_10_10_10_2"/>
        <category name="OES_compressed_paletted_texture"/>
        <category name="OES_compressed_ETC1_RGB8_texture"/>
        <category name="OES_depth24"/>
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index a843a40..9b74f1c 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -258,6 +258,7 @@ static const struct extension extension_table[] = {
    { "GL_OES_texture_env_crossbar",                
o(ARB_texture_env_crossbar),                     ES1,       2005 },
    { "GL_OES_texture_mirrored_repeat",             o(dummy_true),              
                     ES1,       2005 },
    { "GL_OES_texture_npot",                        
o(ARB_texture_non_power_of_two),                       ES2, 2005 },
+   { "GL_OES_vertex_type_10_10_10_2",              
o(OES_vertex_type_10_10_10_2),                         ES2, 2008 },
 
    /* Vendor extensions */
    { "GL_3DFX_texture_compression_FXT1",           
o(TDFX_texture_compression_FXT1),           GL,             1999 },
diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h
index 3152323..30ce34d 100644
--- a/src/mesa/main/glheader.h
+++ b/src/mesa/main/glheader.h
@@ -143,6 +143,11 @@ typedef void *GLeglImageOES;
 #define GL_ETC1_RGB8_OES                                        0x8D64
 #endif
 
+/* GL_OES_vertex_type_10_10_10_2 */
+#ifndef GL_OES_vertex_type_10_10_10_2
+#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
+#define GL_INT_10_10_10_2_OES                                   0x8DF7
+#endif
 
 /**
  * Internal token to represent a GLSL shader program (a collection of
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index eefe5e7..51ebc00 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2964,6 +2964,7 @@ struct gl_extensions
    GLboolean EXT_timer_query;
    GLboolean EXT_vertex_array_bgra;
    GLboolean OES_standard_derivatives;
+   GLboolean OES_vertex_type_10_10_10_2;
    /* vendor extensions */
    GLboolean AMD_seamless_cubemap_per_texture;
    GLboolean APPLE_packed_pixels;
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index efa63b0..376e62f 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -61,6 +61,8 @@
 #define FIXED_GL_BIT         0x800
 #define UNSIGNED_INT_2_10_10_10_REV_BIT 0x1000
 #define INT_2_10_10_10_REV_BIT 0x2000
+#define UNSIGNED_INT_10_10_10_2_OES_BIT 0x8000
+#define INT_10_10_10_2_OES_BIT 0x10000
 
 
 /** Convert GL datatype enum into a <type>_BIT value seen above */
@@ -97,6 +99,10 @@ type_to_bit(const struct gl_context *ctx, GLenum type)
       return UNSIGNED_INT_2_10_10_10_REV_BIT;
    case GL_INT_2_10_10_10_REV:
       return INT_2_10_10_10_REV_BIT;
+   case GL_UNSIGNED_INT_10_10_10_2_OES:
+      return UNSIGNED_INT_10_10_10_2_OES_BIT;
+   case GL_INT_10_10_10_2_OES:
+      return INT_10_10_10_2_OES_BIT;
    default:
       return 0;
    }
@@ -144,6 +150,10 @@ update_array(struct gl_context *ctx,
       legalTypesMask &= ~(UNSIGNED_INT_2_10_10_10_REV_BIT |
                           INT_2_10_10_10_REV_BIT);
    }
+   if (!ctx->Extensions.OES_vertex_type_10_10_10_2) {
+      legalTypesMask &= ~(UNSIGNED_INT_10_10_10_2_OES_BIT |
+                          INT_10_10_10_2_OES_BIT);
+   }
 
    typeBit = type_to_bit(ctx, type);
    if (typeBit == 0x0 || (typeBit & legalTypesMask) == 0x0) {
@@ -434,7 +444,9 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, 
GLenum type,
                                   HALF_BIT | FLOAT_BIT | DOUBLE_BIT |
                                   FIXED_ES_BIT | FIXED_GL_BIT |
                                   UNSIGNED_INT_2_10_10_10_REV_BIT |
-                                  INT_2_10_10_10_REV_BIT);
+                                  INT_2_10_10_10_REV_BIT |
+                                  UNSIGNED_INT_10_10_10_2_OES_BIT |
+                                  INT_10_10_10_2_OES_BIT);
    GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
-- 
1.7.8

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to