15bd8deadSopenharmony_ciXXX - Not complete yet!!!
25bd8deadSopenharmony_ciName
35bd8deadSopenharmony_ci
45bd8deadSopenharmony_ci    SGIX_vertex_array_object
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ciName Strings
75bd8deadSopenharmony_ci
85bd8deadSopenharmony_ci    GL_SGIX_vertex_array_object
95bd8deadSopenharmony_ci
105bd8deadSopenharmony_ciVersion
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ci    $Date: 1997/02/21 17:33:22 $ $Revision: 1.3 $
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciNumber
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    XXX
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciDependencies
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Requires either OpenGL 1.1 or EXT_vertex_array to be present.
215bd8deadSopenharmony_ci    EXT_compiled_vertex_array affects the definition of this extension.
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciOverview
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    This extension introduces named vertex array objects.  This extension is 
265bd8deadSopenharmony_ci    primarily useful when coupled with the EXT_compiled_vertex_array extension,
275bd8deadSopenharmony_ci    although that extension is not strictly required.  
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ci    A significant problem with compiled vertex arrays is that they allow only
305bd8deadSopenharmony_ci    one set of arrays to be locked at one time.  This means that
315bd8deadSopenharmony_ci    implementations of compiled vertex array cannot cache copies of vertex
325bd8deadSopenharmony_ci    array data effectively when more than one vertex array is used to compose
335bd8deadSopenharmony_ci    each rendered frame.  After the first vertex array data is locked, and
345bd8deadSopenharmony_ci    perhaps cached by the implementation, the locking of subsequent vertex
355bd8deadSopenharmony_ci    arrays forces the cached copy of the first vertex array to be lost.  It
365bd8deadSopenharmony_ci    cannot be reused next time the original vertex array is re-locked.  The
375bd8deadSopenharmony_ci    only way around this situation is for the application program to put all
385bd8deadSopenharmony_ci    vertex array data into one humungous array and lock it all at once, but
395bd8deadSopenharmony_ci    this is an unreasonable application burden.
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    The vertex array object extension addresses this issue by allowing
425bd8deadSopenharmony_ci    multiple sets of vertex arrays to be locked, and thus cached in the
435bd8deadSopenharmony_ci    graphics hardware, at one time.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ciIssues
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    * It's not clear how useful this is without EXT_compiled_vertex_array.
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    A: It could allow the implementation to leave DMA-able arrays locked in
505bd8deadSopenharmony_ci    host memory, even while they are not bound.  This can speed subsequent
515bd8deadSopenharmony_ci    downloads.  Does this really matter?
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    * Why can't you just use display lists for this?
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    Matt: On some low-end systems, GL hardware state cannot be read back from
565bd8deadSopenharmony_ci    the hardware, so the state is stored either on the CPU or early in the gfx
575bd8deadSopenharmony_ci    pipeline.  If the storage location from which display lists are injected
585bd8deadSopenharmony_ci    into the gfx pipe is downstream from this GL state shadow unit, then
595bd8deadSopenharmony_ci    executing display lists cannot modify GL state.  In summary, low-end
605bd8deadSopenharmony_ci    graphics hardware cannot accelerate display lists since they can modify GL
615bd8deadSopenharmony_ci    state.  Note that even "easy" display lists with only vertex and color
625bd8deadSopenharmony_ci    data modify state.  Vertex array objects are vastly superior to display
635bd8deadSopenharmony_ci    lists in that they are not required to update the GL state that they
645bd8deadSopenharmony_ci    modify.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    Phil: Vertex arrays, unlike display lists, leave behind no "side-effect"
675bd8deadSopenharmony_ci    state, so they don't need to influence the shadow state. In general,
685bd8deadSopenharmony_ci    vertex array objects are much more "hardware-friendly" than display lists.
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci    * Rather than add an entirely new mechanism, which applies to only one
715bd8deadSopenharmony_ci    case of the many that display lists cover, could you add an extension that
725bd8deadSopenharmony_ci    relaxes the state-modification behavior of dlists?
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ci    Matt: Perhaps it could be done, but i don't think anyone would like that.
755bd8deadSopenharmony_ci    It pretty much breaks the display list model.  In order for display lists
765bd8deadSopenharmony_ci    to really be acceleratable on Odyssey, all glEnd commands would have to
775bd8deadSopenharmony_ci    lose current state.
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    Dave Gorgen: A context switch could happen even in the midst of a DL, so
805bd8deadSopenharmony_ci    the idea of relaxing the state-modifying behavior of display lists seems
815bd8deadSopenharmony_ci    quite messy to specify.  State could be lost at essentially any glEnd
825bd8deadSopenharmony_ci    function.
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci    * What about just accelerating vertex arrays in display lists?  The idea
855bd8deadSopenharmony_ci    is to build a display list which contains only DrawElements commands.
865bd8deadSopenharmony_ci    Such a display list would have the desired property of not modifying any
875bd8deadSopenharmony_ci    GL state.
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    Matt: We want to cache the vertex array data.  And we want to be able to
905bd8deadSopenharmony_ci    have multiple arrays of data cached at the same time.  Caching drawarrays
915bd8deadSopenharmony_ci    in display lists doesn't really buy you anything.  What we're looking for
925bd8deadSopenharmony_ci    is a way to cache the data in a persistent way, even while other vertex
935bd8deadSopenharmony_ci    arrays are in use.  Also, multiple uses of the same vertex array data in
945bd8deadSopenharmony_ci    different display lists could not be shared by such a mechanism.
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    * Should we add a general object mechanism?
975bd8deadSopenharmony_ci    
985bd8deadSopenharmony_ci    Yes
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ciReasoning
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    * Note that PrioritizeVertexArraysSGIX and AreVertexArraysResidentSGIX do
1035bd8deadSopenharmony_ci    take zero as a valid argument, which differs with the EXT_texture_object.
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    * Regarding display lists on Odyssey:  
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ciNew Procedures and Functions
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci    void GenVertexArraysSGIX(sizei n,
1105bd8deadSopenharmony_ci			     uint* arrays);
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    void DeleteVertexArraysSGIX(sizei n,
1135bd8deadSopenharmony_ci			        const uint* arrays);
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ci    void BindVertexArraySGIX(uint array);
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    void PrioritizeVertexArraysSGIX(sizei n,
1185bd8deadSopenharmony_ci			       	    const uint* arrays,
1195bd8deadSopenharmony_ci			       	    const clampf* priorities);
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ci    boolean AreVertexArraysResidentSGIX(sizei n,
1225bd8deadSopenharmony_ci				 	const uint* arrays,
1235bd8deadSopenharmony_ci					boolean* residences);
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci    boolean IsVertexArraySGIX(uint array);
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ciNew Tokens
1285bd8deadSopenharmony_ci
1295bd8deadSopenharmony_ci    Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv,
1305bd8deadSopenharmony_ci    GetIntegerv: 
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci	VERTEX_ARRAY_PRIORITY_SGIX	0x????
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv,
1355bd8deadSopenharmony_ci    GetIntegerv:
1365bd8deadSopenharmony_ci
1375bd8deadSopenharmony_ci	VERTEX_ARRAY_RESIDENT_SGIX	0x????
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    Accepted by the <value> parameters of GetBooleanv, GetDoublev, GetFloatv,
1405bd8deadSopenharmony_ci    GetIntegerv:
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci	VERTEX_ARRAY_BINDING_SGIX	0x????
1435bd8deadSopenharmony_ci
1445bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci  Add a new section, 2.8.1: Vertex Array Objects.
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci    It is possible to create named vertex array objects.  The name space for
1495bd8deadSopenharmony_ci    vertex array objects is the unsigned integers, with zero reserved by the
1505bd8deadSopenharmony_ci    GL.
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    A vertex array object is created by binding an unused name.  This binding
1535bd8deadSopenharmony_ci    is accomplished by calling BindVertexArraySGIX with <array> set to the
1545bd8deadSopenharmony_ci    name of the new vertex array object.  When a vertex array object is bound,
1555bd8deadSopenharmony_ci    the association with the previously bound vertex array is automatically
1565bd8deadSopenharmony_ci    broken.  When a new vertex array object is first created, it is a clean
1575bd8deadSopenharmony_ci    copy of the default GL state for all vertex array state fields, as
1585bd8deadSopenharmony_ci    described in the additions to Section 6.
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci    While a vertex array object is bound, GL operations affect the bound
1615bd8deadSopenharmony_ci    vertex array object, and queries return state from the bound vertex array
1625bd8deadSopenharmony_ci    object.  If DrawElements, ArrayElement, or DrawArrays are invoked, the
1635bd8deadSopenharmony_ci    bound vertex array object is used.
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci    In order that access to the default vertex array not be lost, this
1665bd8deadSopenharmony_ci    extension treats them as though their names were all zero.  Thus the
1675bd8deadSopenharmony_ci    default vertex array is operated on, queried, and applied while zero is
1685bd8deadSopenharmony_ci    bound.
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci    Vertex Array objects are deleted by calling DeleteVertexArraysSGIX with
1715bd8deadSopenharmony_ci    <arrays> pointing to a list of <n> names of vertex array object to be
1725bd8deadSopenharmony_ci    deleted.  After a vertex array object is deleted, it has no contents and
1735bd8deadSopenharmony_ci    its name is freed.  If a vertex array object that is currently bound is
1745bd8deadSopenharmony_ci    deleted, the binding reverts to zero.  DeleteVertexArraysSGIX ignores
1755bd8deadSopenharmony_ci    names that do not correspond to vertex arrays objects, including zero.
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ci    GenVertexArraysSGIX returns <n> vertex array object names in <arrays>.
1785bd8deadSopenharmony_ci    These names are chosen in an unspecified manner, the only condition being
1795bd8deadSopenharmony_ci    that only names that were not in use immediately prior to the call to
1805bd8deadSopenharmony_ci    GenVertexArraysSGIX are considered.  Names returned by GenVertexArraysSGIX
1815bd8deadSopenharmony_ci    are marked as used (so that they are not returned by subsequent calls to
1825bd8deadSopenharmony_ci    GenVertexArraysSGIX), but they are associated with a vertex array object
1835bd8deadSopenharmony_ci    only after they are first bound (just as if the name were unused).
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci    An implementation may choose to establish a working set of vertex array
1865bd8deadSopenharmony_ci    objects on which binding operations are performed with higher performance.
1875bd8deadSopenharmony_ci    A vertex array object that is currently being treated as a part of the
1885bd8deadSopenharmony_ci    working set is said to be resident.  AreVertexArraysResidentSGIX returns
1895bd8deadSopenharmony_ci    TRUE if all of the <n> vertex array objects (or default vertex arrays)
1905bd8deadSopenharmony_ci    named in <arrays> are resident, FALSE otherwise.  Note that the default
1915bd8deadSopenharmony_ci    vertex array may be listed in the <arrays> parameter.  If FALSE is
1925bd8deadSopenharmony_ci    returned, the residence of each vertex array object (and possibly that of
1935bd8deadSopenharmony_ci    the default vertex array) is returned in <residences>.  Otherwise the
1945bd8deadSopenharmony_ci    contents of the <residences> array are not changed.  If any of the names
1955bd8deadSopenharmony_ci    in <arrays> is not the name of a vertex array object or zero, FALSE is
1965bd8deadSopenharmony_ci    returned, the error INVALID_VALUE is generated, and the contents of
1975bd8deadSopenharmony_ci    <residences> are indeterminate.  The resident status of a single bound
1985bd8deadSopenharmony_ci    vertex array object can also be queried by calling GetIntegerv,
1995bd8deadSopenharmony_ci    GetBooleanv, GetDoublev, or GetFloatv with <value> set to
2005bd8deadSopenharmony_ci    VERTEX_ARRAY_RESIDENT_SGIX.  Note that the residence status of vertex
2015bd8deadSopenharmony_ci    array zero may be determined by calling any of
2025bd8deadSopenharmony_ci    AreVertexArraysResidentSGIX, GetFloatv, GetDoublev, GetIntegerv, or
2035bd8deadSopenharmony_ci    GetBooleanv.
2045bd8deadSopenharmony_ci
2055bd8deadSopenharmony_ci    Applications guide the OpenGL implementation in determining which vertex
2065bd8deadSopenharmony_ci    array objects should be resident by specifying a priority for each vertex
2075bd8deadSopenharmony_ci    array object.  PrioritizeVertexArraysSGIX sets the priorities of the <n>
2085bd8deadSopenharmony_ci    vertex array objects in <arrays> to the values in <priorities>.  Each
2095bd8deadSopenharmony_ci    priority value is clamped to the range [0.0, 1.0] before it is assigned.
2105bd8deadSopenharmony_ci    Zero indicates the lowest priority, and hence the least likelihood of
2115bd8deadSopenharmony_ci    being resident.  One indicates the highest priority, and hence the
2125bd8deadSopenharmony_ci    greatest likelihood of being resident.  PrioritizeVertexArraysSGIX does
2135bd8deadSopenharmony_ci    accept priorities for and vertex array zero, the default vertex array
2145bd8deadSopenharmony_ci    object.
2155bd8deadSopenharmony_ci
2165bd8deadSopenharmony_ci  Add a new section, 2.8.2: Compiled Vertex Array Objects.
2175bd8deadSopenharmony_ci
2185bd8deadSopenharmony_ci    LockArraysEXT and UnlockArraysEXT cause vertex array objects (or the
2195bd8deadSopenharmony_ci    default vertex array) which is currently bound to be considered locked.
2205bd8deadSopenharmony_ci    Locking allows pre-compilation or copying of the array contents.  The
2215bd8deadSopenharmony_ci    implementation is free to copy array elements when they become locked, and
2225bd8deadSopenharmony_ci    use those cached copies until such time as the vertex array becomes
2235bd8deadSopenharmony_ci    unlocked.
2245bd8deadSopenharmony_ci
2255bd8deadSopenharmony_ci    When a vertex array object (or the default vertex array) which was bound
2265bd8deadSopenharmony_ci    becomes unbound (due to a rebinding to another object or default texture),
2275bd8deadSopenharmony_ci    the current lock state is retained in the vertex array object.  When a new
2285bd8deadSopenharmony_ci    vertex array object is bound, the lock state of the new current array
2295bd8deadSopenharmony_ci    object is restored from the last time it was bound.
2305bd8deadSopenharmony_ci
2315bd8deadSopenharmony_ci    If vertex array data is locked when an object becomes unbound, the memory
2325bd8deadSopenharmony_ci    in the client-side array should not be modified until after that vertex
2335bd8deadSopenharmony_ci    array object is both rebound and unlocked.  In other words, locking
2345bd8deadSopenharmony_ci    persists even when the vertex object is currently unbound.  The client
2355bd8deadSopenharmony_ci    array is still considered locked, and its contents should not be changed
2365bd8deadSopenharmony_ci    or undefined results may occur.
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci    This behavior allows applications using multiple vertex array objects to
2395bd8deadSopenharmony_ci    retain cached copies of those vertex arrays in the graphics hardware,
2405bd8deadSopenharmony_ci    whenever possible.
2415bd8deadSopenharmony_ci
2425bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization)
2435bd8deadSopenharmony_ci
2445bd8deadSopenharmony_ci    None
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
2475bd8deadSopenharmony_ciand the Frame Buffer)
2485bd8deadSopenharmony_ci
2495bd8deadSopenharmony_ci    None
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions)
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ci    None of these commands are included in display lists.
2545bd8deadSopenharmony_ci
2555bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests)
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ci    IsVertexArraySGIX returns TRUE if <array> is the name of a valid vertex
2585bd8deadSopenharmony_ci    array object.  If <array> is zero, or is a non-zero value that is not
2595bd8deadSopenharmony_ci    the name of a vertex array object, or if an error condition occurs,
2605bd8deadSopenharmony_ci    IsVertexArraySGIX returns FALSE.
2615bd8deadSopenharmony_ci
2625bd8deadSopenharmony_ci    The name of the vertex array object currently bound is returned in
2635bd8deadSopenharmony_ci    <params> when GetIntegerv is called with <value> set to
2645bd8deadSopenharmony_ci    VERTEX_ARRAY_BINDING_SGIX.  If no vertex array object is currently bound,
2655bd8deadSopenharmony_ci    zero is returned.  
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci    A vertex array object comprises the vertex array priority, element size,
2685bd8deadSopenharmony_ci    type, stride, and client array pointters that are associated with that
2695bd8deadSopenharmony_ci    object.  More explicitly, the state list
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci	VERTEX_ARRAY_PRIORITY_SGIX,
2725bd8deadSopenharmony_ci	VERTEX_ARRAY_SIZE,
2735bd8deadSopenharmony_ci	VERTEX_ARRAY_TYPE,
2745bd8deadSopenharmony_ci	VERTEX_ARRAY_STRIDE,
2755bd8deadSopenharmony_ci	VERTEX_ARRAY_POINTER,
2765bd8deadSopenharmony_ci	NORMAL_ARRAY_TYPE,
2775bd8deadSopenharmony_ci	NORMAL_ARRAY_STRIDE,
2785bd8deadSopenharmony_ci	NORMAL_ARRAY_POINTER,
2795bd8deadSopenharmony_ci	COLOR_ARRAY_SIZE,
2805bd8deadSopenharmony_ci	COLOR_ARRAY_TYPE,
2815bd8deadSopenharmony_ci	COLOR_ARRAY_STRIDE,
2825bd8deadSopenharmony_ci	COLOR_ARRAY_POINTER,
2835bd8deadSopenharmony_ci	INDEX_ARRAY_TYPE,
2845bd8deadSopenharmony_ci	INDEX_ARRAY_STRIDE,
2855bd8deadSopenharmony_ci	INDEX_ARRAY_POINTER,
2865bd8deadSopenharmony_ci	TEXTURE_COORD_ARRAY_SIZE,
2875bd8deadSopenharmony_ci	TEXTURE_COORD_ARRAY_TYPE,
2885bd8deadSopenharmony_ci	TEXTURE_COORD_ARRAY_STRIDE,
2895bd8deadSopenharmony_ci	TEXTURE_COORD_ARRAY_POINTER,
2905bd8deadSopenharmony_ci	EDGE_FLAG_ARRAY_STRIDE,
2915bd8deadSopenharmony_ci	EDGE_FLAG_ARRAY_POINTER,
2925bd8deadSopenharmony_ci	ARRAY_ELEMENT_LOCK_FIRST_EXT,
2935bd8deadSopenharmony_ci	ARRAY_ELEMENT_LOCK_COUNT_EXT
2945bd8deadSopenharmony_ci
2955bd8deadSopenharmony_ci    composes a single vertex array object.
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ciAdditions to the GLX Specification
2985bd8deadSopenharmony_ci
2995bd8deadSopenharmony_ci    Vertex array objects are shared between GLX rendering contexts if and only
3005bd8deadSopenharmony_ci    if the rendering contexts share display lists.  No change is made to
3015bd8deadSopenharmony_ci    the GLX API.
3025bd8deadSopenharmony_ci
3035bd8deadSopenharmony_ciGLX Protocol
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci    XXX - Not figured out yet.
3065bd8deadSopenharmony_ci
3075bd8deadSopenharmony_ciDependencies on OpenGL 1.1
3085bd8deadSopenharmony_ciDependencies on EXT_vertex_array
3095bd8deadSopenharmony_ci
3105bd8deadSopenharmony_ci    Requires either OpenGL 1.1 or EXT_vertex_array to be present.
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ciDependencies on EXT_compiled_vertex_array
3135bd8deadSopenharmony_ci
3145bd8deadSopenharmony_ci    If EXT_compiled_vertex_array is not supported, section 2.8.2 should
3155bd8deadSopenharmony_ci    be omited, and the ARRAY_ELEMENT_XXX constants in the Chapter 6 addition
3165bd8deadSopenharmony_ci    should be omitted. 
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ciErrors
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci    INVALID_VALUE is generated if GenVertexArraysSGIX parameter <n> is
3215bd8deadSopenharmony_ci    negative.
3225bd8deadSopenharmony_ci
3235bd8deadSopenharmony_ci    INVALID_VALUE is generated if DeleteVertexArraysSGIX parameter <n> is
3245bd8deadSopenharmony_ci    negative.
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci    INVALID_VALUE is generated if PrioritizeVertexArraysSGIX parameter <n>
3275bd8deadSopenharmony_ci    negative.
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci    INVALID_VALUE is generated if AreVertexArraysResidentSGIX parameter <n> is
3305bd8deadSopenharmony_ci    negative.
3315bd8deadSopenharmony_ci
3325bd8deadSopenharmony_ci    INVALID_VALUE is generated by AreVertexArraysResidentSGIX if any of the
3335bd8deadSopenharmony_ci    names in <arrays> is not the name of a vertex array object or zero.
3345bd8deadSopenharmony_ci
3355bd8deadSopenharmony_ci    INVALID_OPERATION is generated if any of the commands defined in this
3365bd8deadSopenharmony_ci    extension is executed between the execution of Begin and the corresponding
3375bd8deadSopenharmony_ci    execution of End.
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ciNew State
3405bd8deadSopenharmony_ci
3415bd8deadSopenharmony_ci  Append to table 6.6: Vertex Array Data:
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci    Get Value				Get Command		Type			Initial Value		Attribute
3445bd8deadSopenharmony_ci    ---------				-----------		----			-------------		---------
3455bd8deadSopenharmony_ci    VERTEX_ARRAY_BINDING_SGIX		GetIntegerv		Z+			0			client
3465bd8deadSopenharmony_ci    VERTEX_ARRAY_PRIORITY_SGIX		GetFloatv		R[0,1]			1			client
3475bd8deadSopenharmony_ci
3485bd8deadSopenharmony_ciNew Implementation Dependent State
3495bd8deadSopenharmony_ci
3505bd8deadSopenharmony_ci    None
351