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

Low graphic rendering performance in metal pipeline

XMLWordPrintable

    • generic
    • generic

      Executed the RenderPerf tests (Rectangle, WhiteText) for metal pipeline using the javafx sandbox metal branch code as of 29th May 2023.
      The FPS value obtained with metal pipeline was significantly less when compared with the FPS value obtained with ES2 pipeline.
      Test execution result is attached.

      Test environment details:
      Platform: MacOS 13.3.1
      Metal: Sandbox metal branch as on 29th May 2023
      ES2: JavaFX Mainline

      This shows that there is scope for improvement in graphical rendering performance with metal pipeline.

        1.
        Cache MTLRenderPipelineState for Solid_Color fragment function Sub-task Resolved Ambarish Rapte  
        2.
        Comment out printing of vertex array and color array Sub-task Resolved Ajit Ghaisas  
        3.
        Minor correction in MTLShader.m - avoiding for loops used for logging with #ifdefs Sub-task Resolved Ajit Ghaisas  
        4.
        Cache Fragment functions uniform variable name and id in MTShader.java Sub-task Resolved Ambarish Rapte  
        5.
        Avoid intermediate array copy during copying rtt data to UploadingPainter Sub-task Resolved Ajit Ghaisas  
        6.
        Avoid additional flushVertexBuffer() call from MTLContext Sub-task Resolved Ajit Ghaisas  
        7.
        Optimize MTLCommandBuffer creation and commit Sub-task Resolved Ambarish Rapte  
        8.
        Texture get reused with single command buffer Sub-task Resolved Ambarish Rapte  
        9.
        Skip reuse check for glyph texture Sub-task Resolved Ambarish Rapte  
        10.
        Cache MTLSamplerState objects Sub-task Resolved Ambarish Rapte  
        11.
        MSLBackend: Remove unrequired samplers from shaders Sub-task Resolved Ambarish Rapte  
        12.
        drawIndexedQuads: pass only required size of vertex buffer to shader Sub-task Resolved Ambarish Rapte  
        13.
        Minor optimization of fillVB method Sub-task Resolved Ajit Ghaisas  
        14.
        Reduce MTLRenderCommandEncoders wherever possible Sub-task Resolved Ajit Ghaisas  
        15.
        Skip reuse check for region texture Sub-task Resolved Ambarish Rapte  
        16.
        Correct texture usage and storage mode Sub-task Closed Ambarish Rapte  
        17.
        Remove [CommandBuffer waitUntilCompleted] call Sub-task Resolved Ambarish Rapte  
        18.
        Avoid createing new RenderEncoder in clearRtt Sub-task Resolved Ambarish Rapte  
        19.
        Avoid creating a new MTLBuffer for encoding arguments Sub-task Resolved Ambarish Rapte  
        20.
        Replace setVertexBytes with setVertexBuffer Sub-task Resolved Ambarish Rapte  
        21.
        Remove PixelBuffer created per rtt Sub-task Resolved Ambarish Rapte  
        22.
        Increase RingBuffer size and limit transient buffer size per MTLCommandBuffer Sub-task Resolved Ambarish Rapte  
        23.
        Use MTLRenderCommandEncoder.drawIndexedPrimitives for 2D rendering Sub-task Resolved Ambarish Rapte  
        24.
        Avoid creating transient buffers for data Sub-task Resolved Ambarish Rapte  
        25.
        Wait for completion of a single CommandBuffer when all buffers are in use Sub-task Resolved Ambarish Rapte  

            arapte Ambarish Rapte
            kpk Karthik P K
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: