This consists of two optimizations which might be worth exploring and can help improve framerate:
- Create a simpler RingBuffer implementation for cases like Vertex Buffers
- Migrate RingBuffer data to VRAM when submitting a Command List
Currently 2D Vertex Buffer data is kept on an UPLOAD heap which, especially on discrete GPU hardware, can be restrictive when rendering. The idea is to make sure Vertex data is in VRAM while Command Lists are executed. The easiest path to make this happen is to pre-bake a Command List copying the data to VRAM and submit it in batch with prepared rendering Command List.
Adding a simpler Ring Buffer implementation could help reduce CPU work which would help in CPU-heavy scenarios, but it would have to ensure we store complete data for each draw call (preventing potential crashes due to Descriptor/Vertex/Constant data overwrite).
Metal team saw performance gains with the optimization and discrete GPU systems show some performance problems which could be resolved by these optimizations.
- Create a simpler RingBuffer implementation for cases like Vertex Buffers
- Migrate RingBuffer data to VRAM when submitting a Command List
Currently 2D Vertex Buffer data is kept on an UPLOAD heap which, especially on discrete GPU hardware, can be restrictive when rendering. The idea is to make sure Vertex data is in VRAM while Command Lists are executed. The easiest path to make this happen is to pre-bake a Command List copying the data to VRAM and submit it in batch with prepared rendering Command List.
Adding a simpler Ring Buffer implementation could help reduce CPU work which would help in CPU-heavy scenarios, but it would have to ensure we store complete data for each draw call (preventing potential crashes due to Descriptor/Vertex/Constant data overwrite).
Metal team saw performance gains with the optimization and discrete GPU systems show some performance problems which could be resolved by these optimizations.
- blocks
-
JDK-8356858 ☂ JavaFX D3D12: Performance optimization of D3D12 backend
-
- In Progress
-
-
JDK-8368300 JavaFX D3D12: Optimize Blending operations
-
- Open
-