1Name 2 3 NVX_gpu_memory_info 4 5Name Strings 6 7 GL_NVX_gpu_memory_info 8 9Contact 10 11 Howard Stroyan, NVIDIA Corporation (hstroyan 'at' nvidia.com) 12 13Contributors 14 15 Eric Werness 16 Evan Hart 17 Mark Kilgard 18 19Status 20 21 Complete. Shipping in NVIDIA 195.XX drivers 22 23 NVIDIA's Tegra drivers will not expose this extensions. 24 25Version 26 27 Last Modified Date: October 3, 2013 28 Author Revision: 1.4 29 30Number 31 32 438 33 34Dependencies 35 36 OpenGL 2.0 is required. 37 The extension is written against the OpenGL 2.0 Specification. 38 39Overview 40 41 Most graphics systems offer a limited amount of onboard 42 high-performance memory for storing textures, geometric 43 primitives, and other data used for rendering. 44 45 OpenGL implementations are expected to manage the residence of 46 objects (that is, the memory pools in which objects are placed) 47 automatically. This is simple for applications to use, and the 48 high level of abstraction allows many different underlying 49 hardware implementations. However performance sensitive 50 applications that are willing to adjust their usage of these memory 51 resources in order to maintain their desired performance are unable 52 to determine when the limited onboard memory resources are 53 approaching full utilization and swapping (with its related 54 performance impact) is imminent. 55 56 GL_NVX_gpu_memory_info provides applications visibility into GPU 57 hardware memory utilization in order to allow the application to 58 effectively manage its resource allocations in the scope of the 59 current available GPU memory. This information is made available 60 to the applications in the form of the total available resource 61 size (after initial system allocations) and the current available 62 resource (e.g. free memory) as well as a count of the number and 63 total size of evictions of data from GPU memory since the last time 64 this information was queried from this context using this extension. 65 66New Procedures and Functions 67 68 none 69 70New Tokens 71 72 Accepted by the <pname> parameter of GetIntegerv: 73 74 GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 75 GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 76 GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 77 GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A 78 GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B 79 80Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation) 81 82 none 83 84Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization) 85 86 none 87 88Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment 89Operations and the Frame Buffer) 90 91 none 92 93Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions) 94 95 none 96 97Additions to Chapter 6 of the OpenGL 2.0 Specification (State and 98State Requests) 99 100 Section 6.1.x, GPU Memory Information Query 101 102 Inserted between sections 6.1.14 and 6.1.15 103 104 Information on GPU memory resources available can be queried 105 by specifying one of: 106 107 GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 108 GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 109 GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 110 GPU_MEMORY_INFO_EVICTION_COUNT_NVX 111 GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 112 113 as the value parameter to GetIntegerv. 114 115 These will return the memory status of the context's associated GPU memory. 116 The status returned is not intended as an exact measurement of the 117 system's current status. It will provide a approximate indicator of 118 the overall GPU memory utilization so that an application can determine 119 when the resource usage is approaching the full capacity of the GPU memory 120 and it may need to adjust its usage pattern to avoid performance limiting 121 swapping. Each query returns a integer where the values have the 122 following meanings: 123 124 GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 125 - dedicated video memory, total size (in kb) of the GPU memory 126 127 GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 128 - total available memory, total size (in Kb) of the memory 129 available for allocations 130 131 GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 132 - current available dedicated video memory (in kb), 133 currently unused GPU memory 134 135 GPU_MEMORY_INFO_EVICTION_COUNT_NVX 136 - count of total evictions seen by system 137 138 GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 139 - size of total video memory evicted (in kb) 140 141 The values reported are subject to change and cannot be used as a 142 guarantee of successful future allocations. The current available 143 dedicated memory will be less than the total GPU memory size since 144 system allocations for shared resources (i.e. desktop surfaces) will 145 be accounted for. The reported current available GPU memory will be 146 influenced by the current binding state of resources such as 147 textures and object buffers that can potentially migrate between 148 system and dedicated GPU memory based on their usage. The eviction 149 count indicates that number of eviction events that caused 150 an allocation to be removed from dedicated video memory to free GPU 151 video memory to make room for other allocations. The eviction size 152 is the total size of memory released as a result of these evictions. 153 These eviction values are running counters and may not start at zero 154 on the first query. This extension does not attempt to account for 155 any potential fragmentation issues that may limit full utilization 156 of the GPU memory resource depending on implementation. 157 158Additions to Appendix A of the OpenGL 2.0 Specification (Invariance) 159 160 none 161 162Additions to the AGL/GLX/WGL Specifications 163 164 None 165 166Errors 167 168 None 169 170Issues 171 1721) Implementing the eviction information is OS dependent. 173 For XP and Linux the eviction information is specific to the current process/state 174 since eviction is determined in the individual client. 175 For Vista it is system wide since eviction is determined by the OS. 176 1772) Should Tegra advertise and support this extension? 178 179 RESOLVED: No. Tegra's unified memory architecture doesn't sensibly 180 map to the queries of this extensions. 181 182 A future extension is needed to address this. 183 184Revision History 185 186 1.2 Added eviction count and size information. 187 1.3 Changed to separate enums / GetIntegerv calls for each value. 188 Removed reset of eviction data on query. 189 1.4 Document Tegra will not support this extension. 190 191