15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    AMD_name_gen_delete
45bd8deadSopenharmony_ci        
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ciName Strings
75bd8deadSopenharmony_ci
85bd8deadSopenharmony_ci    GL_AMD_name_gen_delete
95bd8deadSopenharmony_ci
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ciContributors
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ci    Balaji Calidas
145bd8deadSopenharmony_ci    Mark Young
155bd8deadSopenharmony_ci    Murat Balci
165bd8deadSopenharmony_ci    Benedikt Kessler
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ciContact
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    Mark Young (mark.young 'at' amd.com)
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciStatus
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    In Progress.
265bd8deadSopenharmony_ci    
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciVersion
295bd8deadSopenharmony_ci    
305bd8deadSopenharmony_ci    Last Modified Date: February 10, 2010
315bd8deadSopenharmony_ci    Author Revision:    1
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ciNumber
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    394
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ciDependencies
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    OpenGL 2.1 is required.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    ARB_framebuffer_object affects this spec.
445bd8deadSopenharmony_ci
455bd8deadSopenharmony_ci    ARB_vertex_array_object affects this spec.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ci    EXT_transform_feedback affects this spec.
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    EXT_transform_feedback2 affects this spec.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci    AMD_performance_monitor affects this spec
525bd8deadSopenharmony_ci
535bd8deadSopenharmony_ci    ARB_sampler_objects affects this spec
545bd8deadSopenharmony_ci    
555bd8deadSopenharmony_ci    
565bd8deadSopenharmony_ciOverview
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    This extension simply creates 2 new entry-points that name generic
595bd8deadSopenharmony_ci    creation and deletion of names.  The intent is to go away from API
605bd8deadSopenharmony_ci    functionality that provides a create/delete function for each specific 
615bd8deadSopenharmony_ci    object.  
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    For example: 
645bd8deadSopenharmony_ci        glGenTextures/glDeleteTextures/glIsTexture
655bd8deadSopenharmony_ci        glGenBuffers/glDeleteBuffers/IsBuffer
665bd8deadSopenharmony_ci        glGenFramebuffers/glDeleteFramebuffers/IsFramebuffer
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    Instead, everything is created using one entry-point GenNamesAMD and
695bd8deadSopenharmony_ci    everything is now deleted with another entry-point DeleteNamesAMD with
705bd8deadSopenharmony_ci    the appropriate identifier set.  In addition, everything can now be 
715bd8deadSopenharmony_ci    queried with IsNameAMD.
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    This alleviates the problem we may eventually encounter where we have
745bd8deadSopenharmony_ci    many Gen/Delete/Is functions where 3 might suffice.  All that is needed
755bd8deadSopenharmony_ci    in the new case is to add a valid identifier to the accepted parameters
765bd8deadSopenharmony_ci    list.
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci    
795bd8deadSopenharmony_ciIP Status
805bd8deadSopenharmony_ci    
815bd8deadSopenharmony_ci    No known IP claims.
825bd8deadSopenharmony_ci    
835bd8deadSopenharmony_ci     
845bd8deadSopenharmony_ciNew Procedures and Functions
855bd8deadSopenharmony_ci    
865bd8deadSopenharmony_ci    void GenNamesAMD(enum identifier, uint num, uint *names);
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    void DeleteNamesAMD(enum identifier, uint num, const uint *names);
895bd8deadSopenharmony_ci 
905bd8deadSopenharmony_ci    boolean IsNameAMD(enum identifier, uint name);   
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ciNew Types
935bd8deadSopenharmony_ci    
945bd8deadSopenharmony_ci    None.
955bd8deadSopenharmony_ci    
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ciNew Tokens
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ci    Accepted as the <identifier> parameter of GenNamesAMD and DeleteNamesAMD:
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci    DATA_BUFFER_AMD                               0x9151
1025bd8deadSopenharmony_ci    PERFORMANCE_MONITOR_AMD                       0x9152
1035bd8deadSopenharmony_ci    QUERY_OBJECT_AMD                              0x9153
1045bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT_AMD                       0x9154
1055bd8deadSopenharmony_ci    SAMPLER_OBJECT_AMD                            0x9155
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 2.1 Specification (OpenGL Operation)
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    Insert a new section before section 2.9 "Buffer Objects" titled
1115bd8deadSopenharmony_ci    "Object Name Handling"
1125bd8deadSopenharmony_ci    ----------------------------------------------------------------
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    2.x Object Name Handling
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci    2.x.1 Name Generation
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    Objects in OpenGL are created, modified, and deleted using names.  These 
1195bd8deadSopenharmony_ci    names are unique per object type, but can be common across multiple types.
1205bd8deadSopenharmony_ci    For example, a texture and a query object may both be named 127, but two
1215bd8deadSopenharmony_ci    query different query objects cannot have the name 127 in the same context.
1225bd8deadSopenharmony_ci    These names are generated using each types own specific GenXXX command, but
1235bd8deadSopenharmony_ci    can also be created using the more generic command
1245bd8deadSopenharmony_ci
1255bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    where <identifier> indicates the type of object that is to be created, <n>
1285bd8deadSopenharmony_ci    is used to indicate how many objects to create, and <names> is a previously
1295bd8deadSopenharmony_ci    allocated array that the new generated names will be supplied in.  These 
1305bd8deadSopenharmony_ci    names for marked as used for the purposes of the type of object specified by
1315bd8deadSopenharmony_ci    <identifier> (and their own individual GenXXX command), but they do not
1325bd8deadSopenharmony_ci    typically acquire any state until they are first bound, just as if they were
1335bd8deadSopenharmony_ci    unused.
1345bd8deadSopenharmony_ci
1355bd8deadSopenharmony_ci    Valid values for <identifier> currently are:
1365bd8deadSopenharmony_ci      - DATA_BUFFER_AMD   (For ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER, 
1375bd8deadSopenharmony_ci                            PIXEL_PACK_BUFFER, and PIXEL_UNPACK_BUFFER)
1385bd8deadSopenharmony_ci      - FRAMEBUFFER
1395bd8deadSopenharmony_ci      - RENDERBUFFER
1405bd8deadSopenharmony_ci      - TEXTURE
1415bd8deadSopenharmony_ci      - TRANSFORM_FEEDBACK_EXT
1425bd8deadSopenharmony_ci      - VERTEX_ARRAY_OBJECT_AMD (For VAOs instead of VERTEX_ARRAY_BINDING)
1435bd8deadSopenharmony_ci      - QUERY_OBJECT_AMD        (For query objects)
1445bd8deadSopenharmony_ci      - PERFORMANCE_MONITOR_AMD (For a performance monitor object)
1455bd8deadSopenharmony_ci      - SAMPLER_OBJECT_AMD      (For a sampler object)
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ci    If <identifier> is not one of these valid values, the error INVALID_ENUM
1485bd8deadSopenharmony_ci    will be triggered.  If <n> is a number zero or <names> is NULL, the error
1495bd8deadSopenharmony_ci    INVALID_VALUE is triggered.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ci    2.x.2 Name Deletion
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    Object names can be deleted when they are no longer needed using the command
1555bd8deadSopenharmony_ci    
1565bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
1575bd8deadSopenharmony_ci        
1585bd8deadSopenharmony_ci    where <identifier> indicates one of the above valid types, and <n> indicates
1595bd8deadSopenharmony_ci    how many object names are provided in the <names> array. Similar to 
1605bd8deadSopenharmony_ci    GenNamesAMD, each object type also has its own DeleteXXX command.  
1615bd8deadSopenharmony_ci    DeleteNamesAMD with a given object type behaves in the same way that the
1625bd8deadSopenharmony_ci    object types specific DeleteXXX command does.  
1635bd8deadSopenharmony_ci
1645bd8deadSopenharmony_ci    If <identifier> is not one of these valid values, the error INVALID_ENUM
1655bd8deadSopenharmony_ci    will be triggered.  If <n> is a number zero or <names> is NULL, the error
1665bd8deadSopenharmony_ci    INVALID_VALUE is triggered.
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci    2.x.3 Name Querying
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci    Object names can be queried to make sure that an object of the given type
1725bd8deadSopenharmony_ci    exists using the command
1735bd8deadSopenharmony_ci    
1745bd8deadSopenharmony_ci        boolean IsNameAMD( enum identifier, uint name );
1755bd8deadSopenharmony_ci        
1765bd8deadSopenharmony_ci    where <identifier> indicates one of the above valid types, and <name> 
1775bd8deadSopenharmony_ci    is the name that is being identified as a valid name for that object
1785bd8deadSopenharmony_ci    type. Similar to GenNamesAMD and DeleteNamesAMD, each object type also 
1795bd8deadSopenharmony_ci    has its own IsXXX command.  IsNameAMD with a given object type behaves in 
1805bd8deadSopenharmony_ci    the same way that the object types specific IsXXX command does.  
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ci    If <identifier> is not one of these valid values, the error INVALID_ENUM
1835bd8deadSopenharmony_ci    will be triggered.
1845bd8deadSopenharmony_ci
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    2.x.4 Name Binding
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci    Objects are typically enabled for usage through a Bind call or something
1895bd8deadSopenharmony_ci    similar.  The process for binding objects for usage is handled differently
1905bd8deadSopenharmony_ci    per object type.  For further information on how to use each object, refer
1915bd8deadSopenharmony_ci    to its section later in this spec.
1925bd8deadSopenharmony_ci
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci
1955bd8deadSopenharmony_ci    Modify section 2.9 "Buffer Objects", page 33.
1965bd8deadSopenharmony_ci    ----------------------------------------------------------------
1975bd8deadSopenharmony_ci
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteBuffers' insert:
2005bd8deadSopenharmony_ci    ----------------------------------------------------------------
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci    Calling the command
2035bd8deadSopenharmony_ci
2045bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
2055bd8deadSopenharmony_ci
2065bd8deadSopenharmony_ci    with <identifier> set to DATA_BUFFER_AMD behaves the same as using the
2075bd8deadSopenharmony_ci    DeleteBuffers command.
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci
2105bd8deadSopenharmony_ci    Modify the paragraphs talking about 'GenBuffers':
2115bd8deadSopenharmony_ci    ----------------------------------------------------------------
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci    The commands
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ci        void GenBuffers( sizei n, uint *buffers );
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    returns <n> previously unused buffer object names in <buffers>. These names
2185bd8deadSopenharmony_ci    are marked as used, for the purposes of GenBuffers and GenNamesAMD when used
2195bd8deadSopenharmony_ci    with <identifier> set to DATA_BUFFER_AMD only, but they acquire buffer state
2205bd8deadSopenharmony_ci    only when they are first bound, just as if they were unused.
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci    Calling the command
2235bd8deadSopenharmony_ci
2245bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ci    with <identifier> set to DATA_BUFFER_AMD behaves the same as using the
2275bd8deadSopenharmony_ci    GenBuffers command.
2285bd8deadSopenharmony_ci
2295bd8deadSopenharmony_ci    While a buffer object is bound, any GL operations on that object affect any
2305bd8deadSopenharmony_ci    other bindings of that object. If a buffer object is deleted while it is 
2315bd8deadSopenharmony_ci    bound, all bindings to that object in the current context (i.e. in the 
2325bd8deadSopenharmony_ci    thread that called DeleteBuffers or DeleteNamesAMD with <identifier> set to
2335bd8deadSopenharmony_ci    DATA_BUFFER_AMD) are reset to zero. Bindings to that buffer in other 
2345bd8deadSopenharmony_ci    contexts and other threads are not affected, but attempting to use a deleted 
2355bd8deadSopenharmony_ci    buffer in another thread...
2365bd8deadSopenharmony_ci
2375bd8deadSopenharmony_ci
2385bd8deadSopenharmony_ci
2395bd8deadSopenharmony_ci    Modify the new section 2.y "Vertex Array Objects".
2405bd8deadSopenharmony_ci           Added by ARB_vertex_array_object
2415bd8deadSopenharmony_ci    ----------------------------------------------------------------
2425bd8deadSopenharmony_ci
2435bd8deadSopenharmony_ci    Modify the paragraphs talking about 'GenVertexArrays':
2445bd8deadSopenharmony_ci    ----------------------------------------------------------------
2455bd8deadSopenharmony_ci
2465bd8deadSopenharmony_ci    The commands
2475bd8deadSopenharmony_ci
2485bd8deadSopenharmony_ci        void GenVertexArrays( sizei n, uint *arrays );
2495bd8deadSopenharmony_ci
2505bd8deadSopenharmony_ci    returns <n> previous unused vertex array object names in <arrays>.  These
2515bd8deadSopenharmony_ci    names are marked as used, for the purposes of GenVertexArrays and 
2525bd8deadSopenharmony_ci    GenNamesAMD (when <identifier> is set to VERTEX_ARRAY_OBJECT_AMD) only,
2535bd8deadSopenharmony_ci    and are initialized with the state listed in tables 6.6 (except for
2545bd8deadSopenharmony_ci    the CLIENT_ACTIVE_TEXTURE selector state), 6.7 and 6.8.
2555bd8deadSopenharmony_ci
2565bd8deadSopenharmony_ci    Calling the command
2575bd8deadSopenharmony_ci
2585bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
2595bd8deadSopenharmony_ci
2605bd8deadSopenharmony_ci    with <identifier> set to VERTEX_ARRAY_OBJECT_AMD behaves the same as using
2615bd8deadSopenharmony_ci    the GenVertexArrays command.
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci
2645bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteVertexArrays' insert:
2655bd8deadSopenharmony_ci    ----------------------------------------------------------------
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ci    Calling the command
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
2705bd8deadSopenharmony_ci
2715bd8deadSopenharmony_ci    with <identifier> set to VERTEX_ARRAY_OBJECT_AMD behaves the same as using
2725bd8deadSopenharmony_ci    the DeleteVertexArrays command.
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci
2755bd8deadSopenharmony_ci    Modify the paragraph that starts with 
2765bd8deadSopenharmony_ci    'BindVertexArray fails and an INVALID_OPERATION error'... to:
2775bd8deadSopenharmony_ci    ----------------------------------------------------------------
2785bd8deadSopenharmony_ci    BindVertexArray fails and an INVALID_OPERATION error is generated if
2795bd8deadSopenharmony_ci    array is not a name returned from a previous call to
2805bd8deadSopenharmony_ci    GenVertexArrays (or GenNamesAMD with <identifier> set to 
2815bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT), or if such a name has since been deleted with
2825bd8deadSopenharmony_ci    either DeleteVertexArrays or DeleteNamesAMD (with <identifier> set to
2835bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT). An INVALID_OPERATION error is generated
2845bd8deadSopenharmony_ci    if VertexAttribPointer or VertexAttribIPointer is called while a
2855bd8deadSopenharmony_ci    non-zero vertex array object is bound and zero is bound to the
2865bd8deadSopenharmony_ci    ARRAY_BUFFER buffer object binding point[fn].
2875bd8deadSopenharmony_ci
2885bd8deadSopenharmony_ci
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci    Modify the new section 2.z.1 "Transform Feedback Objects"
2915bd8deadSopenharmony_ci           Added by EXT_transform_feedback2
2925bd8deadSopenharmony_ci    ----------------------------------------------------------------
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci    Add after the paragraphs talking about 'DeleteTransformFeedbacksEXT':
2955bd8deadSopenharmony_ci    ----------------------------------------------------------------
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci    Calling the command
2985bd8deadSopenharmony_ci
2995bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
3005bd8deadSopenharmony_ci
3015bd8deadSopenharmony_ci    with <identifier> set to TRANSFORM_FEEDBACK_EXT behaves the same as using
3025bd8deadSopenharmony_ci    the DeleteTransformFeedbacksEXT command.
3035bd8deadSopenharmony_ci
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci    Modify the paragraphs talking about 'GenTransformFeedbacksEXT':
3065bd8deadSopenharmony_ci    ----------------------------------------------------------------
3075bd8deadSopenharmony_ci
3085bd8deadSopenharmony_ci    The command
3095bd8deadSopenharmony_ci
3105bd8deadSopenharmony_ci        void GenTransformFeedbacksEXT(sizei n, uint *ids)
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci    returns <n> previously unused transform feedback object names in <ids>.
3135bd8deadSopenharmony_ci    These names are marked as used, for the purposes of
3145bd8deadSopenharmony_ci    GenTransformFeedbacksEXT and GenNamesAMD (when <identifier> is set to 
3155bd8deadSopenharmony_ci    TRANSFORM_FEEDBACK_EXT) only, but they acquire transform feedback state
3165bd8deadSopenharmony_ci    only when they are first bound, just as if they were unused.
3175bd8deadSopenharmony_ci
3185bd8deadSopenharmony_ci    Calling the command
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
3215bd8deadSopenharmony_ci
3225bd8deadSopenharmony_ci    with <identifier> set to TRANSFORM_FEEDBACK_EXT behaves the same as using
3235bd8deadSopenharmony_ci    the GenTransformFeedbacksEXT command.
3245bd8deadSopenharmony_ci
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci    Modify the paragraph that starts with 
3275bd8deadSopenharmony_ci    'BindVertexArray fails and an INVALID_OPERATION error'... to:
3285bd8deadSopenharmony_ci    ----------------------------------------------------------------
3295bd8deadSopenharmony_ci    BindVertexArray fails and an INVALID_OPERATION error is generated if
3305bd8deadSopenharmony_ci    array is not a name returned from a previous call to
3315bd8deadSopenharmony_ci    GenVertexArrays (or GenNamesAMD with <identifier> set to 
3325bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT), or if such a name has since been deleted with
3335bd8deadSopenharmony_ci    either DeleteVertexArrays or DeleteNamesAMD (with <identifier> set to
3345bd8deadSopenharmony_ci    VERTEX_ARRAY_OBJECT). An INVALID_OPERATION error is generated
3355bd8deadSopenharmony_ci    if VertexAttribPointer or VertexAttribIPointer is called while a
3365bd8deadSopenharmony_ci    non-zero vertex array object is bound and zero is bound to the
3375bd8deadSopenharmony_ci    ARRAY_BUFFER buffer object binding point[fn].
3385bd8deadSopenharmony_ci
3395bd8deadSopenharmony_ci
3405bd8deadSopenharmony_ci
3415bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.1 Specification (Rasterization)
3425bd8deadSopenharmony_ci
3435bd8deadSopenharmony_ci    Modify section 3.8.12 "Texture Objects", page 182.
3445bd8deadSopenharmony_ci    ----------------------------------------------------------------
3455bd8deadSopenharmony_ci
3465bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteTextures' insert:
3475bd8deadSopenharmony_ci    ----------------------------------------------------------------
3485bd8deadSopenharmony_ci
3495bd8deadSopenharmony_ci    Calling the command
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    with <identifier> set to TEXTURE behaves the same as using the
3545bd8deadSopenharmony_ci    DeleteTextures command.
3555bd8deadSopenharmony_ci
3565bd8deadSopenharmony_ci
3575bd8deadSopenharmony_ci    Modify the paragraphs talking about 'GenTextures':
3585bd8deadSopenharmony_ci    ----------------------------------------------------------------
3595bd8deadSopenharmony_ci
3605bd8deadSopenharmony_ci    The commands
3615bd8deadSopenharmony_ci
3625bd8deadSopenharmony_ci        void GenTextures( sizei n, uint *textures );
3635bd8deadSopenharmony_ci
3645bd8deadSopenharmony_ci    returns <n> previously unused texture object names in <textures>.  These names
3655bd8deadSopenharmony_ci    are marked as used, for the purposes of GenTextures and GenNamesAMD when used
3665bd8deadSopenharmony_ci    with <identifier> set to TEXTURE only, but they acquire texture state and
3675bd8deadSopenharmony_ci    dimensionality only when they are first bound, just as if they were unused.
3685bd8deadSopenharmony_ci
3695bd8deadSopenharmony_ci    Calling the command
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
3725bd8deadSopenharmony_ci
3735bd8deadSopenharmony_ci    with <identifier> set to TEXTURE behaves the same as using the
3745bd8deadSopenharmony_ci    GenBuffers command.
3755bd8deadSopenharmony_ci
3765bd8deadSopenharmony_ci
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci    Modify section 3.9.2 "Sampler Objects".
3795bd8deadSopenharmony_ci    ----------------------------------------------------------------
3805bd8deadSopenharmony_ci
3815bd8deadSopenharmony_ci    After the paragraphs talking about 'GenSamplers' insert:
3825bd8deadSopenharmony_ci    ----------------------------------------------------------------
3835bd8deadSopenharmony_ci
3845bd8deadSopenharmony_ci    Calling the command
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
3875bd8deadSopenharmony_ci
3885bd8deadSopenharmony_ci    with <identifier> set to SAMPLER_OBJECT_AMD behaves the same as using the
3895bd8deadSopenharmony_ci    GenSamplers command.
3905bd8deadSopenharmony_ci
3915bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteSamplers' insert:
3925bd8deadSopenharmony_ci    ----------------------------------------------------------------
3935bd8deadSopenharmony_ci
3945bd8deadSopenharmony_ci    Calling the command
3955bd8deadSopenharmony_ci
3965bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
3975bd8deadSopenharmony_ci
3985bd8deadSopenharmony_ci    with <identifier> set to SAMPLER_OBJECT_AMD behaves the same as using the
3995bd8deadSopenharmony_ci    DeleteSamplers command.
4005bd8deadSopenharmony_ci
4015bd8deadSopenharmony_ci
4025bd8deadSopenharmony_ci
4035bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.1 Specification (Per-Fragment Operations
4045bd8deadSopenharmony_ciand the Framebuffer)
4055bd8deadSopenharmony_ci
4065bd8deadSopenharmony_ci    Modify section 4.1.7 "Occlusion Queries", page 207.
4075bd8deadSopenharmony_ci    ----------------------------------------------------------------
4085bd8deadSopenharmony_ci
4095bd8deadSopenharmony_ci    Insert after the paragraph talking about 'GenQueries':
4105bd8deadSopenharmony_ci    ----------------------------------------------------------------
4115bd8deadSopenharmony_ci
4125bd8deadSopenharmony_ci     Calling the command
4135bd8deadSopenharmony_ci
4145bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
4155bd8deadSopenharmony_ci
4165bd8deadSopenharmony_ci    with <identifier> set to QUERY_OBJECT_AMD behaves the same as using the
4175bd8deadSopenharmony_ci    GenQueries command.
4185bd8deadSopenharmony_ci
4195bd8deadSopenharmony_ci
4205bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteQueries' insert:
4215bd8deadSopenharmony_ci    ----------------------------------------------------------------
4225bd8deadSopenharmony_ci
4235bd8deadSopenharmony_ci    Calling the command
4245bd8deadSopenharmony_ci
4255bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
4265bd8deadSopenharmony_ci
4275bd8deadSopenharmony_ci    with <identifier> set to QUERY_OBJECT_AMD behaves the same as using the
4285bd8deadSopenharmony_ci    DeleteTextures command.
4295bd8deadSopenharmony_ci
4305bd8deadSopenharmony_ci
4315bd8deadSopenharmony_ci    Modify the paragraph that talks about GenQueries and DeleteQueries errors
4325bd8deadSopenharmony_ci    after that:
4335bd8deadSopenharmony_ci    ----------------------------------------------------------------
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ci    Calling either GenQueries, DeleteQueries, GenNamesAMD(QUERY_OBJECT_AMD),
4365bd8deadSopenharmony_ci    or DeleteNamesAMD(QUERY_OBJECT_AMD), while any query of any target is
4375bd8deadSopenharmony_ci    active causes an INVALID OPERATION error to be generated.
4385bd8deadSopenharmony_ci
4395bd8deadSopenharmony_ci
4405bd8deadSopenharmony_ci    Modify section 4.4.1 "Binding and Managing Framebuffer Objects"
4415bd8deadSopenharmony_ci    ----------------------------------------------------------------
4425bd8deadSopenharmony_ci
4435bd8deadSopenharmony_ci
4445bd8deadSopenharmony_ci    Modify the 2nd paragraph to read:
4455bd8deadSopenharmony_ci    ----------------------------------------------------------------
4465bd8deadSopenharmony_ci
4475bd8deadSopenharmony_ci    A framebuffer object is created by binding a name returned by 
4485bd8deadSopenharmony_ci    GenFramebuffers or GenNamesAMD (see below) to DRAW_FRAMEBUFFER or 
4495bd8deadSopenharmony_ci    READ_FRAMEBUFFER. The binding is effected by calling
4505bd8deadSopenharmony_ci
4515bd8deadSopenharmony_ci
4525bd8deadSopenharmony_ci    Modify the 5th paragraph to read:
4535bd8deadSopenharmony_ci    ----------------------------------------------------------------
4545bd8deadSopenharmony_ci
4555bd8deadSopenharmony_ci    BindFramebuffer fails and an INVALID_OPERATION error is generated if
4565bd8deadSopenharmony_ci    <framebuffer> is not zero or a name returned from a previous call to
4575bd8deadSopenharmony_ci    GenFramebuffers or GenNamesAMD, or if such a name has since been 
4585bd8deadSopenharmony_ci    deleted with DeleteFramebuffers or DeleteNamesAMD.
4595bd8deadSopenharmony_ci
4605bd8deadSopenharmony_ci
4615bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteFramebuffers' insert:
4625bd8deadSopenharmony_ci    ----------------------------------------------------------------
4635bd8deadSopenharmony_ci
4645bd8deadSopenharmony_ci    Calling the command
4655bd8deadSopenharmony_ci
4665bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
4675bd8deadSopenharmony_ci
4685bd8deadSopenharmony_ci    with <identifier> set to FRAMEBUFFER behaves the same as using the
4695bd8deadSopenharmony_ci    DeleteFramebuffers command.
4705bd8deadSopenharmony_ci
4715bd8deadSopenharmony_ci
4725bd8deadSopenharmony_ci    After the paragraphs talking about 'GenFramebuffers' insert:
4735bd8deadSopenharmony_ci    ----------------------------------------------------------------
4745bd8deadSopenharmony_ci
4755bd8deadSopenharmony_ci    Calling the command
4765bd8deadSopenharmony_ci
4775bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
4785bd8deadSopenharmony_ci
4795bd8deadSopenharmony_ci    with <identifier> set to FRAMEBUFFER behaves the same as using the
4805bd8deadSopenharmony_ci    GenFramebuffers command.
4815bd8deadSopenharmony_ci
4825bd8deadSopenharmony_ci
4835bd8deadSopenharmony_ci    Modify section 4.4.2.1 "Renderbuffer Objects"
4845bd8deadSopenharmony_ci    ----------------------------------------------------------------
4855bd8deadSopenharmony_ci
4865bd8deadSopenharmony_ci    Modify the 2nd paragraph to read:
4875bd8deadSopenharmony_ci    ----------------------------------------------------------------
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci    The name space for renderbuffer objects is the unsigned integers,
4905bd8deadSopenharmony_ci    with zero reserved for the GL.  A renderbuffer object is created by
4915bd8deadSopenharmony_ci    binding a name returned by GenRenderbuffers or GenNamesAMD (see below)
4925bd8deadSopenharmony_ci    to RENDERBUFFER.  The binding is effected by calling
4935bd8deadSopenharmony_ci
4945bd8deadSopenharmony_ci    Modify the 9th paragraph to read:
4955bd8deadSopenharmony_ci    ----------------------------------------------------------------
4965bd8deadSopenharmony_ci
4975bd8deadSopenharmony_ci    BindRenderbuffer fails and an INVALID_OPERATION error is generated
4985bd8deadSopenharmony_ci    if <renderbuffer> is not a name returned from a previous call to
4995bd8deadSopenharmony_ci    GenRenderbuffers or GenNamesAMD, or if such a name has since been 
5005bd8deadSopenharmony_ci    deleted with DeleteRenderbuffers or DeleteNamesAMD.
5015bd8deadSopenharmony_ci
5025bd8deadSopenharmony_ci
5035bd8deadSopenharmony_ci    After the paragraphs talking about 'DeleteRenderbuffers' insert:
5045bd8deadSopenharmony_ci    ----------------------------------------------------------------
5055bd8deadSopenharmony_ci
5065bd8deadSopenharmony_ci    Calling the command
5075bd8deadSopenharmony_ci
5085bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci    with <identifier> set to RENDERBUFFER behaves the same as using the
5115bd8deadSopenharmony_ci    DeleteFramebuffers command.
5125bd8deadSopenharmony_ci
5135bd8deadSopenharmony_ci
5145bd8deadSopenharmony_ci    After the paragraphs talking about 'GenRenderbuffers' insert:
5155bd8deadSopenharmony_ci    ----------------------------------------------------------------
5165bd8deadSopenharmony_ci
5175bd8deadSopenharmony_ci    Calling the command
5185bd8deadSopenharmony_ci
5195bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
5205bd8deadSopenharmony_ci
5215bd8deadSopenharmony_ci    with <identifier> set to RENDERBUFFER behaves the same as using the
5225bd8deadSopenharmony_ci    GenFramebuffers command.
5235bd8deadSopenharmony_ci
5245bd8deadSopenharmony_ci
5255bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 2.1 Specification (Special
5265bd8deadSopenharmony_ciFunctions)
5275bd8deadSopenharmony_ci
5285bd8deadSopenharmony_ci    Modify section 5.4 "Display Lists", page 240.
5295bd8deadSopenharmony_ci    ----------------------------------------------------------------
5305bd8deadSopenharmony_ci
5315bd8deadSopenharmony_ci    Add the following to the list of things not allowed inside of a
5325bd8deadSopenharmony_ci      display list:
5335bd8deadSopenharmony_ci    ----------------------------------------------------------------
5345bd8deadSopenharmony_ci
5355bd8deadSopenharmony_ci        Name generation: GenNamesAMD and DeleteNamesAMD
5365bd8deadSopenharmony_ci
5375bd8deadSopenharmony_ci
5385bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.1 Specification (State and
5395bd8deadSopenharmony_ciState Requests)
5405bd8deadSopenharmony_ci
5415bd8deadSopenharmony_ci    Modify section 6.1.4 "Texture Queries"
5425bd8deadSopenharmony_ci    ----------------------------------------------------------------
5435bd8deadSopenharmony_ci
5445bd8deadSopenharmony_ci    After the paragraphs talking about 'IsTexture' insert:
5455bd8deadSopenharmony_ci    ----------------------------------------------------------------
5465bd8deadSopenharmony_ci
5475bd8deadSopenharmony_ci    Calling the command
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ci        void IsNameAMD( enum identifier, uint name );
5505bd8deadSopenharmony_ci
5515bd8deadSopenharmony_ci    with <identifier> set to TEXTURE behaves the same as using the
5525bd8deadSopenharmony_ci    IsTexture command.
5535bd8deadSopenharmony_ci
5545bd8deadSopenharmony_ci
5555bd8deadSopenharmony_ci    Modify section 6.1.12 "Occlusion Queries"
5565bd8deadSopenharmony_ci    ----------------------------------------------------------------
5575bd8deadSopenharmony_ci
5585bd8deadSopenharmony_ci    After the paragraphs talking about 'IsQuery' insert:
5595bd8deadSopenharmony_ci    ----------------------------------------------------------------
5605bd8deadSopenharmony_ci
5615bd8deadSopenharmony_ci    Calling the command
5625bd8deadSopenharmony_ci
5635bd8deadSopenharmony_ci        void IsNameAMD( enum identifier, uint name );
5645bd8deadSopenharmony_ci
5655bd8deadSopenharmony_ci    with <identifier> set to QUERY_OBJECT_AMD behaves differently from
5665bd8deadSopenharmony_ci    calling IsQuery.  IsQuery only returns if an object is a
5675bd8deadSopenharmony_ci    query once it has been used.  However, IsName returns TRUE if
5685bd8deadSopenharmony_ci    a QUERY_OBJECT_AMD object had been created either through
5695bd8deadSopenharmony_ci    GenQueries or GenNamesAMD.
5705bd8deadSopenharmony_ci
5715bd8deadSopenharmony_ci
5725bd8deadSopenharmony_ci    Modify section 6.1.13 "Buffer Object Queries"
5735bd8deadSopenharmony_ci    ----------------------------------------------------------------
5745bd8deadSopenharmony_ci
5755bd8deadSopenharmony_ci    After the paragraphs talking about 'IsBuffer' insert:
5765bd8deadSopenharmony_ci    ----------------------------------------------------------------
5775bd8deadSopenharmony_ci
5785bd8deadSopenharmony_ci    Calling the command
5795bd8deadSopenharmony_ci
5805bd8deadSopenharmony_ci        void IsNameAMD( enum identifier, uint name );
5815bd8deadSopenharmony_ci
5825bd8deadSopenharmony_ci    with <identifier> set to DATA_BUFFER_AMD behaves the same as using the
5835bd8deadSopenharmony_ci    IsBuffer command.
5845bd8deadSopenharmony_ci
5855bd8deadSopenharmony_ci
5865bd8deadSopenharmony_ciAdditions to new section for Performance Monitoring (added by 
5875bd8deadSopenharmony_ci  AMD_performance_monitor)
5885bd8deadSopenharmony_ci
5895bd8deadSopenharmony_ci
5905bd8deadSopenharmony_ci    After the paragraphs talking about 'GenPerfMonitorsAMD' insert:
5915bd8deadSopenharmony_ci    ----------------------------------------------------------------
5925bd8deadSopenharmony_ci
5935bd8deadSopenharmony_ci    Calling the command
5945bd8deadSopenharmony_ci
5955bd8deadSopenharmony_ci        void GenNamesAMD( enum identifier, sizei n, uint *names );
5965bd8deadSopenharmony_ci
5975bd8deadSopenharmony_ci    with <identifier> set to PERFORMANCE_MONITOR_AMD behaves the same as
5985bd8deadSopenharmony_ci    using the GenPerfMonitorsAMD command.
5995bd8deadSopenharmony_ci
6005bd8deadSopenharmony_ci
6015bd8deadSopenharmony_ci    Modify the paragraphs talking about 'DeletePerfMonitorsAMD' to:
6025bd8deadSopenharmony_ci    ----------------------------------------------------------------
6035bd8deadSopenharmony_ci
6045bd8deadSopenharmony_ci    The command
6055bd8deadSopenharmony_ci    
6065bd8deadSopenharmony_ci        void DeletePerfMonitorsAMD(sizei n, uint *monitors)
6075bd8deadSopenharmony_ci        
6085bd8deadSopenharmony_ci    is used to delete the list of monitors created by a previous call to 
6095bd8deadSopenharmony_ci    GenPerfMonitors or GenNamesAMD (with <identifier> set to 
6105bd8deadSopenharmony_ci    PERFORMANCE_MONITOR_AMD).  If a monitor ID in the list <monitors> does not
6115bd8deadSopenharmony_ci    reference a previously generated performance monitor, an INVALID_VALUE
6125bd8deadSopenharmony_ci    error is generated.
6135bd8deadSopenharmony_ci
6145bd8deadSopenharmony_ci    Calling the command
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ci        void DeleteNamesAMD( enum identifier, sizei n, const uint *names );
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ci    with <identifier> set to PERFORMANCE_MONITOR_AMD behaves the same as using
6195bd8deadSopenharmony_ci    the DeletePerfMonitors command.
6205bd8deadSopenharmony_ci
6215bd8deadSopenharmony_ci
6225bd8deadSopenharmony_ci    Modify the paragraph after the protoype for SelectPerfMonitorCountersAMD
6235bd8deadSopenharmony_ci    to read:
6245bd8deadSopenharmony_ci    ----------------------------------------------------------------
6255bd8deadSopenharmony_ci
6265bd8deadSopenharmony_ci    is used to enable or disable a list of counters from a group to be monitored 
6275bd8deadSopenharmony_ci    as identified by <monitor>.  The <enable> argument determines whether the
6285bd8deadSopenharmony_ci    counters should be enabled or disabled.  <group> specifies the group
6295bd8deadSopenharmony_ci    ID under which counters will be enabled or disabled.  The <numCounters>
6305bd8deadSopenharmony_ci    argument gives the number of counters to be selected from the list 
6315bd8deadSopenharmony_ci    <counterList>.  If <monitor> is not a valid monitor created by either
6325bd8deadSopenharmony_ci    GenPerfMonitorsAMD or GneNamesAMD (with <identifier> set to 
6335bd8deadSopenharmony_ci    PERFORMANCE_MONITOR_AMD), then INVALID_VALUE error will be generated.  If 
6345bd8deadSopenharmony_ci    <group> is not a valid group, the INVALID_VALUE error will be generated.  If
6355bd8deadSopenharmony_ci    <numCounters> is less than 0, an INVALID_VALUE error will be generated. 
6365bd8deadSopenharmony_ci
6375bd8deadSopenharmony_ci    
6385bd8deadSopenharmony_ciAdditions to the OpenGL / GLX / GLX Protocol Specifications
6395bd8deadSopenharmony_ci
6405bd8deadSopenharmony_ci    None.
6415bd8deadSopenharmony_ci
6425bd8deadSopenharmony_ci
6435bd8deadSopenharmony_ciAdditions to the WGL Specification
6445bd8deadSopenharmony_ci
6455bd8deadSopenharmony_ci    None.
6465bd8deadSopenharmony_ci    
6475bd8deadSopenharmony_ci
6485bd8deadSopenharmony_ciErrors
6495bd8deadSopenharmony_ci    
6505bd8deadSopenharmony_ci    The error INVALID_ENUM is generated by GenNamesAMD, DeleteNamesAMD, or
6515bd8deadSopenharmony_ci    IsNameAMD if <identifier> is not one of:
6525bd8deadSopenharmony_ci      - DATA_BUFFER_AMD   (For ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER, 
6535bd8deadSopenharmony_ci                            PIXEL_PACK_BUFFER, and PIXEL_UNPACK_BUFFER)
6545bd8deadSopenharmony_ci      - FRAMEBUFFER
6555bd8deadSopenharmony_ci      - RENDERBUFFER
6565bd8deadSopenharmony_ci      - TEXTURE
6575bd8deadSopenharmony_ci      - TRANSFORM_FEEDBACK_EXT
6585bd8deadSopenharmony_ci      - VERTEX_ARRAY_OBJECT_AMD (For VAOs instead of VERTEX_ARRAY_BINDING)
6595bd8deadSopenharmony_ci      - QUERY_OBJECT_AMD        (For query objects)
6605bd8deadSopenharmony_ci      - PERFORMANCE_MONITOR_AMD (For a performance monitor object)
6615bd8deadSopenharmony_ci      - SAMPLER_OBJECT_AMD      (For a sampler object)
6625bd8deadSopenharmony_ci
6635bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by GenNamesAMD or DeleteNamesAMD
6645bd8deadSopenharmony_ci    if <num> is 0.
6655bd8deadSopenharmony_ci
6665bd8deadSopenharmony_ci    The error INVALID_VALUE is generated by GenNamesAMD or DeleteNamesAMD
6675bd8deadSopenharmony_ci    if <names> is NULL.
6685bd8deadSopenharmony_ci    
6695bd8deadSopenharmony_ci
6705bd8deadSopenharmony_ciNew State
6715bd8deadSopenharmony_ci
6725bd8deadSopenharmony_ci    None
6735bd8deadSopenharmony_ci        
6745bd8deadSopenharmony_ci
6755bd8deadSopenharmony_ciNew Implementation Dependent State
6765bd8deadSopenharmony_ci
6775bd8deadSopenharmony_ci    If ARB_vertex_array_object is not present, remove any reference to
6785bd8deadSopenharmony_ci    VERTEX_ARRAY or VERTEX_ARRAY_BINDING and VAOs.
6795bd8deadSopenharmony_ci            
6805bd8deadSopenharmony_ci                                                                        
6815bd8deadSopenharmony_ciSample Code
6825bd8deadSopenharmony_ci
6835bd8deadSopenharmony_ci    glGenTextures/glDeleteTextures
6845bd8deadSopenharmony_ci
6855bd8deadSopenharmony_ci      Before:
6865bd8deadSopenharmony_ci
6875bd8deadSopenharmony_ci          GLuint texID[12];
6885bd8deadSopenharmony_ci          glGenTextures(12, &texID[0]);
6895bd8deadSopenharmony_ci          ...
6905bd8deadSopenharmony_ci          // Use textures
6915bd8deadSopenharmony_ci          ...
6925bd8deadSopenharmony_ci          glDeleteTextures(12, &texID[0]);
6935bd8deadSopenharmony_ci
6945bd8deadSopenharmony_ci      After:
6955bd8deadSopenharmony_ci
6965bd8deadSopenharmony_ci          GLuint texID[12];
6975bd8deadSopenharmony_ci          glGenNames(GL_TEXTURE, 12, &texID[0]);
6985bd8deadSopenharmony_ci          ...
6995bd8deadSopenharmony_ci          // Use textures
7005bd8deadSopenharmony_ci          ...
7015bd8deadSopenharmony_ci          glDeleteNames(GL_TEXTURE, 12, &texID[0]);
7025bd8deadSopenharmony_ci
7035bd8deadSopenharmony_ci
7045bd8deadSopenharmony_ciIssues
7055bd8deadSopenharmony_ci
7065bd8deadSopenharmony_ci    01)   What is the main benefit of these new entry-points?
7075bd8deadSopenharmony_ci
7085bd8deadSopenharmony_ci          To reduce the requirement of new entry-points for generating and 
7095bd8deadSopenharmony_ci          deleting names.
7105bd8deadSopenharmony_ci
7115bd8deadSopenharmony_ci
7125bd8deadSopenharmony_ci    02)   Do we want to use VERTEX_ARRAY_BINDING for a vertex array object?
7135bd8deadSopenharmony_ci
7145bd8deadSopenharmony_ci          RECOMMENDATION - I suggest using a new variable called 
7155bd8deadSopenharmony_ci                           VERTEX_ARRAY_OBJECT_AMD. This makes it clear
7165bd8deadSopenharmony_ci                           what's being generated.
7175bd8deadSopenharmony_ci
7185bd8deadSopenharmony_ci
7195bd8deadSopenharmony_ci    03)   What do we want the generic buffer object name to be called
7205bd8deadSopenharmony_ci
7215bd8deadSopenharmony_ci          RESOLVED - Use DATA_BUFFER_AMD.
7225bd8deadSopenharmony_ci
7235bd8deadSopenharmony_ci
7245bd8deadSopenharmony_ci    04)   Do we want to include display list generation?
7255bd8deadSopenharmony_ci
7265bd8deadSopenharmony_ci          RECOMMENDATION - No.  There is additional restrictions on display list
7275bd8deadSopenharmony_ci                           name generation specifically items being 
7285bd8deadSopenharmony_ci                           consecutively generated.
7295bd8deadSopenharmony_ci
7305bd8deadSopenharmony_ci
7315bd8deadSopenharmony_ci    05)   Should DeleteNamesAMD verify that the names exist and throw an error 
7325bd8deadSopenharmony_ci          if not?
7335bd8deadSopenharmony_ci
7345bd8deadSopenharmony_ci          RECOMMENDATION - I think not since it might cause issues with multi-
7355bd8deadSopenharmony_ci                           context multi-thread cases where sharing is enabled
7365bd8deadSopenharmony_ci                           and one context deletes them follwed by another 
7375bd8deadSopenharmony_ci                           context deleting items.
7385bd8deadSopenharmony_ci
7395bd8deadSopenharmony_ci
7405bd8deadSopenharmony_ci
7415bd8deadSopenharmony_ciRevision History
7425bd8deadSopenharmony_ci
7435bd8deadSopenharmony_ci    1) September 11, 2009: myoung
7445bd8deadSopenharmony_ci        - Initial revision of AMDX extension
7455bd8deadSopenharmony_ci
7465bd8deadSopenharmony_ci    2) February 10, 2010: myoung
7475bd8deadSopenharmony_ci        - Change from AMDX to AMD extension 
7485bd8deadSopenharmony_ci
7495bd8deadSopenharmony_ci    2) February 12, 2010: myoung
7505bd8deadSopenharmony_ci        - Add in IsNameAMD functionality requested by Benedikt 
7515bd8deadSopenharmony_ci  
752