Connaître la capacité et l'utilisation de la mémoire graphique dans OpenGL

| JeGX | Alexandre Laurent |

Traducteur

Jérôme Marsaguet

Vous développez avec OpenGL et vous avez besoin d'un moyen simple pour connaître des informations sur la mémoire graphique telles que sa capacité et son utilisation ? Alors vous êtes au bon endroit !

Commentez

- Titre : Connaître la capacité et l'utilisation de la mémoire graphique dans OpenGL

- Auteurs : JeGX, Alexandre Laurent

- Traducteur : Jérôme Marsaguet

- Parution : 18 février 2013

- Mise à jour : 18 février 2013

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Geeks3D. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Capacité de la mémoire

- II-A. Avec NVIDIA

- II-B. Avec AMD/ATI

- III. Remerciements

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.