On Mon, 2 Nov 2026 19:36:15 GMT, Kevin Rushforth <[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 "bare... > > modules/javafx.graphics/src/main/java/com/sun/prism/d3d12/D3D12Context.java > line 130: > >> 128: >> 129: @Override >> 130: protected void updateTexture(int texUnit, Texture tex) { > > Compared to the D3D pipeline, this doesn't check wrap mode or filtering. Is > that done elsewhere? It's passed to native-side with `setSamplerParameters` and native-side translates it to D3D12 constants, see `D3D12SamplerStorage.cpp @ 75`. Regardless, I do see that native-side assumes no support for simulated wrap modes. I'll add it. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/2346#discussion_r4467555168
