15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    ATI_meminfo
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_ATI_meminfo
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContributors
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Roy Blackmer, ATI Technologies
125bd8deadSopenharmony_ci    Bruno Stefanizzi, ATI Technologies
135bd8deadSopenharmony_ci    Andreas Wolf, ATI Technologies
145bd8deadSopenharmony_ci    Evan Hart, ATI Technologies
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ciContact
175bd8deadSopenharmony_ci
185bd8deadSopenharmony_ci    Bruno Stefanizzi, AMD (bruno.stefanizzi 'at' amd.com)
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ciStatus
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ci    ???
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ciVersion
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ci    Date: March 2, 2009
275bd8deadSopenharmony_ci    Revision: 0.2
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciNumber
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    359
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciDependencies
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    OpenGL 1.1 is required
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    ARB_vertex_buffer_object affects the defintion of this extension
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    EXT_framebuffer_object affects the definition of this extension
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci    This extension is written against the 2.0 version of the OpenGL
425bd8deadSopenharmony_ci    Specification, modified with EXT_framebuffer_object.
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciOverview
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    Traditionally, OpenGL has treated resource management as a task of hardware
475bd8deadSopenharmony_ci    virtualization hidden from applications. While providing great portability,
485bd8deadSopenharmony_ci    this shielding of information can prevent applications from making
495bd8deadSopenharmony_ci    intelligent decisions on the management of resources they create. For
505bd8deadSopenharmony_ci    instance, an application may be better served by choosing a different
515bd8deadSopenharmony_ci    rendering method if there is not sufficient resources to efficiently
525bd8deadSopenharmony_ci    utilize its preferred method.
535bd8deadSopenharmony_ci
545bd8deadSopenharmony_ciIssues
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    1) Revealing the management of memory directly is somewhat controversial,
575bd8deadSopenharmony_ci       is this really desirable?
585bd8deadSopenharmony_ci
595bd8deadSopenharmony_ci        The intent of this extension is to provide insight into the consumption
605bd8deadSopenharmony_ci        of memory. It does not require that exact values be returned. The
615bd8deadSopenharmony_ci        information is intended to be a hint to the application about the
625bd8deadSopenharmony_ci        status at a particular moment in time. As such, the value returned does
635bd8deadSopenharmony_ci        not need to reveal the exact information, but instead it could return
645bd8deadSopenharmony_ci        a conservative value of 80% of actual availability. In any case, it is
655bd8deadSopenharmony_ci        highly reccommended that the information be returned in kilobytes.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci    2) Memory can come from different pools that may interact. How should this
685bd8deadSopenharmony_ci        be dealt with?
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci        The queries will enumerate different classes of memory based on modern
715bd8deadSopenharmony_ci        OpenGL paradigms. The classes defined so far are texture, vertex
725bd8deadSopenharmony_ci        buffer, an render buffer. These correspond to API visible capabilities
735bd8deadSopenharmony_ci        such as readable, writable, and mapable. The memory between these pools
745bd8deadSopenharmony_ci        may often be shared, so allocations in one pool may reduce all pools. 
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    3) Are the abreviations and names correct?
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ci        Probably not.
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    4) How should the values be returned?
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci        Returning all information about a memory type in a single query is
835bd8deadSopenharmony_ci        most optimal. Values are returned as 4 integers: total pool available,
845bd8deadSopenharmony_ci        largest pool available, total auxilliary pool available, and largest
855bd8deadSopenharmony_ci        auxilliary pool available. Auxilliary pool are for remote memory.
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ciNew Functions and Procedures
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci    None
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ciNew Tokens
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci    Accepted by the <value> parameter of GetIntegerv:
945bd8deadSopenharmony_ci
955bd8deadSopenharmony_ci        VBO_FREE_MEMORY_ATI                     0x87FB
965bd8deadSopenharmony_ci        TEXTURE_FREE_MEMORY_ATI                 0x87FC
975bd8deadSopenharmony_ci        RENDERBUFFER_FREE_MEMORY_ATI            0x87FD
985bd8deadSopenharmony_ci
995bd8deadSopenharmony_ciAdditions to Chapter 2 of the 2.0 Specification (OpenGL Operation)
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ci    None
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ciAdditions to Chapter 3 of the 2.0 Specification (Rasterization)
1045bd8deadSopenharmony_ci
1055bd8deadSopenharmony_ci    None
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ciAdditions to Chapter 4 of the 2.0 Specification (Per-Fragment Operations
1085bd8deadSopenharmony_ciand the Frame Buffer)
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    None
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ciAdditions to Chapter 5 of the 2.0 Specification (Special Functions)
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    None
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ciAdditions to Chapter 6 of the 2.0 Specification (State and State Requests)
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    Section 6.1.x, Memory Information Queries
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci    Inserted between sections 6.1.14 and 6.1.15 
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    Information on the current memory resources available can be queried
1235bd8deadSopenharmony_ci    by specifying VBO_FREE_MEMORY_ATI, TEXTURE_FREE_MEMORY_ATI, or
1245bd8deadSopenharmony_ci    RENDERBUFFER_FREE_MEMORY_ATI as the value parameter to  GetIntergerv.
1255bd8deadSopenharmony_ci    These return the memory status for pools of memory used for vertex
1265bd8deadSopenharmony_ci    buffer objects, textures, and render buffers respectively. The 
1275bd8deadSopenharmony_ci    memory status is not meant to be an exact measurement of the system's
1285bd8deadSopenharmony_ci    current status (though it may be in some implementations), but it is
1295bd8deadSopenharmony_ci    instead meant to represent the present load such that an application
1305bd8deadSopenharmony_ci    can make decisions on how aggressive it can be on the allocation of
1315bd8deadSopenharmony_ci    resources without overloading the system. The query returns a 4-tuple
1325bd8deadSopenharmony_ci    integer where the values are in Kbyte and have the following meanings:
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci      param[0] - total memory free in the pool
1355bd8deadSopenharmony_ci      param[1] - largest available free block in the pool
1365bd8deadSopenharmony_ci      param[2] - total auxiliary memory free
1375bd8deadSopenharmony_ci      param[3] - largest auxiliary free block
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    These values are only useful as a hint as the implementation cannot
1405bd8deadSopenharmony_ci    guarantee the lack of allocations between commands, and the
1415bd8deadSopenharmony_ci    information may have changed before the attempt to use it. Auxiliary
1425bd8deadSopenharmony_ci    memory is memory that an implementation may use as a backup to its
1435bd8deadSopenharmony_ci    primary pool for a certain type of allocation. The pools are not
1445bd8deadSopenharmony_ci    guaranteed to be either independent or shared, as this is an
1455bd8deadSopenharmony_ci    implementation choice. 
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ciAdditions to the OpenGL Shading Language specification
1485bd8deadSopenharmony_ci
1495bd8deadSopenharmony_ci    None
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ciAdditions to the GLX Specification
1525bd8deadSopenharmony_ci
1535bd8deadSopenharmony_ci    None
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ciDependencies on ARB_vertex_buffer_object or OpenGL version 1.5
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci    If ARB_vertex_buffer_object or OpenGL version 1.5 is supportedd, then
1585bd8deadSopenharmony_ci    the query for VBO_FREE_MEMORY_ATI is available.
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ciDependencies on EXT_framebuffer_object
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci    If EXT_framebuffer_object is implemented, then the query for
1635bd8deadSopenharmony_ci    RENDERBUFFER_FREE_MEMORY_ATI is available.
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ciErrors
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci    None
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ciGLX protocol
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci    None
1725bd8deadSopenharmony_ci
1735bd8deadSopenharmony_ciRevision History
1745bd8deadSopenharmony_ci
1755bd8deadSopenharmony_ci    2009/03/02 (Jon Leech) - format version 0.2 received from ATI
1765bd8deadSopenharmony_ci    to remove GL_ prefix, assign extension number.
177