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

Composants FMX Delphi Discussion :

choisir le GPU sous FMX


Sujet :

Composants FMX Delphi

  1. #1
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut choisir le GPU sous FMX
    Bonjour,
    Sur un PC portable (Windows 10) équipé d'un GPU Intel intégré et d'un GPU NVIDIA auxiliaire, je souhaite améliorer un logiciel de traitement d'images video. En particulier, d'appliquer des traitements (filtrages) à des lots de milliers d'images.
    Est-il possible, avec FMX (Delphi 11), de choisir le GPU utilisé ou même d'utiliser les deux en même temps pour équilibrer la charge ?
    Merci.

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Le projets FMX ont accès aux API des différentes plateformes sur lesquelles on les compile. Il est donc possible de faire ce qu'on ferait dans n'importe quel autre type de projet en accédant aux API Windows pour toucher les cartes graphiques.

    En revanche je ne crois pas qu'il y ait de fonctionnalités nappées dans le langage ou les composants pour ce type d'opération.

    Il faut donc se débrouiller à l'ancienne avec le SDK de Direct X ou OpenGL.

    Paul, s'il passe dans le coin, aura peut-être plus d'infos sur le sujet.

  3. #3
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pprem Voir le message
    Le projets FMX ont accès aux API des différentes plateformes sur lesquelles on les compile. Il est donc possible de faire ce qu'on ferait dans n'importe quel autre type de projet en accédant aux API Windows pour toucher les cartes graphiques.

    En revanche je ne crois pas qu'il y ait de fonctionnalités nappées dans le langage ou les composants pour ce type d'opération.

    Il faut donc se débrouiller à l'ancienne avec le SDK de Direct X ou OpenGL.

    Paul, s'il passe dans le coin, aura peut-être plus d'infos sur le sujet.
    Je pensais à l'utilisation de ''shaders" via les composants 3D de FMX. Il y a un article intéressant sur le sujet sur le blog de grijjy (https://blog.grijjy.com/2021/01/14/shader-programming/).
    Mais je n'ai pas compris comment adresser un GPU particulier, s'il y en a plusieurs sur la machine, en restant dans le contexte des composants standard de FMX.

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Hello,

    alors FMX sous Windows c'est du DirectX, et je ne sais pas du tout comment on sélectionne la carte sous DX que je ne pratique pas...et encore moins sous FMX qui masque les choses

    par contre nVidia permet de présélectionner la carte en fonction du programme...j'avais cela sur mon ancien PC.
    Nom : Optimus_Profile_01.jpg
Affichages : 437
Taille : 138,8 Ko
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par _alx_ Voir le message
    Je pensais à l'utilisation de ''shaders" via les composants 3D de FMX. Il y a un article intéressant sur le sujet sur le blog de grijjy (https://blog.grijjy.com/2021/01/14/shader-programming/).
    Mais je n'ai pas compris comment adresser un GPU particulier, s'il y en a plusieurs sur la machine, en restant dans le contexte des composants standard de FMX.
    j'ai fait une démo qui utilise un Shader comme texture

    https://github.com/tothpaul/Firemonk.../SourceShaders
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Hello,

    alors FMX sous Windows c'est du DirectX, et je ne sais pas du tout comment on sélectionne la carte sous DX que je ne pratique pas...et encore moins sous FMX qui masque les choses

    par contre nVidia permet de présélectionner la carte en fonction du programme...j'avais cela sur mon ancien PC.
    Nom : Optimus_Profile_01.jpg
Affichages : 437
Taille : 138,8 Ko
    rien trouvé de mon côté non plus en faisant quelques recherches

  7. #7
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    j'ai fait une démo qui utilise un Shader comme texture

    https://github.com/tothpaul/Firemonk.../SourceShaders
    Merci à Paul Toth et pprem pour leurs infos.

    Les cartes NVIDIA peuvent effectivement être configurées, programme par programme, à partir du panneau de configuration NVIDIA, mais aussi depuis les paramètres système (paramètres\affichage\paramètres graphiques) dans les dernières versions de Windows 10 (et sans doute de Windows 11, mais que je ne pratique pas).

    Ce n'est pas ce que je voudrais de toute façon, c'est-à-dire configurer depuis le code du programme l'utilisation de DirectX via FMX. Cela devrait être possible puisque c'est exactement ce que l'on peut faire, par exemple, avec NVIDIA/CUDA !

    Je suppose que cette initialisation se fait dans l'unité FMX.Context.DX11 qui appelle les unités Winapi.DXGI et Winapi.D3D11, donc le SDK de Microsoft comme le suggérait pprem. Mais je n'ai pas compris comment.

    C'est vraiment dommage que cela ne soit pas documenté au niveau de delphi/FMX, ce qui augmenterait diablement ses possibilités !

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    j'ai trouvé un exemple DX pour énumérer les adaptateurs
    https://docs.microsoft.com/fr-fr/win...1-devices-enum

    après dans FMX.Context.DX11 on voit que l'appel à D3D11CreateDevice() utilise nil en premier paramètres, c'est à dire la carte par défaut.

    donc sauf à créer un nouveau contexte (cf RegisterContextClasses dans la même unité) il va être difficile de forcer FMX à sélectionner une carte plutôt qu'une autre

    mais il reste possible de faire la demande sur Quality comme évolution de FMX.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    j'ai trouvé un exemple DX pour énumérer les adaptateurs
    https://docs.microsoft.com/fr-fr/win...1-devices-enum

    après dans FMX.Context.DX11 on voit que l'appel à D3D11CreateDevice() utilise nil en premier paramètres, c'est à dire la carte par défaut.

    donc sauf à créer un nouveau contexte (cf RegisterContextClasses dans la même unité) il va être difficile de forcer FMX à sélectionner une carte plutôt qu'une autre

    mais il reste possible de faire la demande sur Quality comme évolution de FMX.
    Merci Paul TOTH pour cet approfondissement de ma question initiale.
    J'ai quand même le sentiment que le forçage de l'utilisation d'un GPU particulier serait en principe faisable dans ce cadre FMX, puisque que 1) les adaptateurs (les différentes cartes GPU) sont énumérables donc sans doute adressables, 2) il y a des fonctions (via l'interface IDXGIFactory) pour créer des "shared devices" et des "shared contexts". Si j'ai bien compris, l'initialisation et l'association se faisant à la création de la "Form3D", et même thread par thread.
    Mais ça devrait être assez compliqué, et on perdrait l'intérêt de passer par FMX.
    Autant alors utiliser des bibliothèques comme OpenGL (ou CUDA dans le cas NVIDIA) directement depuis le code Delphi.

    Pour la demande sur Quality, je vous laisse juge.
    J'ai peut-être été en avance sur mon temps , puisque DirectX12 devrait répondre à ma question : https://docs.microsoft.com/en-us/win...2/multi-engine
    @pprem : prévu dans "Delphi 12" ?

  10. #10
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Citation Envoyé par _alx_ Voir le message
    Pour la demande sur Quality, je vous laisse juge.
    J'ai peut-être été en avance sur mon temps , puisque DirectX12 devrait répondre à ma question : https://docs.microsoft.com/en-us/win...2/multi-engine
    @pprem : prévu dans "Delphi 12" ?
    A priori ce sera plus probablement un 11.1 qu'un 12, mais il y aura peut-être un 12 un jour, nul ne sait vraiment pour le moment à part ceux qui savent.

    Par contre, pour répondre à ta question sur le fait que ce soit prévu, je ne peux que dire "non, sauf si quelqu'un le demande sur quality.embarcadero.com ou qu'Embarcadero en a besoin pour l'IDE".

    Donc n'hésite pas à formuler ta demande et expliquer en quoi cette fonctionnalité serait une bonne chose pour toi et/ou la communauté sur le site.

Discussions similaires

  1. Localisation sous FMX pour MACOS et Windows
    Par Papy214 dans le forum Composants FMX
    Réponses: 7
    Dernier message: 08/08/2015, 09h19
  2. Visualiser du pdf sous FMX
    Par Invité dans le forum Composants FMX
    Réponses: 1
    Dernier message: 20/07/2015, 15h23
  3. Une fonction python pour connaître le type de GPU sous windows ?
    Par Whistler dans le forum Général Python
    Réponses: 2
    Dernier message: 01/12/2014, 09h31
  4. Align sous FMX
    Par seb974 dans le forum Composants FMX
    Réponses: 6
    Dernier message: 07/03/2014, 13h55
  5. Choisir un serveur sous VB2005
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/09/2007, 19h54

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