Search Unity

Async Compute Support for more platforms

Discussion in 'General Graphics' started by ElliomanGames, Nov 14, 2018.

  1. ElliomanGames

    ElliomanGames

    Joined:
    Jul 26, 2016
    Posts:
    14
    Hi,
    Hope I'm posting in the correct forum, wasn't sure if I should post here or in "Betas & Experimental Features".

    2017.3 added support for Async Compute but unfortunately it is currently only supported for PS4.
    https://forum.unity.com/threads/preview-of-2017-3-features.497331/

    I'm working a game for XBox so I was wondering if anyone knows if/when more platforms will be added? Couldn't find any info on the Unity Roadmap nor on the forums.
     
  2. ElliomanGames

    ElliomanGames

    Joined:
    Jul 26, 2016
    Posts:
    14
    Bumping this in hopes of getting some answers.
     
  3. OlibobUnity

    OlibobUnity

    Unity Technologies

    Joined:
    Jun 19, 2017
    Posts:
    370
    Hi @ElliomanGames

    Yes, Async Compute will be available on Xbox One, if you use SRP on DX12. We're releasing experimental DX12 support in Unity 2018.3, so we'd be grateful if you would give it a go then!
     
    Last edited: Dec 4, 2018
    richardkettlewell likes this.
  4. ElliomanGames

    ElliomanGames

    Joined:
    Jul 26, 2016
    Posts:
    14
    Heyhey,
    Thanks for the reply. That's great to hear, will give that a go when it's out.

    Unfortunately we're not using SRP right now (It's on the roadmap), will there also be support for the non-SRP projects as well later on?
     
  5. OlibobUnity

    OlibobUnity

    Unity Technologies

    Joined:
    Jun 19, 2017
    Posts:
    370
    Hey again,

    I've chatted to one of our graphics engineers, and it seems like it's actually supported in the legacy renderer as well as SRP. (e.g.
    Graphics.ExecuteCommandBufferAsync
    for legacy and
    ScriptableRenderContext.ExecuteCommandBufferAsync
    for SRP.)

    It definitely is DX12 only though. You can call the async APIs on DX11, but they'll fall back to just using the graphics queue.
     
    Last edited: Dec 4, 2018
    SugoiDev likes this.
  6. ElliomanGames

    ElliomanGames

    Joined:
    Jul 26, 2016
    Posts:
    14
    Hey,
    Oh that's awesome. Then I'm going to give DX12 a go and see how things run.

    Thanks again for the help.
     
    Last edited: Dec 5, 2018
  7. Bas-Smit

    Bas-Smit

    Joined:
    Dec 23, 2012
    Posts:
    274
    Should this work on pc when using dx12?
     
  8. GuardHei

    GuardHei

    Joined:
    Feb 10, 2018
    Posts:
    89
    what other platforms does it support now? i tried dx12 on pc and the latest metal on mac, neither seemed to work as "
    SystemInfo.supportsAsyncCompute" is always false
     
    Arycama likes this.
  9. Arycama

    Arycama

    Joined:
    May 25, 2014
    Posts:
    185
    I've also had the same experience on two machines, Both Windows 10, one with a Geforce 970, and the other with a Geforce 1050. Both running latest Unity 2019.3, DX12 using legacy pipeline.
     
  10. GuardHei

    GuardHei

    Joined:
    Feb 10, 2018
    Posts:
    89
    i can expect 970 doesn't support async compute, because Maxwell does not support such feature. But 1050 should work though. My gpu is radeon pro 5500m and RDNA should support async compute as well. Yet it doesn't seem to work.
     
  11. Kolyasisan

    Kolyasisan

    Joined:
    Feb 2, 2015
    Posts:
    397
    Bumping this thread a bit, but when using Vulkan, Unity tells that the async compute is not supported. Only DX12 yields that async compute is supported. Why is that?
     
    dongyexin likes this.
  12. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
    Hi, @OlibobUnity, I am also very interested in async compute support. What is the current status? In particular, any plans to support it on mobile platforms (Vulkan on Android, Metal on IOS).

    I am currently exploring a feasibility of running some GPU simulation on phones as well as standalone VR headsets such as Quest 2. I assume that especially for VR it is necessery to decouple graphics rendering from compute (it is fine if the simulation drops below real-time but not acceptable for the graphics). Thanks for your response
     
  13. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
  14. Imakhiil

    Imakhiil

    Joined:
    Oct 11, 2013
    Posts:
    96
    I'd be interested in knowing that too.
     
  15. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    To these platforms even support async compute at the hardware level? I couldn't find any async compute dispatching APIs on Metal.

    Also, async compute isn't meant for spreading work across multiple frames like that. It's goal is to increase GPU utilization on the same frame by using idle shader cores for compute work like SSAO during rasterization tasks like generating shadow depth maps or filling g-buffers, which don't use all shader cores. For this to work, the GPU must support running multiple compute and graphics command queues in parallel. It was created first by AMD for their GCN architecture (which is used in the PS4 and Xbox One). NVidia didn't implement it until three GPU generations later (with Pascal), but even then the gains on NV hardware were smaller due to the way it does task scheduling.
     
  16. korzen303

    korzen303

    Joined:
    Oct 2, 2012
    Posts:
    223
    orangetech likes this.
  17. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    After doing some research, some mobile GPUs do support async compute. This Vulkan example from Khronos group shows exactly that:
    https://github.com/KhronosGroup/Vul...mance/async_compute/async_compute_tutorial.md

    In Vulkan async is done by using multiple queues, and even my lowly Adreno 610 seems to support 3 queues according to some Vulkan caps viewer app.

    So yeah, Unity seems to be behind the times on that one.
     
    joshuacwilde likes this.
  18. joshuacwilde

    joshuacwilde

    Joined:
    Feb 4, 2018
    Posts:
    731
  19. richardkettlewell

    richardkettlewell

    Unity Technologies

    Joined:
    Sep 9, 2015
    Posts:
    2,285
    we have a Vulkan implementation and more recently an OpenGL one. Along with Metal support, this should provide reasonable coverage where the device is capable of it.

    Im not sure of which version numbers stuff is in though sorry!

    EDIT: sorry I misread this as async readback. Please disregard!
     
    Last edited: Aug 30, 2021
    ekakiya likes this.
  20. joshuacwilde

    joshuacwilde

    Joined:
    Feb 4, 2018
    Posts:
    731
    Oh really? To be clear, I mean async compute, not async readback.
     
  21. richardkettlewell

    richardkettlewell

    Unity Technologies

    Joined:
    Sep 9, 2015
    Posts:
    2,285
    Sorry I totally misread that!! Forget everything I said..
     
    joshuacwilde likes this.
  22. GuardHei

    GuardHei

    Joined:
    Feb 10, 2018
    Posts:
    89
    Any update on this topic?
     
    SkavenPlanet likes this.
  23. nishikinohojo

    nishikinohojo

    Joined:
    Aug 31, 2014
    Posts:
    46
    So, what platforms support this feature exactly Unity?
     
    Ziddon likes this.
  24. Ziddon

    Ziddon

    Joined:
    Feb 6, 2015
    Posts:
    27
    I'd also love to know. My PC with 1050ti returns false on SystemInfo.supportsAsyncCompute. Is there a particular model from which this is enabled?
     
  25. Ziddon

    Ziddon

    Joined:
    Feb 6, 2015
    Posts:
    27
    I just tested with RTX 3080 with Direct3D12, still false. I guess this feature isn't supported yet, but I'd love to play with it as soon as it is.
     
  26. Saniell

    Saniell

    Joined:
    Oct 24, 2015
    Posts:
    194
    If anyone is interested, on gtx 1060 with unity 2023.1a21 'SystemInfo.supportsAsyncCompute' seems to finally return true for me
     
  27. sabint

    sabint

    Joined:
    Apr 19, 2014
    Posts:
    26
    Wanted to poke this thread (as this is one of the top google results) - is this supported on Quest 2 now?