> ### Description > This is the implementation of new graphics rendering pipeline for JavaFX > using Metal APIs on MacOS. > We released two Early Access (EA) builds and have reached a stage where it is > ready to be integrated. > Default rendering pipeline on macOS has not been changed by this PR. OpenGL > still stays as the default rendering pipeline and Metal rendering pipeline is > optional to choose (by providing `-Dprism.order=mtl`) > The `-Dprism.verbose=true` option can be used to verify the rendering > pipeline in use. > > ### Details about the changes > > **Shader changes** > - MSLBackend class: This is the primary class that parses (Prism and Decora) > jsl shaders into Metal shaders(msl) > - There are a few additional Metal shader files added under directory : > modules/javafx.graphics/src/main/native-prism-mtl/msl > > **Build changes** - There are new tasks added to build.gradle for > - Generation/ Compilation/ linking of Metal shaders > - Compilation of Prism Java and Objective C files > > **Prism** - Prism is the rendering engine of JavaFX. > - Added Metal specific Java classes and respective native implementation > which use Metal APIs > - Java side changes: > - New Metal specific classes: Classes prefixed with MTL, are added here : > modules/javafx.graphics/src/main/java/com/sun/prism/mtl > - Modification to Prism common classes: A few limited changes were required > in Prism common classes to support Metal classes. > - Native side changes: > - New Metal specific Objective C implementation is added here: > modules/javafx.graphics/src/main/native-prism-mtl > > **Glass** - Glass is the windowing toolkit of JavaFX > - Existing Glass classes are refactored to support both OpenGL and Metal > pipelines > - Added Metal specific Glass implementation. > > ### Testing > - Testing performed on different hardware and macOS versions. > - HW - macBooks with Intel, Intel with discrete graphics card, Apple > Silicon (M1, M2 and M4) > - macOS versions - macOS 13, macOS 14 and macOS 15 > - Functional Testing: > - All headful tests pass with Metal pipeline. > - Verified samples applications: Ensemble and toys > - Performance Testing: > - Tested with RenderPerfTest: Almost all tests match/exceed es2 performance > except a few that fall a little short on different hardwares. These will be > addressed separately (there are open bugs already filed) > > ### Note to reviewers : > - Providing `-Dprism.order=mtl` option is a must for testing the Metal > pipeline > - It would be a good idea to test both OpenGL and Metal pipelines > - Known issues and tasks ...
Ambarish Rapte has updated the pull request incrementally with one additional commit since the last revision: changes for running apps in eclipse ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1824/files - new: https://git.openjdk.org/jfx/pull/1824/files/b8be34a5..fe40d04d Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1824&range=07 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1824&range=06-07 Stats: 4 lines in 2 files changed: 2 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jfx/pull/1824.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1824/head:pull/1824 PR: https://git.openjdk.org/jfx/pull/1824