IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Mémoire graphique utilisée


Sujet :

DirectX

  1. #1
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut Mémoire graphique utilisée
    Bonjour,
    J'aimerais pouvoir récupérer la mémoire GPU qu'il me reste à un instant T dans mon application.

    Existe-t'il une fonction qui fait ça en DirectX?

    Merci.
    Sïmone

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 408
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 408
    Points : 20 551
    Points
    20 551
    Par défaut
    Quelle version de DX , quelle couche ( D3D ?..)
    Pour le moment je n'ai trouvé que cela avec D3d9
    IDirect3DDevice9::GetAvailableTextureMem
    Returns an estimate of the amount of available texture memory.

    UINT GetAvailableTextureMem();
    Regarder dans le SDK de Direct X

  3. #3
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    Effectivement, j'aurai peut être pu préciser un minimum...

    Alors, en fait, j'utilise DirectX 9c et Direct3D.
    Je bosse également en C#.

    A priori, cette fonction ne renvoi qu'une estimation.
    Apperement, on ne peut pas connaitre la mémoire graphique restante

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu auras sans doute une meilleure approximation en la calculant toi-même (somme des VB/IB, textures et shaders en pool DEFAULT ou MANAGED).

    Enfin, cela suppose que tu connais la mémoire vidéo totale disponible

  5. #5
    screetch
    Invité(e)
    Par défaut
    pas de moyen efficace sans les nouveaux modeles de driver VISTA et Dx9 Vista ou Dx10. il est possible d'utiliser quelques bidouilles, comme lire une clé du registre.

    globalement, tu ne peux pas faire ca; tu veux plutot laisser le driver gérer sa mémoire. et tu veux savoir combien de memoire tu utilises, pas combien il te reste. l'autre approche ne fonctionne pas.

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Il y a PIX en Direct3D et sinon Riva tuner.

  7. #7
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Tenez vous à jour les gars,

    le SDK de mars 2008 par exemple contient le source du programme d'exemple "VideoMemory" :
    L'échantillon VideoMemory montre comment obtenir le montant de la mémoire vidéo par différentes méthodes.
    Il faut noter cependant (c'est expliqué dans la documentation du sample) que la notion de mémoire vidéo est assez fluctuante, parce que ce que vous pouvez considérer comme mémoire vidéo (sur la carte graphique par exemple) n'est parfois pas présente (integrated graphics) et que toutes les cartes sont capables de texturer depuis la mémoire centrale (aussi appelée Host ou système), d'y placer des données de vertices, des instructions de shaders ou d'y faire du rendu. Certaines cartes bas de gamme ont une mémoire à faible latence mais bas débit sur la carte, et peuvent lire la mémoire host/système avec une plus haute latence mais plus gros débit (le délire du bas de gamme).

    Également sous Vista (faudra vous y mettre aussi ), les resources du système sont virtualisées (à la fois pour D3D9 et D3D10), ceci pour empêcher qu'une application utilise toutes les ressources et empêche une autre de se charger (cela veut dire que le contenu de la mémoire de la carte graphique est déchargée en mémoire système non lisible par le GPU et sur disque). Cela veut aussi dire qu'une application programmée exclusivement pour Vista, peut allouer beaucoup plus que ce qui est théoriquement disponible dans le segment addressable par le GPU, ce qui est généralement une mauvaise idée (possibilité de swapping dans la boucle de rendu principale y compris en mode exclusif), mais peut cependant servir à émuler les ressources managed pour les applications qui ne veulent pas à avoir à gérer leurs ressources eux-mêmes (l'alternative serait le streaming géré par l'application).

    LeGreg

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 408
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 408
    Points : 20 551
    Points
    20 551
    Par défaut
    Citation Envoyé par simone.51 Voir le message
    Alors, en fait, j'utilise DirectX 9c et Direct3D.
    Je bosse également en C#.

    A priori, cette fonction ne renvoi qu'une estimation.
    Apperement, on ne peut pas connaitre la mémoire graphique restante
    Essaie avec Device.GetAvailableVideoMemory Method
    IL faut un ancien SDK parce que DX Managed , en théorie, n'est plus supporté

  9. #9
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    Ok, merci pour vos réponses...

    Je ne vais pas pouvoir utiliser Device.GetAvailableVideoMemory, mais, en gavant la mémoire de texture, et en récupérant le nombre de textures créées lors du OutOfMemory, j'arrive à avoir également une indications de la mémoire qu'il me reste...

    Par contre, à la base, je voulais voir la mémoire qu'il me restait après chaque chargement de texture... (Sur chipset Intel, j'avais un bug bizarre)
    Mais la méthode ci-dessus n'est pas efficace par contre...


    Enfin, bref...
    Merci quand même!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaître la capacité et l'utilisation de la mémoire graphique dans OpenGL
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 15/03/2013, 08h41
  2. Mémoire graphique avec StringGrid
    Par Jeanzeze dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/10/2005, 12h28
  3. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 21h44
  4. [TP][Graphique]Utilisation de la commande Setviewpost
    Par repairman dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 09/07/2003, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo