È attualmente possibile abilitare il chip grafico integrato del mac in un'applicazione Java?
C'è un modo per ottenere un'applicazione Java per utilizzare la GPU integrata, piuttosto che discreta, su un mac?
(Sono interessato a modi per spedire un'app che non spingerà il laptop Mac dell'utente in modalità discreta, piuttosto che modi per bloccare in modalità integrata sul mio laptop per tutte le applicazioni, come fa gfxCardStatus.)
3 answers
Sfortunatamente, ciò che vuoi non è possibile usando Java 7.
Alcune fonti da tutto il web:
- http://mail.openjdk.java.net/pipermail/macosx-port-dev/2012-September/004863.html
- http://support.apple.com/kb/ts4044
Hai già menzionato gfxCardStatus , ma questo sembra essere l'unico modo
Teoricamente è possibile disabilitare Il supporto OpenGL , tuttavia questo non è sufficiente per non attivarlo java ha bisogno di grafica discreta. Sembra che come parte della valutazione sull'opportunità o meno di utilizzare OpenGL, solletica la GPU e il mac decide che deve accendere la GPU discreta per la durata di tale applicazione.
Edit: sembra che nemmeno gfxCardStatus può impedire più l'interruttore .
C'è un'opzione speciale che deve essere specificata nelle Informazioni.file plist del programma di avvio dell'applicazione:
<key>NSSupportsAutomaticGraphicsSwitching</key><true/>
Questo dà un'applicazione Java la potenza di utilizzare la scheda integrata. Altrimenti il sistema utilizza la grafica discreta per impostazione predefinita. Sfortunatamente questa opzione non è inclusa nella distribuzione JVM standard di Oracle.
Aggiornamento a partire dal 2019-08-01: Il più recente macOS + Java generalmente disponibile oggi è: macOS 10.14.6 Mojave + Java Versione 8 Aggiornamento 221 Costruire 1.8.0_221-b11
L'impostazione di NSSupportsAutomaticGraphicsSwitching
su TRUE
impedisce infatti l'uso forzato dell'utilizzo discreto della GPU! Ma non per tutte le applicazioni Java! Ho provato questi:
Jdiskreport 1.4.1: Dopo aver aggiunto NSSupportsAutomaticGraphicsSwitching=TRUE
al Info.plist
si avvia quindi con la GPU interna e funziona normalmente!
Mente libera 1.0.1: Info.plist
è stato spedito con NSSupportsAutomaticGraphicsSwitching=TRUE
e NSHighResolutionCapable=TRUE
. Rimozione JVMRuntime=jdk1.7.0_45.jdk
avvia l'applicazione con l'iGPU infatti, ma poi non funziona. Vedi l'avvio dialog ("Freemind 1.0.1": Inizializzazione di questo, quello, bla bla) fino a quando l'app non è pronta. Ma poi vedi solo il menu principale (lo stub dell'applicazione credo). Nessun file nuovo / recente aperto in una finestra. Non appena si desidera aprire / creare un nuovo file, la creazione di una finestra non riesce: Breve flash e il menu principale (lo stub dell'applicazione credo) ri-rende a breve. Chiederò a FreeMind cosa si può fare.
Ho avuto un problema simile su Mac OS X 10.11.6 (15G1108) con l'app Arduino (basata su Java), usando sempre la scheda grafica ad alta potenza (esterna).
Il suggerimento di Thomas mi ha finalmente portato alle informazioni di Arduino.voce plis <key>NSHighResolutionCapable</key>
originariamente impostata su <true/>
. Impostandolo su <false/>
, Arduino inizia bene utilizzando solo la scheda grafica integrata riducendo drasticamente il consumo energetico sul mio Macbook Pro retina!
(Java 8-Aggiornamento 111, Arduino 1.6.12)