I. Introduction▲
Il y a quelques années, ce genre d'information n'était pas disponible pour les développeurs OpenGL, mais aujourd'hui, les deux grands d'OpenGL (je parle de NVIDIA et AMD/ATI) ont ajouté quelques extensions utiles pour récupérer la capacité de la mémoire de la carte graphique ainsi que d'autres données relatives.
II. Capacité de la mémoire▲
II-A. Avec NVIDIA▲
NVIDIA a récemment publié les spécifications d'une nouvelle extension nommée GL_NVX_gpu_memory_info.
Grâce à GL_NVX_gpu_memory_info, vous pouvez récupérer la taille totale et restante de la mémoire du GPU (processeur graphique).
Voici un extrait de code qui montre comment l'utiliser. GL_NVX_gpu_memory_info renvoie les tailles en ko.
#define GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX 0x9048
#define GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX 0x9049
GLint total_mem_kb =
0
:
glGetIntegerv(GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX,
&
total_mem_kb);
GLint cur_avail_mem_kb =
0
:
glGetIntegerv(GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX,
&
cur_avail_mem_kb);
Cette extension est utilisée dans GPU Shark pour obtenir l'utilisation de la mémoire des cartes graphiques NVIDIA comme vous pouvez le voir sur l'image suivante :
Selon le site Geeks3D OpenGL extensions DB, GL_NVX_gpu_memory_info est disponible dans les pilotes d'affichage NVIDIA depuis la version R196.xx (voir R196.21).
II-B. Avec AMD/ATI▲
AMD a sorti deux extensions pour s'occuper de la capacité mémoire vidéo :
- WGL_AMD_gpu_association ;
- GL_ATI_meminfo.
WGL_AMD_gpu_association est une extension développée pour effectuer du rendu en parallèle : vous pouvez créer un contexte OpenGL différent sur chaque GPU. Cette extension est fournie avec des fonctionnalités de requêtes matérielles. Avec WGL_AMD_gpu_association vous pouvez obtenir la quantité de mémoire graphique disponible pour le GPU.
Voici comment l'utiliser pour obtenir la taille de la mémoire GPU en Mo :
UINT n =
wglGetGPUIDsAMD(0
, 0
);
UINT *
ids =
new
UINT[n];
size_t total_mem_mb =
0
;
wglGetGPUIDsAMD(n, ids);
wglGetGPUInfoAMD(ids[0
],
WGL_GPU_RAM_AMD,
GL_UNSIGNED_INT,
sizeof
(size_t),
&
total_mem_mb);
J'ai testé cette extension dans ce minioutil nommé Radeon-Z ;)
GL_ATI_meminfoest utilisée lorsque vous avez besoin d'informations plus détaillées sur la mémoire disponible pour les VBO (Vertex Buffer Objects) ou pour vos textures.
III. Remerciements▲
Cet article est une traduction autorisée de l'article paru sur Geeks3D.com.
Je tiens à remercier LittleWhite pour sa relecture lors de la traduction de cet article, ainsi que ClaudeLELOUP pour sa relecture orthographique.