On Thu, 31 Jul 2025 10:16:50 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 woul...
>
> Ambarish Rapte has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   nir: review followup

A number of files is missing `@Override` annotations, I've created 
[JDK-8364488](https://bugs.openjdk.org/browse/JDK-8364488) for those.

These files are not a part of my eclipse config normally (I could not get it 
configured to pick up the `../../build/libs/antlr4-4.7.2-complete.jar` 
correctly, eclipse complains about stull like

Description     Resource        Type    Path    Location
The package org.antlr.v4.runtime.atn is not accessible  JSLParser.java  Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
3
The package org.antlr.v4.runtime.misc is not accessible JSLLexer.java   Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
10
The package org.antlr.v4.runtime.misc is not accessible JSLParser.java  Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
6
The package org.antlr.v4.runtime.tree is not accessible JSLParser.java  Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
7
The package org.antlr.v4.runtime is not accessible      JSLLexer.java   Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
7
The package org.antlr.v4.runtime is not accessible      JSLParser.java  Java 
Problem    /graphics/build/gensrc/antlr/com/sun/scenario/effect/compiler   line 
5


so there might be more warnings and errors, in addition to the unlikely 
argument type warnings in

Description     Resource        Type    Path    Location
Unlikely argument type String for contains(Object) on a Collection<Function>    
MSLBackend.java Java Problem    
/graphics/src/jslc/java/com/sun/scenario/effect/compiler/backend/hw     line 216
Unlikely argument type String for contains(Object) on a Collection<Function>    
MSLBackend.java Java Problem    
/graphics/src/jslc/java/com/sun/scenario/effect/compiler/backend/hw     line 238

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

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

Reply via email to