D3D9 is 20 years old (even if it's still getting updated) and graphic cards aren't optimized for it. Computer Graphics is an area where the coupling of hardware and software is much stronger than what Java developers are used to with its abstractions over hardware, and modern graphics hardware assumes modern pipelines. There isn't much hardware out there anymore that doesn't support 12 and by the time it's ready in JavaFX there will be even less. My 8 year-old AMD 400 series card supports 12.
As for features, between D3D10 and12 quite a lot has accumulated. Geometry shaders are considered standard today and are not available in 9. Newer shader models also have more samplers; we are currently limited to 3 lights per mesh because of the bound on these. DX12 also adds support for ray tracing. The list is really rather long. I see that Lukasz answered while I was typing, but I was going to say that I suspect D3D9 will be slowly phased out in favor of 12. I don't know if it's going to be removed or just left there on low maintenance. On Mon, Oct 14, 2024 at 9:38 PM Michael Strauß <michaelstr...@gmail.com> wrote: > Hi Lukasz! > > What is the reason for doing this? Direct3D 9 is not going away on > Windows. Are there any new features that will be enabled by the > Direct3D 12 backend? Having two backends for Windows seems to be twice > the maintenance burden. > > On Mon, Oct 14, 2024 at 6:10 PM Lukasz Kostyra > <lukasz.kost...@oracle.com> wrote: > > > > Hello openjfx-dev, > > > > > > > > we just pushed a prototype of a new JavaFX Direct3D 12 rendering pipeline > > > > for Windows to a new "direct3d12" branch on jfx-sandbox. It is more than > an > > > > experiment branch - we intend to fully develop the D3D12 backend there. > > > > > > > > We're not necessarily looking for contributions at this point, but if > anyone > > > > has early feedback about it or wants to try it by building it themselves, > > > > that would be fine. We also did not test it on a wider range of > hardware, so > > > > your mileage may vary. While D3D12 pipeline will build by default, D3D9 > > > > pipeline is still the default pick at runtime. To run anything on D3D12 > > > > pipeline you need to force it with ex.: > > > > java -Dprism.order=d3d12 ... > > > > > > > > Backend supports 2D rendering (albeit with some graphical issues here > and there > > > > that need to be ironed out) and basic 3D rendering. Expect not > everything fully > > > > working yet (ex. some gradients on 2D controls are incorrect, or > 3D-in-2D will > > > > straight up not work) and the performance not matching D3D9 yet. Our > goal is to > > > > first reach feature completion and then focus on performance. > > > > > > > > Lukasz >