On Thu, 12 Jun 2025 05:41:23 GMT, Ambarish Rapte <ara...@openjdk.org> wrote:

> ### 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 ...

@tiainen Would you be able to look at the build changes and also do a test 
build?

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

PR Comment: https://git.openjdk.org/jfx/pull/1824#issuecomment-2968435463

Reply via email to