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
