15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NVX_gpu_memory_info 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NVX_gpu_memory_info 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContact 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Howard Stroyan, NVIDIA Corporation (hstroyan 'at' nvidia.com) 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciContributors 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci Eric Werness 165bd8deadSopenharmony_ci Evan Hart 175bd8deadSopenharmony_ci Mark Kilgard 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciStatus 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Complete. Shipping in NVIDIA 195.XX drivers 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ci NVIDIA's Tegra drivers will not expose this extensions. 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciVersion 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci Last Modified Date: October 3, 2013 285bd8deadSopenharmony_ci Author Revision: 1.4 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ciNumber 315bd8deadSopenharmony_ci 325bd8deadSopenharmony_ci 438 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciDependencies 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci OpenGL 2.0 is required. 375bd8deadSopenharmony_ci The extension is written against the OpenGL 2.0 Specification. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciOverview 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci Most graphics systems offer a limited amount of onboard 425bd8deadSopenharmony_ci high-performance memory for storing textures, geometric 435bd8deadSopenharmony_ci primitives, and other data used for rendering. 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci OpenGL implementations are expected to manage the residence of 465bd8deadSopenharmony_ci objects (that is, the memory pools in which objects are placed) 475bd8deadSopenharmony_ci automatically. This is simple for applications to use, and the 485bd8deadSopenharmony_ci high level of abstraction allows many different underlying 495bd8deadSopenharmony_ci hardware implementations. However performance sensitive 505bd8deadSopenharmony_ci applications that are willing to adjust their usage of these memory 515bd8deadSopenharmony_ci resources in order to maintain their desired performance are unable 525bd8deadSopenharmony_ci to determine when the limited onboard memory resources are 535bd8deadSopenharmony_ci approaching full utilization and swapping (with its related 545bd8deadSopenharmony_ci performance impact) is imminent. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ci GL_NVX_gpu_memory_info provides applications visibility into GPU 575bd8deadSopenharmony_ci hardware memory utilization in order to allow the application to 585bd8deadSopenharmony_ci effectively manage its resource allocations in the scope of the 595bd8deadSopenharmony_ci current available GPU memory. This information is made available 605bd8deadSopenharmony_ci to the applications in the form of the total available resource 615bd8deadSopenharmony_ci size (after initial system allocations) and the current available 625bd8deadSopenharmony_ci resource (e.g. free memory) as well as a count of the number and 635bd8deadSopenharmony_ci total size of evictions of data from GPU memory since the last time 645bd8deadSopenharmony_ci this information was queried from this context using this extension. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ciNew Procedures and Functions 675bd8deadSopenharmony_ci 685bd8deadSopenharmony_ci none 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ciNew Tokens 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetIntegerv: 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 755bd8deadSopenharmony_ci GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 765bd8deadSopenharmony_ci GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 775bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A 785bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B 795bd8deadSopenharmony_ci 805bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci none 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci none 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment 895bd8deadSopenharmony_ciOperations and the Frame Buffer) 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ci none 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci none 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 2.0 Specification (State and 985bd8deadSopenharmony_ciState Requests) 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci Section 6.1.x, GPU Memory Information Query 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci Inserted between sections 6.1.14 and 6.1.15 1035bd8deadSopenharmony_ci 1045bd8deadSopenharmony_ci Information on GPU memory resources available can be queried 1055bd8deadSopenharmony_ci by specifying one of: 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ci GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 1085bd8deadSopenharmony_ci GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 1095bd8deadSopenharmony_ci GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 1105bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTION_COUNT_NVX 1115bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci as the value parameter to GetIntegerv. 1145bd8deadSopenharmony_ci 1155bd8deadSopenharmony_ci These will return the memory status of the context's associated GPU memory. 1165bd8deadSopenharmony_ci The status returned is not intended as an exact measurement of the 1175bd8deadSopenharmony_ci system's current status. It will provide a approximate indicator of 1185bd8deadSopenharmony_ci the overall GPU memory utilization so that an application can determine 1195bd8deadSopenharmony_ci when the resource usage is approaching the full capacity of the GPU memory 1205bd8deadSopenharmony_ci and it may need to adjust its usage pattern to avoid performance limiting 1215bd8deadSopenharmony_ci swapping. Each query returns a integer where the values have the 1225bd8deadSopenharmony_ci following meanings: 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 1255bd8deadSopenharmony_ci - dedicated video memory, total size (in kb) of the GPU memory 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 1285bd8deadSopenharmony_ci - total available memory, total size (in Kb) of the memory 1295bd8deadSopenharmony_ci available for allocations 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 1325bd8deadSopenharmony_ci - current available dedicated video memory (in kb), 1335bd8deadSopenharmony_ci currently unused GPU memory 1345bd8deadSopenharmony_ci 1355bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTION_COUNT_NVX 1365bd8deadSopenharmony_ci - count of total evictions seen by system 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 1395bd8deadSopenharmony_ci - size of total video memory evicted (in kb) 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci The values reported are subject to change and cannot be used as a 1425bd8deadSopenharmony_ci guarantee of successful future allocations. The current available 1435bd8deadSopenharmony_ci dedicated memory will be less than the total GPU memory size since 1445bd8deadSopenharmony_ci system allocations for shared resources (i.e. desktop surfaces) will 1455bd8deadSopenharmony_ci be accounted for. The reported current available GPU memory will be 1465bd8deadSopenharmony_ci influenced by the current binding state of resources such as 1475bd8deadSopenharmony_ci textures and object buffers that can potentially migrate between 1485bd8deadSopenharmony_ci system and dedicated GPU memory based on their usage. The eviction 1495bd8deadSopenharmony_ci count indicates that number of eviction events that caused 1505bd8deadSopenharmony_ci an allocation to be removed from dedicated video memory to free GPU 1515bd8deadSopenharmony_ci video memory to make room for other allocations. The eviction size 1525bd8deadSopenharmony_ci is the total size of memory released as a result of these evictions. 1535bd8deadSopenharmony_ci These eviction values are running counters and may not start at zero 1545bd8deadSopenharmony_ci on the first query. This extension does not attempt to account for 1555bd8deadSopenharmony_ci any potential fragmentation issues that may limit full utilization 1565bd8deadSopenharmony_ci of the GPU memory resource depending on implementation. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 2.0 Specification (Invariance) 1595bd8deadSopenharmony_ci 1605bd8deadSopenharmony_ci none 1615bd8deadSopenharmony_ci 1625bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci None 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ciErrors 1675bd8deadSopenharmony_ci 1685bd8deadSopenharmony_ci None 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ciIssues 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci1) Implementing the eviction information is OS dependent. 1735bd8deadSopenharmony_ci For XP and Linux the eviction information is specific to the current process/state 1745bd8deadSopenharmony_ci since eviction is determined in the individual client. 1755bd8deadSopenharmony_ci For Vista it is system wide since eviction is determined by the OS. 1765bd8deadSopenharmony_ci 1775bd8deadSopenharmony_ci2) Should Tegra advertise and support this extension? 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci RESOLVED: No. Tegra's unified memory architecture doesn't sensibly 1805bd8deadSopenharmony_ci map to the queries of this extensions. 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci A future extension is needed to address this. 1835bd8deadSopenharmony_ci 1845bd8deadSopenharmony_ciRevision History 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ci 1.2 Added eviction count and size information. 1875bd8deadSopenharmony_ci 1.3 Changed to separate enums / GetIntegerv calls for each value. 1885bd8deadSopenharmony_ci Removed reset of eviction data on query. 1895bd8deadSopenharmony_ci 1.4 Document Tegra will not support this extension. 1905bd8deadSopenharmony_ci 191