Search Unity

  1. Unity 2020.2 has been released.
    Dismiss Notice
  2. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Application.targetFrameRat It doesn't work in versión 2020.2.0b5.3233

Discussion in '2020.2 Beta' started by Eck0, Oct 4, 2020.

  1. Zuntatos

    Zuntatos

    Joined:
    Nov 18, 2012
    Posts:
    563
    Accidentally posted too early. Oops. See picture.

    Shifting the rendering a bit closer to the wait-for-flip part, so there is more input captured closer to the same vlabk
     

    Attached Files:

  2. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    I see. Yes, you're right: we sample input right after a frame appears on the screen. And you are correct, the callback I'm adding will allow implementing 2) if needed. However, that will only really be useful if you have VSync enabled as otherwise you don't have the reference point of when the pixels are actually sent to the display.
     
    Zuntatos likes this.
  3. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    Finally found this in my history:


    And here is interesting inputlag data when using Vsync with external cap below refresh rate:https://forums.blurbusters.com/viewtopic.php?p=41138&sid=9f5c5febb97e895fb004ea025b2a5719#p41138
     
    Last edited: Oct 25, 2020
    rz_0lento likes this.
  4. Zephus

    Zephus

    Joined:
    May 25, 2015
    Posts:
    211
    Is there something I'm missing here? Almost every single game I've played in the last 15 years has options to turn VSync on and off, as well as choose the frame rate. The player should be able to choose if they want to run at 30, 60, 120 or uncapped. That's a standard setting that can be found in almost every single option menu. How is this even a discussion?

    Also - a crapton of games limit the frame rate to 30 or 60 on purpose, especially on console. Have I crossed over into another dimension where this isn't the industry standard?
     
  5. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Uncapped option is great. The other ones are horrible. They by definition can only work well on monitors that have refresh rates that are multiple of those limits. They will appear stuttery on 85, 144 or 165 Hz monitors. If you add a cap, you should allow entering arbitrary number there.

    You aren't allowed to turn off VSync on consoles. Games just set QualitySettings.vSyncCount to 1 or 2 to achieve 30/60 frame rate cap.

    Very interesting. A few observations:

    • That scanline sync trick is cool. I can definitely see how it can improve input latency. Calibrating it might be tough, though;
    • It isn't clear to me which part of the screen they're looking at when VSync is off when not using scanline sync. Measuring the bottom part of the screen would naturally give you better input latency but that doesn't represent what a human actually sees on average since the upper part of the screen will be a frame behind;
    • The input latency increase with 100% GPU usage is bizarre. I don't really yet understand why it's happening, but I suspect it is a synchronization bug in that engine. It's almost as if it allows several frames to accumulate in the graphics pipeline instead of synchronizing with frame completions properly. In Unity, this is controlled by QualitySettings.maxQueuedFrames.
     
    Last edited: Oct 26, 2020
    GliderGuy likes this.
  6. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    This was tested with multiple different engines, not just UE, and it holds true for them as well (Overwatch, CoD, etc.) as well as different GPUs (AMD/Nvidia)
    Yes, this is what Low Latency On in Nvidia panel does now in latest drivers, it just sets Queued Frames to 1 as old setting for that. Ultra one does some behind the scene magic to lower latency when GPU overloaded.
    Yeah, that's a fair point. I guess you can offset scanline up (negative value) instead to get latest frame. Basically, it is a faster vsync but fine tuned and with a choice, with much more clear logic and understanding what is happening, instead of blackbox driver magic.
    Judging by the latest updates to RTSS, latency and overhead were reduced even further and it seems like they are moving towards possibly automated solution, with jitter approximation. That would be pretty cool.


    As a final thought, I still think it is worth for Unity to implement more precise generic framelimiter just like UE did. It is good that future version will now give the developer an ability to roll out his own in the update loop, but not many will do, so a tad more precise generic one would be great. Even if it is just slightly better in terms of input latency (nstead of random chaos as of now) than vsync - it still would worth it.
     
    Last edited: Oct 26, 2020
  7. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Yeah but it's still up to the engine what it does with that limit. Up until Unity 2020.2, Unity was synchronizing on it in the wrong place (In Present() call rather than before sampling input) and that gave you a whole extra frame of latency. That stuff is so easy to mess up...

    Fair enough, I added a new item to our backlog to do a deep dive on this stuff.
     
    GliderGuy, Digika and rz_0lento like this.
  8. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    If anyone is interested, here is some interesting discussion about how latency can be induced in many different ways, starting from pages 4/5:
    https://forums.blurbusters.com/viewtopic.php?f=10&t=7551&start=30

    For example:
     
  9. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Yeah Unity already uses flip-mode swap chains (since 2019.1 IIRC). We also use DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT to prevent unwanted latency (and it was refactored to work better in 2020.2).
     
  10. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    What is this talk about exclusive fullscreen not being true exc. fullscreen with presentation locked to its own process but rather some hacky compositor bypass at the end of presentation?
     
  11. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
  12. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    So which model do you use for what you've marked as "fullscreen exclusive"? What about Windows versions that are below 8.1?
     
  13. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Since Unity 2019.1, with Direct3D 11 Unity uses DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL on Windows 8.1 and later when running in borderless fullscreen (or windowed) mode. When running with exclusive fullscreen, or when running on Windows 8 and older, Unity uses DXGI_SWAP_EFFECT_DISCARD. Direct3D 11 doesn't properly support flip presentation modes in exclusive fullscreen mode.

    With Direct3D 12, Unity always uses DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL.
     
    Digika likes this.
  14. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
  15. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Correct. Flip model swapchain have really bad input latency with exclusive fullscreen (like 3 extra frames last time I measured) on Direct3D 11 so we fall back to BltBlt model in that case.
     
  16. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    I see. Any reason DXGI_SWAP_EFFECT_FLIP_DISCARD and waitables are not utilized? I assume in case of waitable you probably need to extend that control to the user render pipeline so he can utilize that.
     
  17. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    When we tested it DXGI_SWAP_EFFECT_FLIP_DISCARD had absolutely no performance advantage over DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, and DXGI_SWAP_EFFECT_FLIP_DISCARD is not supported on Windows 8.1, which would mean increased testing matrix if we were to make additional decision based on the OS.

    Can you elaborate your question about "waitable"? I'm not quite sure what you're asking.
     
  18. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    See
    https://devblogs.microsoft.com/directx/dxgi-flip-model/

    What else is new in flip model?
    In addition to the above improvements, which apply to standard swapchains without anything special, there are several features available for flip model applications to use:

    • Decreasing latency using DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT. When in Independent Flip mode, you can get down to 1 frame of latency on recent versions of Windows, with graceful fallback to the minimum possible when composed.

    Jesse Natalie also talks about it in the video you've linked.
     
  19. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Ah yes, I suspected that's what you were asking about but I wasn't sure what you wanted to know about it. Unity uses it extensively. It is the basis for QualitySettings.maxQueuedFrames on D3D11 and D3D12. Setting that to 1 will achieve minimum latency. Note that it's also used when VSync is disabled: that's why I was claiming that there shouldn't really be latency difference between the two if they run at the same frame rate.
     
  20. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    Fair enough, I just wanted to make sure.
    Did some testing with PresentMon to see what presentation modes Unity (2019.2+) uses on Windows 7 (DWM on). Running with
    -window-mode exclusive
    gives me "Hardware: Legacy Flip" which, if we reference Jesse's talk, is proper FullScreen Exclusive with flipping. Running in Unity's "default" fullscreen (borderles fullscreen) I'm getting Present mode "Composed: Copy with GPU GDI" which I cant seems to correlate to any of the MS terminology. I'm assuming this is Windowed BitBlitTransfer with some Compositor trickery?
    Interestingly enough, UE4.2+ win Borderless Fullscreen run in "Composed: Copy with CPU GDI".
     
  21. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Yeah that presentation talk was about windows 10. They changed a lot of things in recent OSes. On Windows 7, since DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL is not a thing, we use DXGI_SWAP_EFFECT_DISCARD which in windowed mode always result in a copy, which they call BitBlit (based on GDI function of same name).

    Since PresentMon is open source with a permissive license, we can peek at the source code to see if we can find any more information on those descriptions:

    https://github.com/GameTechDev/Pres.../PresentData/PresentMonTraceConsumer.hpp#L129
     
  22. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    Oh, I see, I just realized this is only true to Win8.1+ and Win10 when proper flip model + waitables are used, this makes sense now as I was thinking in the context of older Windows and FSE. Took me this long to understand what did you mean and why there was disagreement in the thread, since in Win10, Borderless Fullscreen with all new presentation improvements is essentially as fast as FSE, so the FPS limiter/cap that is equal to refresh rate versus vsync is essentially the same, yes. And the rest of the participants were talking in the context of old FullScreen Exclusive where it is not the case and where latency hit with vsync is very high, which Jesse demonstrates in his presentation @ 9:18
     
  23. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Well in case of FSE I'd expect us to hit the path he explains at 9:56. But yeah, borderless window on Windows 7 is going to be rough. That's the price you pay for using an 11 year old operating system :).
     
  24. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    I assume this only should happen if we use SyncMode=1 (VSYNC ON) in FSE. If there is no syncmodel, Unity should use legacy HW fs flip without copying buffer? Unless it ALWAYS uses Blt Fullscreen mode regardless of syncmode?
    PresentMon cant distinguish the presentation mode I guess, I did quick tests:

    Uncapped FSE:
    0000000067E726E0 (DXGI): SyncInterval=1 Flags=0 3.93 ms/frame (254.4 fps, 254.4 fps displayed, 1.99 ms latency) Hardware: Legacy Flip


    FSE + syncmode=1 (classic VSYNC ON):

    0000000068B5EC80 (DXGI): SyncInterval=1 Flags=0 12.48 ms/frame (80.1 fps, 80.1 fps displayed, 34.10 ms latency) Hardware: Legacy Flip


    FSE + syncmode=1 +RTSS AfterPresent async cap -00.01 of RefreshRate:

    000068954170 (DXGI): SyncInterval=1 Flags=0 12.50 ms/frame (80.0 fps, 80.0 fps displayed, 27.13 ms latency) Hardware: Legacy Flip


    Interesting present latency results.

    Which is why people who run it on Win7 or Win8 prefer true FSE with external limiter like RTSS which you can fine tune or use scanlinesync trick to get less than half or even just 1/3 of (additional) frame latency and have basically VSYNC on.
     
    Last edited: Oct 28, 2020
  25. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,020
    Pesky frame rats
     
  26. Kuura

    Kuura

    Joined:
    Apr 16, 2015
    Posts:
    57
    Really appreciate the work on reducing any engine lag there is. The world is full of games that benefit from very low latency input, and I think these kind of features enable many new kinds of gameplay to be made with Unity.
     
  27. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Got vsync working in Unity (2020.1.7).

    Did some testing with different configurations with my 240hz monitor, on Windows. (RTSS below is Rivatuner Statistics Server ). All tests have maxQueuedFrames = 1, exclusive fullscreen. Tried maxQueuedFrames = 0 but it makes fps go below 240.

    From best to worst:
    A: targetFrameRate = 1000, vSyncCount = 0
    targetFrameRate = -1, vSyncCount = 0
    targetFrameRate = 500, vSyncCount = 0
    Can't tell a difference between all of these 3, got best score with 1000 limit.


    B: targetFrameRate = -1, vSyncCount = 0, RTSS fps limit = 240fps
    Feels similar to A, what surprised me is that setting RTSS fps limit = 300fps somehow made it worse.

    C: targetFrameRate = 300, vSyncCount = 0
    It feels more responsive than vSync (F) but looks a bit choppy compared to B, A.


    E: targetFrameRate = 240, vSyncCount = 0
    Game looks choppy but has slightly better responsiveness and min fps drops than vSync (F).


    F: targetFrameRate = -1, vSyncCount = 1
    So with vSync game looks better/smoother than E but is less responsive - mouse feels like it's floating. Definitely adds input lag, will try again in 2020.2. Min fps drop to 100-140. Somehow max fps goes beyond 240(?):


    If I had to pick between D and E I would maybe pick E for smoother graphics but worse responsiveness. Depends if fps could handle it. Anyway A, B, C are all better.

    Conclusion: Setting targetFrameRate = monitorHz * ~1.5 (or more) and turning off vsync gives best results.

    I wish Unity would focus more on improving targetFrameRate (and maxQueuedFrames) rather than vsync. I've noticed that maxQueuedFrames = 2 looks a bit smoother than 1 despite getting more fps than monitor hz with both settings. Maybe that could be improved?

    Testing was nothing else than playing the game, A case:
     
    Last edited: Oct 31, 2020
  28. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Would love to see results from 2020.2 :).
     
  29. rz_0lento

    rz_0lento

    Joined:
    Oct 8, 2013
    Posts:
    1,924
    Just to make sure, you do know that 2020.2 has hugely improved delta time measuring? Some targets like Vulkan and VR are not yet supported but where it has been changed already it's like night and day compared to previous versions.
     
  30. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Interesting I hope it will improve choppiness.

    https://blogs.unity3d.com/2020/10/0...020-2-for-smoother-gameplay-what-did-it-take/
    Somehow I'm able to set it to 0 and it halves average fps:
    maxQueuedFrames = 2: avg fps 1000
    maxQueuedFrames = 1: avg fps 500
    maxQueuedFrames = 0: avg fps 250
     
  31. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    I fixed that in 2020.2. Setting it to 0 would hit some bad logic before.
     
    Lars-Steenhoff and Kamyker like this.
  32. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Tried 2020.2.9b, my results are that I get 50% less fps :/
    With maxQueuedFrames = 2 I get previous maxQueuedFrames = 1 performance:

    Sometimes waitforsignal spikes are huge

    I'll probably go back to 2020.1 for now and make similar screenshots for comparison.

    Anyway trying vsync again and I can't imagine myself using it. Still noticeable making me miss a lot of targets :/
     
    Last edited: Nov 3, 2020
  33. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    A few questions: which graphics API and which fullscreen mode did you use? 2020.2 did cut half a frame off between CPU and GPU synchronization, so the maxQueuedFrames affecting fps a bit more might be expected.
     
  34. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Directx 11, tried also automatic but I guess that's the default one so it didn't change anything. Exclusive fullscreen.
    Prob would be worth checking performance with other projects and possibly make
    maxQueuedFrames = 3
    new default value.
     
  35. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Any chance you could check FullscreenWindow mode? Just wondering if it would make a difference as the synchronization is slightly different between the two.
     
  36. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Interesting, completely different fps:

    maxQueued = 1
    Exclusive:

    FullscreenWindow:


    maxQueued = 2
    Exclusive:

    FullscreenWindow:


    maxQueued = 3
    Exclusive:


    So avg fps are similar when queue is 1 higher for exclusive but min fps and peaks are very different.
     
  37. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Similar story for vsync:
    queue = 1, exclusive:


    All other settings are something similar to
     
  38. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Yeah so on D3D11 in FullscreenWindow mode, we are able to leverage DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT. This isn't supported on D3D11 when using exclusive fullscreen, so we fall back to older "Windows 7"-style synchronization mechanisms which are less optimal. I'm actually surprised to see such a big difference between the two: in my testing they were quite close. Unity 2020.1 did not properly utilize frame latency waitable object - it's likely that this method suffers much more from half a frame reduced latency. Out of curiosity: when the game is running with VSync off, is your game CPU or GPU bound?

    Microsoft in general as been calling exclusive fullscreen mode "legacy" and all new improvements generally benefit FullscreenWindow mode more.
     
  39. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Furthermore, we will probably want to adjust exclusive fullscreen behaviour if you're seeing such performance issues in 2020.2. Is there any chance you could give us a bug report with a project that shows this off?
     
  40. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    Huh?
    That does not explain his VSYNC OFF ExclusiveFullscreen uncapped fps. FrameQueing mostly relevant when you use some kind of syncinc, as Jesse mentioned, in FullScreen with Queue 2+ he should be getting full achievable FPS but he does not.
    Looks like an issue to me,
     
  41. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Probably GPU, screenshots are from paused menu scene (with visible BoatAttack water system). Not sure if my custom implementation of AudioSource.GetSpectrumData with Burst runs when game is paused.

    I have this thing checked (also tried disabling but it didn't change much).


    I believe you should also use it when testing, furthermore if player has in unchecked then DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT should be used as: https://devblogs.microsoft.com/directx/demystifying-full-screen-optimizations/
    So with optimizations enabled game runs in windowed FSE mode.

    Question is if it's possible to check if user has true old FSE or new fake FSE (FSE with optimizations enabled).

    https://docs.microsoft.com/en-us/wi...xgi/for-best-performance--use-dxgi-flip-model
    I guess if it's true then I may remove exclusive fullscreen at all from my game, will do more tests.


    What about this one, any chance to be able to test it?
     
    Last edited: Nov 4, 2020
  42. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
  43. Digika

    Digika

    Joined:
    Jan 7, 2018
    Posts:
    96
    Use PresentMon.
    FYI, old FSE and new FSO in Win10 under D3D12 perform the same with VSYNC OFF. With VSYNC ON, waitable object gives an edge to new Fullscreen mode that uses True Immediate Independent Flip model
     
  44. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Unfortunately you cannot do that on D3D11. We do it on D3D12, but DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT just doesn't work in exclusive fullscreen mode on D3D11 (if you have it, "transition to fullscreen mode" API call just fails).

    Unity already uses DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING when VSync is disabled when available in non-exclusive fullscreen mode (that means FullscreenWindow and Windowed).

    It wasn't used to its full potential in 2020.1.

    We still have to throttle the CPU at some point even if VSync is disabled and the GPU is lagging behind. Otherwise the CPU will get more and more out of sync with the GPU.
     
  45. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    I'm trying d3d12, overall experience is pretty good. It seems that old exclusive fullscreen doesn't work at all (it behaves the same as borderless). The only issue I have is that game usually gets stuck when switching from FSE to FS. I can hear music being played but can't click anything as game is frozen.

    Game finally crashes after ~25 seconds:
    Bug report case 1290288:


    Code (CSharp):
    1. Stack Trace of Crashed Thread 10668:
    2. 0x00007FFA6DD43953 (UnityPlayer) D3D12Fence::Wait
    3. 0x00007FFA6DD62762 (UnityPlayer) GfxDeviceD3D12::FinishRendering
    4. 0x00007FFA6DD359F2 (UnityPlayer) D3D12SwapChain::FlushGPUAndReinitializeBackbuffer
    5. 0x00007FFA6DD3354C (UnityPlayer) D3D12SwapChainBase::Adjust
    6. 0x00007FFA6DD403F7 (UnityPlayer) InitializeOrResetPrimaryD3D12SwapChainHWND
    7. 0x00007FFA6EF73342 (UnityPlayer) WinScreenSetup::SetResolution
    8. 0x00007FFA6DE2CAED (UnityPlayer) ScreenManagerWin::SetResolutionImmediate
    9. 0x00007FFA6E1F24BD (UnityPlayer) ScreenManager::SetRequestedResolution
    10. 0x00007FFA6E3F8EA8 (UnityPlayer) `InitPlayerLoopCallbacks'::`2'::PostLateUpdateUpdateResolutionRegistrator::Forward
    11. 0x00007FFA6E3E4F0C (UnityPlayer) ExecutePlayerLoop
    12. 0x00007FFA6E3EAC09 (UnityPlayer) PlayerLoop
    13. 0x00007FFA6DE2AEB6 (UnityPlayer) PerformMainLoop
    14. 0x00007FFA6DE28F0E (UnityPlayer) MainMessageLoop
    15. 0x00007FFA6DE2E79F (UnityPlayer) UnityMainImpl
    16. 0x00007FFA6DE2F6EB (UnityPlayer) UnityMain
    17. 0x00007FF61F9211F2 (BeatAim) __scrt_common_main_seh
    18. 0x00007FFB34DE7C24 (KERNEL32) BaseThreadInitThunk
    19. 0x00007FFB34F4CEA1 (ntdll) RtlUserThreadStart
     
  46. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Thanks, we'll take a look!
     
  47. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Submitted new bug report with repro project as it seems like it's happening only when any Screen Space - Camera canvas is active. Case 1292076.

    Took me 2 days of cutting and rebuilding my project to pieces to find it...
     
    LeonhardP likes this.
  48. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
  49. Kamyker

    Kamyker

    Joined:
    May 14, 2013
    Posts:
    574
    Sent another project with a button to switch fullscreen mode and max queued frames slider. 1700 fps vs 250 fps - it's an empty project so I guess cpu bound issue not gpu. Case 1293091

    I'm a bit stuck now in 2020.2 with my project, can't use dx11 as exclusive fullscreen has bad fps, can't use dx12 as switching freezes the project. My only option is to disable exclusive fullscreen but players won't like it. Hopefully one dx will be fixed asap.
     
    LeonhardP likes this.
  50. Tautvydas-Zilys

    Tautvydas-Zilys

    Unity Technologies

    Joined:
    Jul 25, 2013
    Posts:
    8,009
    Sorry about that. Are you able to revert your project back to 2020.1 for now? I will look at it as soon as it gets through QA but it might still take a few weeks to get the fixed build into your hands.
     
    LeonhardP likes this.
unityunity