[OpenJDK 2D-Dev] RFR: 8251854: [macosx] Java forces the use of discrete GPU

Sergey Bylokhov serb at openjdk.java.net
Tue Nov 10 08:31:04 UTC 2020


This is a review request for the bug particularly fixed some time ago:
https://mail.openjdk.java.net/pipermail/2d-dev/2015-May/005425.html

In that review request it was found that the old fix does not work well in all cases, see:
https://mail.openjdk.java.net/pipermail/2d-dev/2015-August/005611.html

The current fix updates an embedded plist.info, so the java will not require
discrete graphics by default, same as for any other applications. 

The discrete card will be used:
 1. If macOS decided to enable it for some reason
 2. If the java app sets/uses a full-screen window
 3. If the user disable "automatic graphics switching" in the system preferences
 4. If an external monitor is connected to the laptop

In other cases, the integrated graphics will be used, which should be fine in most cases since this graphic is used/tested in the mbp 13/etc. This is not only about rendering performance but also about startup performance, on my current new laptop mbp 16 + Cataline 10.15.7 the switching discrete/integrated causes unexpected delays up to 10 seconds.


Note that the new "metal" pipeline also does not require discrete graphics.

The documentation for NSSupportsAutomaticGraphicsSwitching:
https://developer.apple.com/documentation/bundleresources/information_property_list/nssupportsautomaticgraphicsswitching

I'll create a release note after approval.

Performance numbers:
https://mail.openjdk.java.net/pipermail/2d-dev/2020-August/010979.html
Old review request:
https://mail.openjdk.java.net/pipermail/2d-dev/2020-August/010973.html

-------------

Commit messages:
 - Initial fix

Changes: https://git.openjdk.java.net/jdk/pull/1139/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1139&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8251854
  Stats: 6 lines in 3 files changed: 6 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1139.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1139/head:pull/1139

PR: https://git.openjdk.java.net/jdk/pull/1139


More information about the 2d-dev mailing list