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