| Name |
| |
| ATI_meminfo |
| |
| Name Strings |
| |
| GL_ATI_meminfo |
| |
| Contributors |
| |
| Roy Blackmer, ATI Technologies |
| Bruno Stefanizzi, ATI Technologies |
| Andreas Wolf, ATI Technologies |
| Evan Hart, ATI Technologies |
| |
| Contact |
| |
| Bruno Stefanizzi, AMD (bruno.stefanizzi 'at' amd.com) |
| |
| Status |
| |
| ??? |
| |
| Version |
| |
| Date: March 2, 2009 |
| Revision: 0.2 |
| |
| Number |
| |
| 359 |
| |
| Dependencies |
| |
| OpenGL 1.1 is required |
| |
| ARB_vertex_buffer_object affects the defintion of this extension |
| |
| EXT_framebuffer_object affects the definition of this extension |
| |
| This extension is written against the 2.0 version of the OpenGL |
| Specification, modified with EXT_framebuffer_object. |
| |
| Overview |
| |
| Traditionally, OpenGL has treated resource management as a task of hardware |
| virtualization hidden from applications. While providing great portability, |
| this shielding of information can prevent applications from making |
| intelligent decisions on the management of resources they create. For |
| instance, an application may be better served by choosing a different |
| rendering method if there is not sufficient resources to efficiently |
| utilize its preferred method. |
| |
| Issues |
| |
| 1) Revealing the management of memory directly is somewhat controversial, |
| is this really desirable? |
| |
| The intent of this extension is to provide insight into the consumption |
| of memory. It does not require that exact values be returned. The |
| information is intended to be a hint to the application about the |
| status at a particular moment in time. As such, the value returned does |
| not need to reveal the exact information, but instead it could return |
| a conservative value of 80% of actual availability. In any case, it is |
| highly reccommended that the information be returned in kilobytes. |
| |
| 2) Memory can come from different pools that may interact. How should this |
| be dealt with? |
| |
| The queries will enumerate different classes of memory based on modern |
| OpenGL paradigms. The classes defined so far are texture, vertex |
| buffer, an render buffer. These correspond to API visible capabilities |
| such as readable, writable, and mapable. The memory between these pools |
| may often be shared, so allocations in one pool may reduce all pools. |
| |
| 3) Are the abreviations and names correct? |
| |
| Probably not. |
| |
| 4) How should the values be returned? |
| |
| Returning all information about a memory type in a single query is |
| most optimal. Values are returned as 4 integers: total pool available, |
| largest pool available, total auxilliary pool available, and largest |
| auxilliary pool available. Auxilliary pool are for remote memory. |
| |
| New Functions and Procedures |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <value> parameter of GetIntegerv: |
| |
| VBO_FREE_MEMORY_ATI 0x87FB |
| TEXTURE_FREE_MEMORY_ATI 0x87FC |
| RENDERBUFFER_FREE_MEMORY_ATI 0x87FD |
| |
| Additions to Chapter 2 of the 2.0 Specification (OpenGL Operation) |
| |
| None |
| |
| Additions to Chapter 3 of the 2.0 Specification (Rasterization) |
| |
| None |
| |
| Additions to Chapter 4 of the 2.0 Specification (Per-Fragment Operations |
| and the Frame Buffer) |
| |
| None |
| |
| Additions to Chapter 5 of the 2.0 Specification (Special Functions) |
| |
| None |
| |
| Additions to Chapter 6 of the 2.0 Specification (State and State Requests) |
| |
| Section 6.1.x, Memory Information Queries |
| |
| Inserted between sections 6.1.14 and 6.1.15 |
| |
| Information on the current memory resources available can be queried |
| by specifying VBO_FREE_MEMORY_ATI, TEXTURE_FREE_MEMORY_ATI, or |
| RENDERBUFFER_FREE_MEMORY_ATI as the value parameter to GetIntergerv. |
| These return the memory status for pools of memory used for vertex |
| buffer objects, textures, and render buffers respectively. The |
| memory status is not meant to be an exact measurement of the system's |
| current status (though it may be in some implementations), but it is |
| instead meant to represent the present load such that an application |
| can make decisions on how aggressive it can be on the allocation of |
| resources without overloading the system. The query returns a 4-tuple |
| integer where the values are in Kbyte and have the following meanings: |
| |
| param[0] - total memory free in the pool |
| param[1] - largest available free block in the pool |
| param[2] - total auxiliary memory free |
| param[3] - largest auxiliary free block |
| |
| These values are only useful as a hint as the implementation cannot |
| guarantee the lack of allocations between commands, and the |
| information may have changed before the attempt to use it. Auxiliary |
| memory is memory that an implementation may use as a backup to its |
| primary pool for a certain type of allocation. The pools are not |
| guaranteed to be either independent or shared, as this is an |
| implementation choice. |
| |
| Additions to the OpenGL Shading Language specification |
| |
| None |
| |
| Additions to the GLX Specification |
| |
| None |
| |
| Dependencies on ARB_vertex_buffer_object or OpenGL version 1.5 |
| |
| If ARB_vertex_buffer_object or OpenGL version 1.5 is supportedd, then |
| the query for VBO_FREE_MEMORY_ATI is available. |
| |
| Dependencies on EXT_framebuffer_object |
| |
| If EXT_framebuffer_object is implemented, then the query for |
| RENDERBUFFER_FREE_MEMORY_ATI is available. |
| |
| Errors |
| |
| None |
| |
| GLX protocol |
| |
| None |
| |
| Revision History |
| |
| 2009/03/02 (Jon Leech) - format version 0.2 received from ATI |
| to remove GL_ prefix, assign extension number. |