Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8368299

JavaFX D3D12: Optimize RingBuffer operations

XMLWordPrintable

      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.

            lkostyra Lukasz Kostyra
            lkostyra Lukasz Kostyra
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: