Name

    OES_extended_matrix_palette

Name Strings

    GL_OES_extended_matrix_palette

Contact

    Aaftab Munshi (amunshi@ati.com)

Notice

    Copyright (c) 2005-2013 The Khronos Group Inc. Copyright terms at
        http://www.khronos.org/registry/speccopyright.html

Status

    Ratified by the Khronos BOP, July 22, 2005.

Version

    Last Modified Date: February 3, 2005

Number

    OpenGL ES Extension #8

Dependencies

    OES_matrix_palette is required
    OpenGL ES 1.1 is required.

Overview

    The OES_matrix_palette extension added the ability to support vertex skinning 
    in OpenGL ES.  One issue with OES_matrix_palette is that the minimum size of 
    the matrix palette is very small.  This leads to applications having to break 
    geometry into smaller primitive sets called via. glDrawElements.  This has an 
    impact on the overall performance of the OpenGL ES implementation.  In general, 
    hardware implementations prefer primitive packets with as many triangles as 
    possible.  The default minimum size defined in OES_matrix_palette is not 
    sufficient to allow this.  The OES_extended_matrix_palette extension increases 
    this minimum from 9 to 32.  

        Another issue is that it is very difficult for ISVs to handle different 
        size matrix palettes as it affects how they store their geometry 
        in the database - may require multiple representations which is
        not really feasible.  So the minimum size is going to be what most ISVs
        will use.

        By extending the minimum size of the matrix palette, we remove this
        fragmentation and allow applications to render geometry with minimal
        number of calls to glDrawElements or glDrawArrays.  The OpenGL ES
        implementation can support this without requiring any additional hardware
        by breaking the primitive, plus it gives implementations the flexibility
        to accelerate with a bigger matrix palette if they choose to do so.

        Additionally, feedback has also been received to increase the number of
        matrices that are blend per vertex from 3 to 4.  The OES_extended_matrix_palette
        extension increases the minium number of matrices / vertex to 4.
    
IP Status

    None. 

Issues

    None

New Procedures and Functions

    None

New Tokens

    No new tokens added except that the default values for
    MAX_PALETTE_MATRICES_OES and MAX_VERTEX_UNITS_OES are 32 and 4 respectively.

Additions to Chapter 2 of the OpenGL ES 1.0 Specification

    None

Errors

    None

New State

Get Value                   Type  Command      Value    Description 
---------                   ----  -------      -------  -----------

MAX_PALETTE_MATRICES_OES    Z+    GetIntegerv  32       size of matrix palette
MAX_VERTEX_UNITS_OES        Z+    GetIntegerv  4        number of matrices per vertex

Revision History

    Feb 03, 2005   Aaftab Munshi    First draft of extension
