• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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