15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARB_draw_indirect 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARB_draw_indirect 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com) 125bd8deadSopenharmony_ci Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com) 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciContributors 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Barthold Lichtenbelt, NVIDIA 175bd8deadSopenharmony_ci Bill Licea-Kane, AMD 185bd8deadSopenharmony_ci Bruce Merry, ARM 195bd8deadSopenharmony_ci Graham Sellers, AMD 205bd8deadSopenharmony_ci Greg Roth, NVIDIA 215bd8deadSopenharmony_ci Nick Haemel, AMD 225bd8deadSopenharmony_ci Pierre Boudier, AMD 235bd8deadSopenharmony_ci Piers Daniell, NVIDIA 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciNotice 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at 285bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ciSpecification Update Policy 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 335bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 345bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 355bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 365bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 375bd8deadSopenharmony_ci described in more detail at 385bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ciStatus 415bd8deadSopenharmony_ci 425bd8deadSopenharmony_ci Complete. Approved by the ARB at the 2010/01/22 F2F meeting. 435bd8deadSopenharmony_ci Approved by the Khronos Board of Promoters on March 10, 2010. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ciVersion 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci Last Modified Date: 09/17/2012 485bd8deadSopenharmony_ci Revision: 7 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ciNumber 515bd8deadSopenharmony_ci 525bd8deadSopenharmony_ci ARB Extension #87 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ciDependencies 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci OpenGL 3.1 is required. 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci This extension is written against the OpenGL 3.2 specification with 595bd8deadSopenharmony_ci the Compatibility Profile. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci This extension interacts with NV_vertex_buffer_unified_memory. 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci This extension interacts with ARB_instanced_arrays. 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci This extension interacts with ARB_compatibility. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciOverview 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci This extension provides a mechanism for supplying the arguments to a 705bd8deadSopenharmony_ci DrawArraysInstanced or DrawElementsInstancedBaseVertex from buffer object 715bd8deadSopenharmony_ci memory. This is not particularly useful for applications where the CPU 725bd8deadSopenharmony_ci knows the values of the arguments beforehand, but is helpful when the 735bd8deadSopenharmony_ci values will be generated on the GPU through any mechanism that can write 745bd8deadSopenharmony_ci to a buffer object including image stores, atomic counters, or compute 755bd8deadSopenharmony_ci interop. This allows the GPU to consume these arguments without a round- 765bd8deadSopenharmony_ci trip to the CPU or the expensive synchronization that would involve. This 775bd8deadSopenharmony_ci is similar to the DrawTransformFeedbackEXT command from 785bd8deadSopenharmony_ci EXT_transform_feedback2, but offers much more flexibility in both 795bd8deadSopenharmony_ci generating the arguments and in the type of Draws that can be accomplished. 805bd8deadSopenharmony_ci 815bd8deadSopenharmony_ciIP Status 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci No known IP claims. 845bd8deadSopenharmony_ci 855bd8deadSopenharmony_ciNew Procedures and Functions 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci void DrawArraysIndirect(enum mode, const void *indirect); 885bd8deadSopenharmony_ci void DrawElementsIndirect(enum mode, enum type, const void *indirect); 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ciNew Tokens 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci Accepted by the <target> parameters of BindBuffer, BufferData, 935bd8deadSopenharmony_ci BufferSubData, MapBuffer, UnmapBuffer, GetBufferSubData, 945bd8deadSopenharmony_ci GetBufferPointerv, MapBufferRange, FlushMappedBufferRange, 955bd8deadSopenharmony_ci GetBufferParameteriv, and CopyBufferSubData: 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER 0x8F3F 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci Accepted by the <value> parameter of GetIntegerv, GetBooleanv, GetFloatv, 1005bd8deadSopenharmony_ci and GetDoublev: 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER_BINDING 0x8F43 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 3.2 Specification (OpenGL Operation) 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci Add to Section 2.8.1 p. 40 (Drawing Commands) 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ci The command 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci DrawArraysIndirect(enum mode, const void *indirect); 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci behaves as follows: 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci typedef struct { 1155bd8deadSopenharmony_ci GLuint count; 1165bd8deadSopenharmony_ci GLuint primCount; 1175bd8deadSopenharmony_ci GLuint first; 1185bd8deadSopenharmony_ci GLuint reservedMustBeZero; 1195bd8deadSopenharmony_ci } DrawArraysIndirectCommand; 1205bd8deadSopenharmony_ci 1215bd8deadSopenharmony_ci if (mode is invalid) { 1225bd8deadSopenharmony_ci generate appropriate error 1235bd8deadSopenharmony_ci } else { 1245bd8deadSopenharmony_ci DrawArraysIndirectCommand *cmd = (DrawArraysIndirectCommand *)indirect; 1255bd8deadSopenharmony_ci DrawArraysInstanced(mode, cmd->first, cmd->count, cmd->primCount); 1265bd8deadSopenharmony_ci } 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ci As with regular DrawArraysInstanced commands, the vertex attributes 1295bd8deadSopenharmony_ci may be sourced from client arrays or vertex buffer objects (if buffers 1305bd8deadSopenharmony_ci are bound). Unlike regular DrawArraysInstanced commands, the <first> 1315bd8deadSopenharmony_ci argument is unsigned and cannot cause an error. The results are undefined 1325bd8deadSopenharmony_ci if <reservedMustBeZero> is non-zero and may not result in program 1335bd8deadSopenharmony_ci termination. 1345bd8deadSopenharmony_ci 1355bd8deadSopenharmony_ci The command 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci DrawElementsIndirect(enum mode, enum type, const void *indirect); 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci behaves as follows: 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci typedef struct { 1425bd8deadSopenharmony_ci GLuint count; 1435bd8deadSopenharmony_ci GLuint primCount; 1445bd8deadSopenharmony_ci GLuint firstIndex; 1455bd8deadSopenharmony_ci GLint baseVertex; 1465bd8deadSopenharmony_ci GLuint reservedMustBeZero; 1475bd8deadSopenharmony_ci } DrawElementsIndirectCommand; 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ci if (mode or type is invalid, or no index buffer) { 1505bd8deadSopenharmony_ci generate appropriate error 1515bd8deadSopenharmony_ci } else { 1525bd8deadSopenharmony_ci DrawElementsIndirectCommand *cmd = (DrawElementsIndirectCommand *)indirect; 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci DrawElementsInstancedBaseVertex(mode, cmd->count, type, 1555bd8deadSopenharmony_ci cmd->firstIndex * size-of-type, cmd->primCount, cmd->baseVertex); 1565bd8deadSopenharmony_ci } 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci As with regular DrawElementsInstancedBaseVertex commands, the vertex 1595bd8deadSopenharmony_ci attributes may be sourced from client arrays or vertex buffer objects 1605bd8deadSopenharmony_ci (if objects are bound). Unlike regular DrawElementsInstancedBaseVertex 1615bd8deadSopenharmony_ci commands, the indices may not come from a client array and must come from 1625bd8deadSopenharmony_ci an index buffer. If no element array buffer is bound, an INVALID_OPERATION 1635bd8deadSopenharmony_ci error is generated. The results are undefined if <reservedMustBeZero> is 1645bd8deadSopenharmony_ci non-zero and may not result in program termination. 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci All elements of DrawArraysIndirectCommand and 1675bd8deadSopenharmony_ci DrawElementsIndirectCommand are 32bit values, and both structures are 1685bd8deadSopenharmony_ci tightly packed. 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci Add to Section 2.9 (Buffer Objects) 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci Add to Table 2.7 (p. 48): 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ci Target name Purpose Described in sections(s) 1755bd8deadSopenharmony_ci ----------------------- ---------- ------------------------- 1765bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER Indirect draw commands 2.9.9 1775bd8deadSopenharmony_ci 1785bd8deadSopenharmony_ci Add a new Section 2.9.9 (Indirect Commands in Buffer Objects) 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci Arguments to DrawArraysIndirect and DrawElementsIndirect commands 1815bd8deadSopenharmony_ci may be stored in buffer objects. 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci Initially zero is bound to DRAW_INDIRECT_BUFFER. In the 1845bd8deadSopenharmony_ci compatibility profile, this indicates that DrawArraysIndirect and 1855bd8deadSopenharmony_ci DrawElementsIndirect are to source their arguments directly from the 1865bd8deadSopenharmony_ci pointer passed as their <indirect> parameters. In the core profile, 1875bd8deadSopenharmony_ci an INVALID_OPERATION error is generated if zero is bound to 1885bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER and DrawArraysIndirect or DrawElementsIndirect 1895bd8deadSopenharmony_ci is called. 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci A buffer object is bound to DRAW_INDIRECT_BUFFER by calling 1925bd8deadSopenharmony_ci BindBuffer with <target> set to DRAW_INDIRECT_BUFFER, and <buffer> 1935bd8deadSopenharmony_ci set to the name of the buffer object. If no corresponding buffer 1945bd8deadSopenharmony_ci object exists, one is initialized as defined in section 2.9. 1955bd8deadSopenharmony_ci 1965bd8deadSopenharmony_ci While a non-zero buffer object name is bound to DRAW_INDIRECT_BUFFER, 1975bd8deadSopenharmony_ci DrawArraysIndirect and DrawElementsIndirect source their arguments 1985bd8deadSopenharmony_ci from that buffer object, using their <indirect> parameters as offsets 1995bd8deadSopenharmony_ci into the buffer object in the same fashion as described in section 2.9.3. 2005bd8deadSopenharmony_ci An INVALID_OPERATION error is generated if the commands source data 2015bd8deadSopenharmony_ci beyond the end of the buffer object or if <indirect> is not word aligned. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 3.2 Specification (Rasterization) 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci None. 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 3.2 Specification (Per-Fragment 2085bd8deadSopenharmony_ciOperations and the Frame Buffer) 2095bd8deadSopenharmony_ci 2105bd8deadSopenharmony_ci None. 2115bd8deadSopenharmony_ci 2125bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 3.2 Specification (Special Functions) 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci None. 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 3.2 Specification (State and 2175bd8deadSopenharmony_ciState Requests) 2185bd8deadSopenharmony_ci 2195bd8deadSopenharmony_ci None. 2205bd8deadSopenharmony_ci 2215bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 3.2 Specification (Invariance) 2225bd8deadSopenharmony_ci 2235bd8deadSopenharmony_ci None. 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ci None. 2285bd8deadSopenharmony_ci 2295bd8deadSopenharmony_ciGLX Protocol 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci TBD. 2325bd8deadSopenharmony_ci 2335bd8deadSopenharmony_ciErrors 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci INVALID_ENUM is generated by DrawArraysIndirect/DrawElementsIndirect 2365bd8deadSopenharmony_ci if <mode> is not a valid begin mode. 2375bd8deadSopenharmony_ci 2385bd8deadSopenharmony_ci INVALID_ENUM is generated by DrawElementsIndirect if <type> is not 2395bd8deadSopenharmony_ci one of UNSIGNED_BYTE, UNSIGNED_SHORT, or UNSIGNED_INT. 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci INVALID_OPERATION is generated by DrawElementsIndirect if no buffer 2425bd8deadSopenharmony_ci is bound to ELEMENT_ARRAY_BUFFER. 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ci INVALID_OPERATION is generated by DrawArraysIndirect and 2455bd8deadSopenharmony_ci DrawElementsIndirect if zero is bound to DRAW_INDIRECT_BUFFER and if 2465bd8deadSopenharmony_ci the OpenGL context implements the core profile. 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci INVALID_OPERATION is generated by DrawArraysIndirect and 2495bd8deadSopenharmony_ci DrawElementsIndirect if commands source data beyond the end of a buffer 2505bd8deadSopenharmony_ci object or if <indirect> is not word aligned. 2515bd8deadSopenharmony_ci 2525bd8deadSopenharmony_ciNew State 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci Update Table 6.11, p. 405 (Vertex Array Data not in Vertex Array objects) 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci Get Value Type Get Command Initial Value Sec Attribute 2575bd8deadSopenharmony_ci --------- ---- ----------- ------------- --- --------- 2585bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER_BINDING Z+ GetIntegerv 0 2.9 none 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ciNew Implementation Dependent State 2615bd8deadSopenharmony_ci 2625bd8deadSopenharmony_ci None. 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ciDependencies on NV_vertex_buffer_unified_memory 2655bd8deadSopenharmony_ci 2665bd8deadSopenharmony_ci If NV_vertex_buffer_unified_memory is supported, the following additional 2675bd8deadSopenharmony_ci edits are required: 2685bd8deadSopenharmony_ci 2695bd8deadSopenharmony_ci Accepted by the <cap> parameter of GetBufferParameterui64vNV: 2705bd8deadSopenharmony_ci 2715bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER. 2725bd8deadSopenharmony_ci 2735bd8deadSopenharmony_ci Accepted by the <cap> parameter of DisableClientState, 2745bd8deadSopenharmony_ci EnableClientState, IsEnabled: 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci DRAW_INDIRECT_UNIFIED_NV 0x8F40 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ci Accepted by the <pname> parameter of BufferAddressRangeNV 2795bd8deadSopenharmony_ci and the <value> parameter of GetIntegerui64vNV: 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci DRAW_INDIRECT_ADDRESS_NV 0x8F41 2825bd8deadSopenharmony_ci 2835bd8deadSopenharmony_ci Accepted by the <value> parameter of GetIntegerv: 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci DRAW_INDIRECT_LENGTH_NV 0x8F42 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci In Section 2.8.1, mention that vertex attributes and indices may be 2885bd8deadSopenharmony_ci sourced from GPU addresses if VERTEX_ATTRIB_ARRAY_UNIFIED_NV/ 2895bd8deadSopenharmony_ci ELEMENT_ARRAY_UNIFIED_NV are enabled. 2905bd8deadSopenharmony_ci 2915bd8deadSopenharmony_ci Add to Section 2.9: 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci While DRAW_INDIRECT_UNIFIED_NV is enabled, DrawArraysIndirect and 2945bd8deadSopenharmony_ci DrawElementsIndirect, source their arguments from the address 2955bd8deadSopenharmony_ci specified by the command BufferAddressRange where <pname> is 2965bd8deadSopenharmony_ci DRAW_INDIRECT_ADDRESS_NV and <index> is zero, added to the <indirect> 2975bd8deadSopenharmony_ci parameter. If the commands source data beyond and including (<address> 2985bd8deadSopenharmony_ci + <length>), an INVALID_OPERATION error will be generated. If the draw 2995bd8deadSopenharmony_ci indirect address range does not belong to a buffer object that is 3005bd8deadSopenharmony_ci resident at the time of the Draw, undefined results, possibly 3015bd8deadSopenharmony_ci including program termination, may occur. 3025bd8deadSopenharmony_ci 3035bd8deadSopenharmony_ci INVALID_OPERATION is generated by DrawElementsIndirect if no buffer 3045bd8deadSopenharmony_ci is bound to ELEMENT_ARRAY_BUFFER and DRAW_INDIRECT_UNIFIED_NV is 3055bd8deadSopenharmony_ci disabled. 3065bd8deadSopenharmony_ci 3075bd8deadSopenharmony_ci INVALID_OPERATION is generated by DrawArraysIndirect and 3085bd8deadSopenharmony_ci DrawElementsIndirect if DRAW_INDIRECT_UNIFIED_NV is enabled and 3095bd8deadSopenharmony_ci commands source data beyond and including (address + length). 3105bd8deadSopenharmony_ci 3115bd8deadSopenharmony_ci Update Table 6.11: 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ci Get Value Type Get Command Initial Value Sec Attribute 3145bd8deadSopenharmony_ci --------- ---- ----------- ------------- --- --------- 3155bd8deadSopenharmony_ci DRAW_INDIRECT_UNIFIED_NV B IsEnabled FALSE 2.9 none 3165bd8deadSopenharmony_ci DRAW_INDIRECT_ADDRESS_NV Z64+ GetIntegerui64vNV 0 2.9 none 3175bd8deadSopenharmony_ci DRAW_INDIRECT_LENGTH_NV Z+ GetIntegerv 0 2.9 none 3185bd8deadSopenharmony_ci 3195bd8deadSopenharmony_ciDependencies on NV_vertex_buffer_unified_memory and ARB_compatibility 3205bd8deadSopenharmony_ci 3215bd8deadSopenharmony_ci If the context version is greater than 3.0 and does not include 3225bd8deadSopenharmony_ci ARB_compatibility functionality, then EnableClientState and 3235bd8deadSopenharmony_ci DisableClientState have been deprecated and removed. This extension 3245bd8deadSopenharmony_ci adds back those commands if NV_vertex_buffer_unified_memory is supported, 3255bd8deadSopenharmony_ci but only requires that they accept the DRAW_INDIRECT_UNIFIED_NV token. 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ciDependencies on ARB_compatibility 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci When the ARB_compatibility extension is not supported, client arrays 3305bd8deadSopenharmony_ci cannot be used to source vertex attribute data. 3315bd8deadSopenharmony_ci 3325bd8deadSopenharmony_ciDependencies on ARB_instanced_arrays 3335bd8deadSopenharmony_ci 3345bd8deadSopenharmony_ci This extension does not require ARB_instanced_arrays, but reserves 3355bd8deadSopenharmony_ci space in the Command structures such that a future extension could 3365bd8deadSopenharmony_ci add a "firstInstance" member which would initialize the instance 3375bd8deadSopenharmony_ci counter used for computing which vertex attrib array element to use. 3385bd8deadSopenharmony_ci Note that ARB_instanced_arrays does not currently support 3395bd8deadSopenharmony_ci "firstInstance", it only has a frequency divider. 3405bd8deadSopenharmony_ci 3415bd8deadSopenharmony_ciIssues 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci (1) What is this good for? 3445bd8deadSopenharmony_ci 3455bd8deadSopenharmony_ci RESOLVED: Compute interoperability. Recirculating results written via 3465bd8deadSopenharmony_ci image stores or atomic counters. 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ci (2) Should we allow indirect draws from client memory? Should we have a 3495bd8deadSopenharmony_ci buffer object binding for this? 3505bd8deadSopenharmony_ci 3515bd8deadSopenharmony_ci RESOLVED: YES. Although, using client vertex arrays would somewhat defeat 3525bd8deadSopenharmony_ci the purpose of this extension. Note that this issue only applies to 3535bd8deadSopenharmony_ci implementations supporting the ARB_compatibility extension. 3545bd8deadSopenharmony_ci 3555bd8deadSopenharmony_ci One non-obvious restriction is that DrawElementsIndirect doesn't accept 3565bd8deadSopenharmony_ci an <indices> parameter, so an index buffer is required. 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci (3) How do we specify the index size for DrawElements calls? 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ci RESOLVED: Passed into the command, not pulled out of the struct. 3615bd8deadSopenharmony_ci 3625bd8deadSopenharmony_ci (4) For DrawElements calls, in what unit are the offsets into the index 3635bd8deadSopenharmony_ci buffer. 3645bd8deadSopenharmony_ci 3655bd8deadSopenharmony_ci RESOLVED: In indices, not in bytes. 3665bd8deadSopenharmony_ci 3675bd8deadSopenharmony_ci (5) Should the new state be part of the VAO? 3685bd8deadSopenharmony_ci 3695bd8deadSopenharmony_ci RESOLVED: No. 3705bd8deadSopenharmony_ci 3715bd8deadSopenharmony_ci (6) Should gl.h/glext.h provide structure definitions? 3725bd8deadSopenharmony_ci 3735bd8deadSopenharmony_ci RESOLVED. No. It is not possible to define the structures in such a way 3745bd8deadSopenharmony_ci that all compilers would pack them correctly. 3755bd8deadSopenharmony_ci 3765bd8deadSopenharmony_ciRevision History 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci Rev. Date Author Changes 3795bd8deadSopenharmony_ci ---- -------- -------- ------------------------------------------------ 3805bd8deadSopenharmony_ci 7 09/17/2012 Jon Leech Remove BindBufferRange/Base from commands for 3815bd8deadSopenharmony_ci which DRAW_INDIRECT_BUFFER is a valid target 3825bd8deadSopenharmony_ci (Bug 7794). 3835bd8deadSopenharmony_ci 3845bd8deadSopenharmony_ci 6 03/07/2012 Jon Leech Add missing error when no indirect buffer is 3855bd8deadSopenharmony_ci bound and the indirect draw commands are 3865bd8deadSopenharmony_ci called (Bug 7211). 3875bd8deadSopenharmony_ci 3885bd8deadSopenharmony_ci 5 12/07/2009 pdaniell Remove ARB suffix from new tokens for core spec. 3895bd8deadSopenharmony_ci 3905bd8deadSopenharmony_ci 4 10/29/2009 pdaniell Convert to ARB. 3915bd8deadSopenharmony_ci 3925bd8deadSopenharmony_ci 3 10/21/2009 pdaniell Minor edits based on Bruce's feedback. Added 3935bd8deadSopenharmony_ci full list of Get* calls for new 3945bd8deadSopenharmony_ci DRAW_INDIRECT_BUFFER_BINDING_EXT token. 3955bd8deadSopenharmony_ci Specified behavior when reservedMustBeZero is 3965bd8deadSopenharmony_ci non-zero. Added INVALID_VALUE error when 3975bd8deadSopenharmony_ci <indirect> is not a multiple of GLuint. 3985bd8deadSopenharmony_ci 3995bd8deadSopenharmony_ci 2 jbolz Internal revisions. 4005bd8deadSopenharmony_ci 4015bd8deadSopenharmony_ci 1 pbrown Internal revisions. 402