[OpenJDK 2D-Dev] Integrated: 8252133: The java/awt/GraphicsDevice/DisplayModes/CycleDMImage.java fails if metal pipeline is active
Sergey Bylokhov
serb at openjdk.java.net
Wed Oct 21 00:22:13 UTC 2020
On Thu, 8 Oct 2020 04:22:10 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
> This bug easily reproduced by the test in question on the dual video card systems
> when the metal pipeline is active. But it is possible to reproduce it in the OGL
> pipeline as well, but it is required some additional steps.
>
> Problem description:
> Our CGraphicsEnvironment maintains the list of active graphics devices. The one
> important feature of this CGraphicsEnvironment is to invalidate the old devices and
> map them to the new devices. For example, if the user got a reference to the device,
> and this device was removed then this reference will refer to the main screen.
>
> The problem in the current implementation arise when the system has two video cards:
> 1 The user get some GraphicsDevice
> 2 The user sets the full-screen window for this device
> 3 The user change screen resolution for this device
> 4 The resolution of the screen is not changed ->> BUG.
>
> The problem is that somewhere after step 1 or 2 and before step 3 the macOS decided
> to switch to the discrete video card, but it does not report the old device(integrated VC)
> as removed, because actually no screens were removed.
>
> Since it was not reported as removed we did not invalidate it and did not map it to the
> new device ->> request to change the screen resolution at step 3 send to some non existed
> deviceID.
>
> As a fix I suggest to change this current logic:
> - Invalidate devices reported by macOS as removed
> - Initialize the main screen
> - Initialize all NEW screens
>
> To this logic:
> - Ignore devices reported by the macOS as removed
> - Initialize the main screen
> - Initialize all NEW screens
> - Check that the main device is in the list of all NEW devices
> - Invalidate all OLD devices which are not in the list of NEW devices
>
> The old review request:
> https://mail.openjdk.java.net/pipermail/2d-dev/2020-August/011011.html
This pull request has now been integrated.
Changeset: e5870cf0
Author: Sergey Bylokhov <serb at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/e5870cf0
Stats: 111 lines in 3 files changed: 54 ins; 26 del; 31 mod
8252133: The java/awt/GraphicsDevice/DisplayModes/CycleDMImage.java fails if metal pipeline is active
Reviewed-by: prr
-------------
PR: https://git.openjdk.java.net/jdk/pull/554
More information about the 2d-dev
mailing list