Est-il actuellement possible d'activer la puce graphique intégrée du mac dans une application Java?


Existe-t-il un moyen d'obtenir une application Java pour utiliser le GPU intégré, plutôt que le GPU discret, sur un mac?

(Je suis intéressé par les moyens d'expédier une application qui ne poussera pas l'ordinateur portable Mac de l'utilisateur en mode discret, plutôt que par les moyens de verrouiller en mode intégré sur mon propre ordinateur portable pour toutes les applications, comme le fait gfxCardStatus.)

Author: Joshua Goldberg, 2014-01-16

3 answers

Malheureusement, ce que vous voulez n'est pas possible en utilisant Java 7.

Quelques sources du web:

Vous avez déjà mentionné gfxCardStatus, mais cela semble être le seul moyen

Théoriquement, vous pouvez désactiverLe support OpenGL , mais cela ne suffit pas pour qu'il ne déclenche pas cela java a besoin de graphiques discrets. Il semble que dans le cadre de l'évaluation de savoir s'il doit ou non utiliser OpenGL, il chatouille le GPU, et le mac décide qu'il doit déclencher le GPU discret pour la durée de vie de cette application.

Edit: il semble que même gfxCardStatusne peut plus empêcher le commutateur .

 3
Author: Paul Wagland, 2015-10-16 16:01:42

Il y a une option spéciale qui doit être spécifiée dans les informations.fichier plist du lanceur de l'application:

<key>NSSupportsAutomaticGraphicsSwitching</key><true/>

Cela donne à une application Java la puissance d'utiliser la carte intégrée. Sinon, le système utilise les graphiques discrets par défaut. Malheureusement, cette option n'est pas incluse dans la distribution JVM standard d'Oracle.


Mise à jour à partir du 2019-08-01: Le plus récent macOS + Java généralement disponible aujourd'hui est: macOS 10.14.6 Mojave + Java Version 8 Mise à jour 221 Construire 1.8.0_221-b11

Définir NSSupportsAutomaticGraphicsSwitching sur TRUE empêche en effet l'utilisation forcée de l'utilisation discrète du GPU! Mais pas pour toutes les applications Java! J'ai testé ces:

Jdiskreport 1.4.1: Après avoir ajouté NSSupportsAutomaticGraphicsSwitching=TRUE au Info.plist il se lance alors avec le GPU interne et fonctionne normalement!

FreeMind 1.0.1: Info.plist livré avec NSSupportsAutomaticGraphicsSwitching=TRUE et NSHighResolutionCapable=TRUE. La suppression de JVMRuntime=jdk1.7.0_45.jdk démarre l'application avec l'iGPU en effet mais ne fonctionne pas. Vous voyez le démarrage dialogue ("Freemind 1.0.1": Initialisation de ceci, cela, bla bla) jusqu'à ce que l'application soit prête. Mais vous ne voyez alors que le menu principal (le talon d'application, je suppose). Aucun fichier nouveau / récent ouvert dans une fenêtre. Dès que vous souhaitez ouvrir/créer un nouveau fichier, la création d'une fenêtre échoue: Flash court et le menu principal (le talon d'application, je suppose) se redessine sous peu. Je vais demander à FreeMind ce qui peut être fait.

 2
Author: Thomas, 2019-08-01 11:33:15

J'ai eu un problème similaire sur Mac OS X 10.11.6 (15G1108) avec l'application Arduino (basée sur Java), en utilisant toujours la carte graphique haute puissance (externe).

L'indice de Thomas m'a finalement conduit aux informations d'Arduino.entrée pli <key>NSHighResolutionCapable</key> initialement définie sur <true/>. En le réglant sur <false/>, Arduino démarre correctement en utilisant uniquement la carte graphique intégrée réduisant considérablement la consommation d'énergie sur mon Macbook Pro retina!

(Java 8-Mise à jour 111, Arduino 1.6.12)

 0
Author: Ulrich, 2016-11-05 19:29:27