On Fri, 16 Oct 2026 14:40:27 GMT, Lukasz Kostyra <[email protected]> wrote:

> ## Description
> 
> This PR is for review and integration of Direct3D 12 Rendering Pipeline into 
> JavaFX mainline. We released three Early Access (EA) versions of this 
> implementation while keeping the development ongoing on [JavaFX 
> Sandbox](https://github.com/openjdk/jfx-sandbox/tree/direct3d12) and reached 
> a stage where it is ready to be integrated into mainline. Any further work 
> and potential fixes will be done on mainline.
> 
> At the time of writing, this PR is identical to the [JavaFX Sandbox D3D12 
> branch](https://github.com/openjdk/jfx-sandbox/tree/direct3d12) with only one 
> difference - the Sandbox defaults to D3D12 backend. This PR, however, does 
> *NOT* change the default rendering pipeline on Windows. D3D9 remains the 
> default rendering pipeline and D3D12 is optional - it can be selected by 
> providing `-Dprism.order=d3d12`. To verify which pipeline is actually in use 
> `-Dprism.verbose=true` is recommended.
> 
> ## Details
> 
> Below are general changes introduced by the backend:
> 
> ### JSL changes
> 
> - Introduced `HLSL6Backend` class which translates JSL shader code into HLSL6 
> code. D3D12 introduced HLSL Shader Level 6 support and won't support existing 
> HLSL shaders used with D3D9, as those are compiled for unsupported Shader 
> Level 3.
> - D3D12-specific shaders are kept in 
> `modules/javafx.graphics/src/main/native-prism-d3d12/hlsl6`
> - Shader compilation is done with DXC instead of FXC (FXC does not support 
> SL6). DXC is bundled in Windows SDK which JavaFX already integrates with.
> - Backend also generates C++ headers with Shader resource binding 
> information, used by the native-side
> 
> ### Build changes
> 
> - Added new build tasks for generation and compilation of HLSL6 shaders for 
> D3D12
> - Added tasks to compile D3D12 native backend code
> 
> ### Prism changes
> 
> - Added D3D12-specific Java classes (package `com.sun.prism.d3d12`) and a 
> Java-to-JNI layer (package `com.sun.prism.d3d12.ni`)
>   - Java implementation is mostly similar to D3D9 implementation, with only 
> some minor changes needed to accommodate slightly different presentation 
> behavior of the new runtime
>   - JNI interface is relatively high level to reduce the amount of JNI calls 
> for performance
> - Added a native Prism backend implementation using D3D12 runtime (stored in 
> `modules/javafx.graphics/src/main/native-prism-d3d12`)
>   - Written in C++ 20
>   - Uses only interfaces available via Windows API with no third-party 
> libraries - WinAPI, Windows COM interface system and "barebones" Direct3D 12 
> API/runtime
>   - Native layer entry-points...

Reviewers: @kevinrushforth @arapte @jayathirthrao 

@nlisker We would welcome your review or testing if you have time.

Others are also welcome to review.

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

PR Comment: https://git.openjdk.org/jfx/pull/2346#issuecomment-6218587958

Reply via email to