MSI AB / RTSS development news thread

Discussion in 'MSI AfterBurner Application Development Forum' started by Unwinder, Feb 20, 2017.

  1. hitzz

    hitzz Member

    Messages:
    12
    Likes Received:
    1
    GPU:
    RTX 3090
    Ahh thank you for explanation! Regarding amd frame generation, maybe we will be able to revisit this topic when it will come to more games if that will be relevant by then. Thanks again
     
  2. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    Sure, but I'm almost certain that it is a case of AMD's frame generation implementation which simply presents two frames almost immediately with no extra framepacing applied to it. So you see something like 15,7 .. 1 .. 15,7... 1...15.7 .. 1 for real 60 FPS bumped to 120 with their FG. That's probably why they have explicit minimum FPS recommendation for it.
     
    SanokKule and hitzz like this.
  3. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    Found AMD's own info on frame generation, where they declare that zig-zag pattern on frametime graph for enabled FG can be by design and expected:

    "A game using AMD FSR 3 in this configuration will show a “zig-zag” pattern on frame time / present-to-present timing graphs. This is expected."


    [​IMG]
     
    Haldi, Undying, SanokKule and 2 others like this.
  4. terry_bogard_sv

    terry_bogard_sv Member Guru

    Messages:
    160
    Likes Received:
    33
    GPU:
    AMD RX 6800 16GB
    I tried FSR3 yestereday in forspoken with frame generation enabled and yes, that "zig-zag" was present using vsync on, but using vsync off and scanline sync the game is buttery smooth with a flat frametime graph as the gpu usage is reduced a lot. this was using my 6800 in 1440p and the fps locked to 120 and 120hz with freesync disabled.
     
    SanokKule and hitzz like this.

  5. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    If you ever tried to use NVIDIA DLSS Frame Generation with a third party framerate limiter, then you most likely know that attempt to limit framerate with any external solutions fundamentally breaks NVIDIA Frame Generation logic. It breaks motion estimation AI making any movement pretty stuttery, even when framerate is high. The only limiter compatible with FG is NVIDIA's own one, which is integrated directly into the driver so Frame Generation may internally adopt itself to it. This video shows what is happening to camera movement when you try to enable Frame Generation with external RTSS framerate limiter enabled. It also demonstrates small workaround I've added to deal with this issue - now RTSS framerate limiter can be switched to NVIDIA Reflex framerate limiting mode, which will allow it to use NVIDIA's own implementation, compatible with DLSS Frame Generation.

     
  6. MeatSafeMurderer

    MeatSafeMurderer New Member

    Messages:
    3
    Likes Received:
    2
    GPU:
    GTX 1070
    This might seem like an odd request, and I'm not sure if such a thing is even possible, but I thought I'd ask anyway. Since you're already looking at it and adding new modes, is there anyway to limit framerate while allowing the flip queue to still fill up? I know it seems like an odd request, since typically people want to limit their framerate to get as little latency as possible, but I have my reasons for wanting this. Some FreeSync monitors (especially cheap ones) are particularly sensitive to rapidly fluctuating flip presentation times, causing visible flicker. As it stands right now none of the modes in RTSS, nor NVIDIA's own FPS limiter, are capable of allowing the flip queue to fill up, which causes tiny little microstutters not even visible on RTSS's frametime graph. They are only visible on NVIDIA's "Flip Indicator" graph. These would be imperceptible...if it weren't for my monitor happening to be sensitive to them, making it flicker. Most of the time this isn't a problem, but if I have a game that dips in and out of LFC I'd like to be able to cap it inside the LFC range without causing flickering.
     
    BlindBison likes this.
  7. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    To allow flip queue to be full you need to submit frames on CPU side_faster_ than your GPU can process them. You do 180 degrees opposite thing with a limiter, you cannot expect such functionality from it, sorry.
     
  8. Endless

    Endless Member

    Messages:
    11
    Likes Received:
    4
    GPU:
    Gigabyte 4090 OC
    This is truly phenomenal, can't wait to try it. Thanks Unwinder!
     
    BlindBison and Aserback like this.
  9. MADFLOR

    MADFLOR Active Member

    Messages:
    54
    Likes Received:
    138
    GPU:
    GTX 1070Ti / 8GB
    Last edited: Oct 9, 2023
  10. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    It is by design and documented. Quote from the release notes:

    § Added <IF>/<ELSE> and <SWITCH>/<CASE> hypertext extension tags support. Power users may embed these extension tags directly into hypertext instead of “Visibility source” setting to make some parts of layer visible depending on some condition. Please take a note that nested conditional blocks are not supported, so new <IF> tag always closes the previous open conditional block or immediately opens new one. Also, more complex expressions are not allowed into hypertext too, you can only use boolean data sources there. The only exception is ! (NOT) symbol, which is allowing you to invert value reported by boolean data source. Also, please take a note that <IF>/<ELSE>/<SWITCH>/<CASE> tags are extension tags parsed at OverlayEditor plugin level. They are not native hypertext tags, so you cannot use them to format hypertext inside external applications like CapFrameX or AIDA
     

  11. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    Considering that I recently added NVIDIA Reflex framerate limiting mode to provide compatibility with DLSS Frame Generation, I also decided to add support for detailed latencies reported by Reflex itself in Reflex enabled games. This small video demonstrates how Reflex latencies distribution change when you switch between unlimited framerate (the first few seconds) and hybrid scanline sync modes (JIT presentation scenario).

     
    Jcelis, ParKur, SanokKule and 4 others like this.
  12. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    I cleaned the thread again, please avoid using it for random questions. This way news about features in upcoming builds, which I post here, is just getting lost into walls of unnecessary text.
     
    SanokKule and nizzen like this.
  13. MeatSafeMurderer

    MeatSafeMurderer New Member

    Messages:
    3
    Likes Received:
    2
    GPU:
    GTX 1070
    Surely it must be possible. After all, the flip queue is still active and filled when limited by VSync. Isn't it theoretically possible to insert a wait at the same point VSync does on the GPU side, thereby allowing the CPU to run as fast as it possibly can?
     
  14. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    I've already replied, please accept "no" as an answer. You _cannot_ achieve that by limiting presentation at rendering pipeline input (that's what any application-side framerate limiters do), you achieve absolutely opposite effect with that. To saturate a queue you need to limit rendering pipleine _output_ instead. That's not a job for a framerate limiter.
    Also, please read the post right above.
     
    BlindBison likes this.
  15. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    Forza Motorsport 2023 was released yesterday, and I noticed that latency timebands displayed in new NVIDIA Reflex Analyzer can be rather confusing as is in this specific title. GPU Render timeband is most confusing one, because it shows that GPU is busy rendering all the time during each frame (approximately 16.6ms on 60 FPS), which is not the case in reality. GPU render timeband reflects period of time between executing the very first and the very last command buffer by GPU during frame rendering. But there can be multiple gaps in GPU render period of time, when GPU idles. To address that I added new metric to Reflex Analyzer: GPU Active time. It is equal to GPU render time excluding GPU idle time, so it is expected to be lower (up to twice lower in this specific game). NVIDIA Reflex Analyzer's GPU Active metric is rather close to Intel's GPU Busy.

     
    SanokKule, Jcelis, hitzz and 4 others like this.

  16. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    In addition to the previous post, I'm still thinking about proper way to visualize GPU Active time on frame timebands. There are no exact timings for idle gaps inside GPU Render timeband, it is just a cumulative GPU Active time excluding all GPU idle intervals. So it cannot be shown as is, but probably I'll just show it as some virtual interval ending at GPU Render end timeband and starting somewhere in the middle of it, concept is something like that:




    upload_2023-10-11_21-58-49.png
     
    Last edited: Oct 11, 2023
  17. hitzz

    hitzz Member

    Messages:
    12
    Likes Received:
    1
    GPU:
    RTX 3090
    Could you point me to right direction, from what i understand "sim to render" latency is total latency combining "simulation"+"render submit"+"present"+"driver"+"render queue"+"gpu render"? but adding those values or any other does not equal to "sim-to-render" latency. Im probably completely misunderstanding what im seeing here, would like to at least get a grasp about it
     
  18. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    Nope, you cannot add them! Those are independent execution stages existing in parallel, they are displayed on the same time scale as is. For example, on the screenshot above "Driver" timeband starts right after "Render submit" stage and ends before the end of "Present" stage. Sim-To-Render latency is a time difference between front edge of "Simulation" timeband and back edge of "GPU Render" timeband. Interpret is as a time between the moment when application starts 3D world simulation for current frame (front edge of Simulation timeband) and time when GPU finish asynchronous rendering of this frame and it is ready for composition/display (back edge of GPU render timeband). See it as the major part of PC latency. But keep in mind that Reflex doesn't track display and composition timings, so full latency will additionally include it too.
     
    SanokKule, lifexstyle and hitzz like this.
  19. hitzz

    hitzz Member

    Messages:
    12
    Likes Received:
    1
    GPU:
    RTX 3090
    Thank you! Yeah now this whole thing makes much more sense now, great explanation. As for presenting this data on OSD it seems current solution is good but it needs a lot of space, when you add everything else like cpu usage, gpu usge, etc., i think most people would opt out of it due to that reason. I was thinking how to make it more compact. Maybe do it either like pie-chart or in one straight line with either overlapping timebands (with reduced opacity levels on each timeband like ~50%) or compacting on each one to make a single strip instead of 8 lines.
    Just thinking out loud, maybe it will help maybe not, just throwing some ideas. Thanks for explanation again:).
     
  20. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    16,862
    Likes Received:
    5,754
    I don't think there is better representation form for that. Horizontal timebands is a native representation form for such timing data in various graphics debuggers, and NVIDIA prefer something like that themselves. So I'll use the same, I just added color identification for different timebands so you can easily identify the timeband of your interest. Considering that SpecialK provides similar timebands, I used exactly the same color encoding for unification for those who switch between the products.


    [​IMG]
     
    Last edited: Oct 12, 2023
    SunnyStefan, Haldi, Granacks and 3 others like this.

Share This Page