· Added On-Screen Display performance profiler. Power users may enable it to measure and visualize CPU and GPU performance overhead added by On-Screen Display rendering. Two performance profiling modes are available:
o Compact mode provides basic and the most important CPU prepare (On-Screen Display hypertext formatting, parsing and tessellation), CPU rendering and total CPU times, as well as GPU rendering time (currently supported for Direct3D9+ and OpenGL applications only)
o Full mode provides additional and more detailed per-stage CPU times
· Improved built-in framerate limiter:
o Fractional framerate limit adjustment functionality is no longer power user oriented, now you may specify fractional limit directly from GUI
o Now you may click “Framerate limit” caption to switch framerate limiter to alternate “Frametime limit” mode. New mode allows you to specify the limit directly as a target frametime with 1 microsecond precision
o Added alternate framerate limiting mode, based on synchronization with display rasterizer position. Now you may synchronize the framerate to up to two independent scanline indices per refresh interval. Combining with power user configurable scanline wait timeout and graphics pipeline flushing options, those settings provide experienced users vendor agnostic ultra low input lag adaptive VSync, half VSync or double VSync functionality on any hardware
o Added power user oriented idle framerate limiting mode. Unlike traditional framerate limiting mode, idle framerate limiting mode is only affecting inactive 3D applications running in background. Idle framerate limit is specified as a target frametime with 1 microsecond precision. Idle framerate limiting mode helps to reduce power consumption when you minimize some heavy 3D applications and switch to other processes
· Various On-Screen Display optimizations and improvements:
o Added adjustable minimum refresh period for On-Screen Display renderer. The period is set to 10 milliseconds by default, so now the On-Screen Display is not allowed to be refreshed more frequently than 100 times per second. Such implementation allows keeping smooth animation when On-Screen Display contents are being updated on each frame (e.g. when displaying realtime frametime graph) without wasting too much CPU time on it
o Added alternate GPU copy based Vector2D On-Screen Display rendering mode implementation for Direct3D1x applications. New mode provides up to 5x Vector2D performance improvement on NVIDIA graphics cards, however it is disabled on AMD hardware due to slow implementation of CopySubresourceRegion in AMD display drivers
o Vector2D rendering mode is now forcibly disabled in Vulkan applications on AMD graphics cards due to insanely slow implementation of vkCmdClearAttachments in AMD display drivers
o Revamped geometry batching and vertex buffer usage strategy in pure Direct3D12 On-Screen Display renderer (currently used in Halo Wars 2 only)
o Added Vector2D rendering mode support to pure Direct3D12 On-Screen Display renderer
o Optimized On-Screen Display hypertext parsing and tessellation implementation
o Optimized state changes in OpenGL On-Screen Display rendering implementation
o Improved implementation of On-Screen Display rendering from separate OpenGL context (profile compatibility switch used in certain OpenGL applications, e.g. Pyre) on AMD graphics cards
o Optimized state changes in Direct3D1x On-Screen Display rendering implementation
o Solid rectangles and line primitives in Direct3D8 and Direct3D9 On-Screen Display rendering implementations are now rendered from vertex buffer instead of user memory
o Improved OpenGL framebuffer dimensions detection when framebuffer coordinate space is selected
o Increased static vertex buffer size for Vulkan and pure Direct3D12 renders to increase amount of primitives rendered in On-Screen Display in a single pass
· Improved desktop duplication based desktop video capture implementation ( Windows 8 and newer OS versions):
o Now desktop video recording sessions do not stop on display mode switch or on switch to exclusive fullscreen mode. Such approach allows you to start capturing video on desktop then launch some 3D application and create a video file containing both desktop and 3D application’s video streams
o Improved video capture API allows video capture frontend applications (e.g. MSI Afterburner) to force desktop or 3D application video capture modes in addition to default mixed desktop/3D application capture mode
o Now desktop capture is using multhithreaded active busy-wait loop frame capture instead of timer driven frame capture in order to improve frame timing precision and resulting video smoothness. The previous timer driven frame capture can be enabled via configuration file if necessary
o Decreased desktop duplication timeouts in order to improve RivaTuner Statistics Server GUI response time under certain conditions during desktop videocapture sessions in timer driven frame capture mode
· Improved SDK:
o Improved RTSSFrametimePipeSample sample. Now the sample demonstrates frametime pipe connection for applications running with both full administrative and limited user rights
o Improved NVENC plugin. Added NVIDIA 416.xx drivers family support. The plugin was recompiled with newer NVENC encoder API headers, because NVIDIA stopped supporting legacy v4 NVENC API in release 416 and newer series drivers. Due to this change NVENC plugin no longer supports pre-release 358 NVIDIA drivers
· Fixed On-Screen Display rendering in wrong colors when Vector2D mode is selected and Direct3D1x applications use 10-bit framebuffer
· Fixed Vulkan fence synchronization issue, which could cause GPU-limited Vulkan applications to hang due to attempt to reuse busy command buffer
· Active busy-wait loop in the framerate limiter module is now forcibly interrupted during unloading the hooks library to minimize the risk of deadlocking 3D application when dynamically closing RivaTuner Statistics Server during 3D application runtime
· Improved CBT hooks uninstallation routine to minimize the risk of deadlocking 3D application when dynamically closing RivaTuner Statistics Server during 3D application runtime
· Improved validation in OpenGL On-Screen Display rendering routine to minimize the risk of crashing OpenGL applications
· Changed OpenGL cleanup routines to improve compatibility with OpenGL applications using multiple rendering contexts (e.g. GPU Caps Viewer)
· Improved synchronization in 32-bit API hook uninstallation routines
· Added timeout to API hooks injection in CBT hook handler. The timeout is aimed to reduce injection related CPU overhead on some systems, related to high mouse polling rate combined with keyboard/mouse hooks installed by third party applications
· Interoperability D3D10 page flips on some systems are now filtered by framerate calculation module in OpenGL/Vulkan applications
· Hook engine is now using alternate double jump x64 hook trampoline to improve compatibility with third party 64-bit On-Screen Display applications
· Added compatibility profile switch for hooking IDXGISwapChain::ResizeBuffers via VTable instead of hotpatching
· Added hook epilogs support to 32-bit VTable hook handler
· Fixed instance checking implementation in 64-bit RTSSHooksLoader and EncoderServer helper applications
· Added exclusion profile for Forza Horizon 4. Please take a note that On-Screen Display is currently not supported in this game due to its protective system limitations
· Forcible graphics and compute queues synchronization is now disabled by default for Vulkan applications presenting frames from compute queue (AMD Vulkan rendering codepaths in DOOM and Wolfenstein II : The New Colossus). Due to this change, On-Screen Display will be invisible in those games on such platforms by default. Experienced users, understanding and accepting that On-Screen Display rendering will cause performance penalty, may reenable it with PresentFromCompute profile switch
· Added tri-state skinned buttons support in the skin engine
· Updated profiles list