RFR: 8375466: Metal rendering pipeline crashes on virtualized OS
Kevin Rushforth
kcr at openjdk.org
Tue Feb 3 15:25:29 UTC 2026
On Mon, 2 Feb 2026 13:30:40 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:
> Issue:
> As described in the bug, a crash occurs on macOS VM created using Parallels.
> The crash occurs when trying to create a [MTLArgumentEncoder](https://github.com/openjdk/jfx/blob/5ac1620ac0ba20170ae9758e20893feba5ebc58b/modules/javafx.graphics/src/main/native-prism-mtl/MetalShader.m#L76C49-L76C82), which is required for creating Shaders(Both Prism and Decora)
> This crash is not observed on macOS VM created using Apple Virtualization Framework.
>
> Fix:
> Support for MTLArgumentEncoder is mandatory for Prism Metal Rendering pipeline. Without support for MTLArgumentEncoder the Shaders cannot be created.
> In this scenario Prism should gracefully fallback to Software rendering.
> Added a check to verify if the minimum [MTLGPUFamilyMac2](https://developer.apple.com/documentation/metal/mtlgpufamily/mac2?language=objc) GPU family is supported by the platform. If not supported then Metal Pipeline cannot be used, and rendering falls back to software pipeline.
LGTM
One thing of note is that with the newly-updated default pipeline order of `"mtl,es2,sw"` on macOS, if we fallback to sw (e.g., on a Parallels setup that doesn't support mtl or es2), the sw pipeline will use Metal to blit. I think that should be OK as long as it works (I note we have the same potential issue with OpenGL today, so this is not a new issue).
-------------
Marked as reviewed by kcr (Lead).
PR Review: https://git.openjdk.org/jfx/pull/2061#pullrequestreview-3745918871
More information about the openjfx-dev
mailing list