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