Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

Bug Another Performance BUG : HybridRendererV2 even slower than GameObject-Renderer

Discussion in 'Graphics for ECS' started by lic1227, Dec 25, 2021.

  1. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
    100% Performance BUG.On Android platform,HybridRendererV2 Slower than GameObject-Renderer
    On my last thread (https://forum.unity.com/threads/per...even-slower-than-gameobject-renderer.1195792/) shows that maybe performance bug is trunk utilization very low and cause the lower FPS.Bug in this case,the trunk utilization is OK,bug STILL LOWER than GameObject Renderer

    Tested on Android MIX2S (Snapdragon 845)

    GameObject FASTER !!!!!
    upload_2021-12-26_1-42-29.png

    Captured On Mix2S(Android) —— 24 FPS
    upload_2021-12-26_1-51-26.jpeg


    DOTS Slower !!!!!
    VeryStrange: GPU Cost is Higher ?!
    upload_2021-12-26_1-42-33.png

    Here is the Trunk Utilization,almost all the trunk utilization is OK,but the performance is Still Not Good
    upload_2021-12-26_1-48-19.png

    Captured On Mix2S(Android) —— 10 FPS
    upload_2021-12-26_1-51-53.jpeg

    Need Help!
    @SebastianAaltonen @arnaud-carre
    @JussiKnuuttila
     
  2. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
  3. joelv

    joelv

    Unity Technologies

    Joined:
    Mar 20, 2015
    Posts:
    203
    It looks like it is much much slower on the GPU, not the CPU. 19ms WaitForPresent compared to 82ms. It probably needs specific investigation on that particular device which we will have to discuss how to do when the hybrid rendering team is back from vacation the second week of January.
     
  4. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
    Thanks for reply.I can upload my test Project if needed
     
  5. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
    I have also test this VERY SIMPLE scene on 2 Android mid-end devices(Huawei Mate20 and XiaoMi Mix2S),
    and the result shows that the DOTS Renderer Slower than GameObject-based render A LOT...
    I think this shader is very simple,and should not be GPU bound
    @joelv
    upload_2021-12-29_0-24-32.png
     
  6. joelv

    joelv

    Unity Technologies

    Joined:
    Mar 20, 2015
    Posts:
    203
    Yeah shader is simple and should be supported.
    However the hybrid renderer uses another variant which loads some data using a different path and that might be unexpectedly slow on certain hardware. We need to test internally to see if this is the case I think
     
    arnaud-carre likes this.
  7. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
    Yes.I found that the HRV2 using a different GPU Instancing tech,which is dynamic GPU Instancing(with ByteAddressBuffer),and this is very slow on mobile device(even on Very HighEnd SnapDragon 888).I think maybe traditional GPU instancing(with CBuffer only) is more practical on mobile GPU
     
  8. joelv

    joelv

    Unity Technologies

    Joined:
    Mar 20, 2015
    Posts:
    203
    I have managed to repro this on my Adreno 612. Not with the exact HRV2 code but with something similar.
    We still need to investigate how to handle it as we want these paths for Vulkan on desktop. An UBO path might come with GLES3.1 backend but we can't dynamically switch between SSBO/UBO in a build for a platform since it will explode shader variant count.
     
  9. lic1227

    lic1227

    Joined:
    Jul 14, 2015
    Posts:
    41
    Yes.Maybe UBO on mobile (Vulkan/GLES) is the best way.
    And I have a question, why Apple's (A12) performance well ? Is this a Adreno Driver bug?