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