skia / external / github.com / KhronosGroup / OpenGL-Registry / 0298d27bc4b344bdf7a57b00610fb97f5e1b9dc4 / . / extensions / OES / OES_vertex_type_10_10_10_2.txt

Name | |

OES_vertex_type_10_10_10_2 | |

Name Strings | |

GL_OES_vertex_type_10_10_10_2 | |

Contributors | |

Daniel Ginsburg | |

Gary King | |

Petri Kero | |

Aaftab Munshi | |

Acorn Pooley | |

Mark Callow | |

Ben Bowman | |

Contact | |

Aaftab Munshi (amunshi@apple.com) | |

Notice | |

Copyright (c) 2006-2013 The Khronos Group Inc. Copyright terms at | |

http://www.khronos.org/registry/speccopyright.html | |

Specification Update Policy | |

Khronos-approved extension specifications are updated in response to | |

issues and bugs prioritized by the Khronos OpenGL ES Working Group. For | |

extensions which have been promoted to a core Specification, fixes will | |

first appear in the latest version of that core Specification, and will | |

eventually be backported to the extension document. This policy is | |

described in more detail at | |

https://www.khronos.org/registry/OpenGL/docs/update_policy.php | |

IP Status | |

None. | |

Status | |

Ratified by the Khronos BOP, March 20, 2008. | |

Version | |

Last Modified Date: July 17, 2007 | |

Number | |

OpenGL ES Extension #46 | |

Dependencies | |

This extension is written against the OpenGL ES 2.0 specification | |

Overview | |

This extension adds the following data formats: | |

Two new vertex attribute data formats: a signed 10.10.10.2 and an unsigned | |

10.10.10.2 vertex data format. These vertex data formats describe a 3- or 4-tuple | |

stream which can be used to store normals or other attributes in a quantized | |

form. Normals, tangents, binormals and other vertex attributes can often be specified | |

at reduced precision without introducing noticeable artifacts, reducing the | |

amount of memory and memory bandwidth they consume. | |

Issues | |

1. Should VertexAttrib{1234}[v] functions take UNSIGNED_INT_10_10_10_2_OES and | |

INT_10_10_10_2_OES data formats? | |

RESOLUTION: No. | |

There is no reason to support this, as these functions are not performance or memory | |

footprint critical. It is much more important that the vertex data specified using | |

vertex arrays be able to support these new formats. In addition, we would need a | |

new data type suffix (similar to "f" for float, "x" for fixed) to denote these two | |

new data types which is not desirable. | |

2. Should unsigned 10.10.10.2 RGBA and unsigned 10.10.10 RGB texture formats be | |

supported by this extension? | |

RESOLUTION: No. | |

This extension should focus on enabling 10.10.10{.2} vertex data formats. | |

The 10.10.10{.2} texture formats should be a separate extension. | |

New Procedures and Functions | |

None | |

New Tokens | |

Accepted by the <type> parameter of VertexAttribPointer | |

UNSIGNED_INT_10_10_10_2_OES 0x8DF6 | |

INT_10_10_10_2_OES 0x8DF7 | |

Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation) | |

Modifications to section 2.8 (Vertex Arrays) | |

Add INT_10_10_10_2_OES and UNSIGNED_INT_10_10_10_2_OES as a valid <type> value in Table 2.4. | |

Add a new section 2.8.1 - UNSIGNED_INT_10_10_10_2_OES and INT_10_10_10_2_OES vertex data formats | |

UNSIGNED_INT_10_10_10_2_OES and INT_10_10_10_2_OES vertex data formats describe packed | |

3- or 4- component formats stored in a 32-bit word. These components are expanded to | |

(x, y, z, 1.0) if <size> = 3, or (x, y, z, w) if <size> = 4. | |

For UNSIGNED_INT_10_10_10_2_OES vertex data format, the x, y and z components are | |

represented as a 10-bit unsigned integer value and the w component is represented as a | |

2-bit unsigned integer value. | |

For INT_10_10_10_2_OES vertex data format, the x, y and z components are represented | |

as a 10-bit signed two's complement integer value and the w component is represented | |

as a 2-bit signed two's complement integer value. | |

The <normalized> value is used to indicate whether to normalize the data to | |

[0, 1] (for unsigned type) or [-1, 1] (for signed type). | |

The following figure describes how these components are laid out in a 32-bit word. | |

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | |

------------------------------------------------------------------------------------- | |

| x | y | z | w | | |

------------------------------------------------------------------------------------- | |

Calls to VertexAttribPointer with <type> of INT_10_10_10_2_OES and | |

UNSIGNED_INT_10_10_10_2_OES can only be made with <size> = 3 or 4. | |

<size> values other than 3 or 4 will return an INVALID_VALUE error. | |

Modifications to table 2.9 (Component conversions) | |

Add the following entries: | |

GLType Conversion of (x, y, z) Conversion of w | |

------- ---------------------- =============== | |

INT_10_10_10_2_OES (2c + 1)/(2^10 - 1) (2c + 1)/(2^2 - 1) | |

UNSIGNED_10_10_10_2_OES c / (2^10 - 1) c / (2^2 - 1) | |

Errors | |

The error INVALID_VALUE is generated if glVertexAttribPointer is called | |

with <type> = UNSIGNED_INT_10_10_10_2_OES or INT_10_10_10_2_OES and the | |

<size> parameter is not set to 3 or 4. | |

New State | |

None | |

Revision History | |

March 2, 2006 Aaftab Munshi First draft of extension. | |

March 3, 2006 Aaftab Munshi Changed DEC3N, UDEC3N to INT_10_10_10_2 | |

and UNSIGNED_INT_10_10_10_2 resp. | |

use <normalize> parameter to mark | |

whether data is to be normalized or not. | |

Changed extension name to GL_ATI_vertex_type_10_10_10_2 | |

Changed error returned from INVALID_ENUM | |

to INVALID_VALUE if <size> != 3 | |

March 3, 2006 Aaftab Munshi Added Contributors section. | |

April 10,2006 Aaftab Munshi Support for *_10_10_10_2 as a texture format | |

June 3, 2006 Aaftab Munshi Renamed to use OES suffixes. | |

June 14, 2006 Aaftab Munshi Allow 10_10_10_2 to be (x,y,z,1) or (x,y,z,w) | |

when used as a vertex attribute data format. | |

Oct 20, 2006 Aaftab Munshi Fixed errors to say 3- or 4- tuples instead | |

of just 3- tuples. | |

Jun 13, 2007 Aaftab Munshi Removed 10.10.10{.2} texture formats. | |

Jul 10, 2007 Aaftab Munshi Clarified that each component is a signed 2's complement | |

integer or unsigned integer value. | |

Shorten the extension name from OES_vertex_data_type_10_10_10_2. | |

Jul 17, 2007 Aaftab Munshi Corrections to section 2.8 | |