Initially designed as a small helper application for RivaTuner graphics card utility, RivaTuner Statistics Server became de-facto framerate monitoring, On-Screen Display and high-performance videocapture service provider for other graphics card utilities.

Features

  • The server provides framerate and frametime monitoring support to the client applications. Framerate and frametime statistics is being collected for DirectX, OpenGL and VULKAN applications. The statistics can be rendered in On-Screen Display or provided to client applications connected to the server.
  • The server provides 3D acceleration usage statistics to the client applications. The clients can use the statistics to determine if any 3D applications are currently running and apply different hardware profiles depending on it.
  • The server provides On-Screen Display support to the client applications. The clients can display any text info in the On-Screen
  • Display in DirectX and OpenGL applications. The server can be also used as a standalone framerate monitoring solution and display own framerate statistics in the On-Screen Display.
  • The server provides desktop and in-game screen capture support to the client applications. BMP, PNG and JPG screen capture formats are supported.
  • The server provides high-performance real-time desktop and in-game video capture support to the client applications.
  • Uncompressed, high-performance custom RTV1 and native MJPG video encoding, encoding with third-party external VFW compatible codecs (e.g. Lagarith or x264vfw) and hardware accelerated H.264 encoding via Intel QuickSync, NVIDIA NVENC and AMD VCE are supported in conjunction with wide range of additional video capture related options, multisource stereo and multichannel (for Window Vista and newer) audio capture with Push-To-Talk support. The functionality of expensive commercial video capture products is now available to everyone absolutely for free! There is no need to buy dedicated video capture software anymore!
  • Framerate limiting support. Limiting the framerate during gaming can help to reduce the power consumption as well as it can improve gaming experience due to removing unwanted micro stuttering effect caused by framerate fluctuations.
  • User extendable architecture. You may express your creativity and design your own skins for RivaTuner Statistics Server, create localization for your native language, use the server to display any custom text in On-Screen Display directly from your own application and many, many more!

Know Limitations:

  • RivaTuner Statistics Server can be incompatible with some third-party On-Screen Display software (e.g. XFire or Steam In-Game Chat). The limitation is not specific to our product, many third-party products are designed to be the only On-Screen Display products in the system and to block their own functionality when any other On-Screen Display software is running
  • Anticheat systems of some online games may restrict On-Screen Display usage and block connection to the server when the RivaTuner Statistics Server is running
  • RTV1 encoder performance in 64-bit applications is currently lower than in 32-bit applications
  • Stealth hooking mode is currently not supported in 64-bit applications, so it is strongly not recommended to run other 64-bit OnScreen Display software in conjunction with RivaTuner Statistics Server

System Requirements:

  • Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 or Windows 11 (both x86 and x64 versions) with full administrative rights
  • Any DirectX, Vulkan or OpenGL compatible graphics card

What's New

  • Improved hook engine:
    • Added WinUI3 runtime libraries to injection ignore triggers list
    • Added 64-bit VK Play overlay library to the list of trigger modules for delayed injection engine
    • Now injection ignore triggers list can specify modules, dynamically loaded by hooked application during runtime. This feature can be used to the exclude applications using delayed load of WPF/WinUI3 runtimes (e.g. Microsoft Power Toys)
    • Altered environment variable based compatibility manifesting mechanism. Initially the mechanism was intended to allow game developers to disable RTSS overlay support at game level in case of detecting some fundamental incompatibilities, however due to some weird reason it was globally used inside recent versions of VK Play game launcher to lock overlay support in any games launched by it. Such usage pattern is now detected and no longer allowed, now compatibility manifesting mechanism is ignoring VK Play game launcher's attempts to use it to disable hooking
    • Various compatibility improvements:
    • Various Direct3D12 overlay renderer cleanups for both D3D11on12 and native Direct3D12 rendering implementations aimed to improve compatibility with Direct3D12 debug layer. Please take a note that default D3D11on12 based Direct3D12 overlay renderer is now compatible with debug layer as is, but optional native Direct3D12 overlay renderer hooks retail command queue only by default due to performance reasons, and debug layer expects wrapped debug command queue to be used by Direct3D12 application during debugging. So debug layer will throw OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR exception if you try to use overlay configured to use native Direct3D12 renderer. If you absolutely need to debug your Direct3D12 application with RivaTuner Statistics Server overlay enabled in such environment, you may get rid of this debug layer exception with HookDirect3D12DebugLayer profile switch, which will enable wrapped debug command queue hooking
    • Improved compatibility with applications using multiple in-game overlays (e.g. both Steam and Epic Games Overlay) and using late injection for one of them (e.g. Rogue Company, which is injecting Steam overlay hooks at startup but using late Epic Games Overlay hooks injection during matchmaking)
      • Slightly reworked Epic Games Overlay compatibility strategy. Now RivaTuner Statistics Server disables IDXGISwapChain1::Present1 hooking when Epic Games Overlay hook module is detected instead of ignoring nested IDXGISwapChain1::Present1 -> IDXGISwapChain::Present hook calls. Compatibility strategy is disabled by default now, considering that it was recently patched from Epic Games Overlay side
      • Improved compatibility with Direct3D12 applications using multiple Direct3D12 swapchains (e.g. Prepar3D v5, which is using separate swapchains for main game window and vehicle select window)
      • Improved compatibility with Direct3D9 applications, which never use Direct3D9 device's implicit swapchain and present frames from additional swapchain only (e.g. Brawlhalla or Don't Starve Together)
      • Improved compatibility with OpenGL3+ applications, using overly restrictive debug checks in retail products and stopping rendering on any OpenGL errors (e.g. Defold Editor). Now RivaTuner Statistics Server uses different strategy instead of internal error interception for overlay renderer fallback from in-context rendering to separate context rendering
      • OpenGL pixel unpack alignment state is now restored properly by OpenGL overlay renderer to improve compatibility with old builds of Ryujinx
      • Improved compatibility with Vulkan applications, using multiple coexisting swapchains (e.g. Godot v4 editor)
      • Bumped version inside Vulkan layer manifest to improve compatibility with some Vulkan 1.2+ applicaitons (e.g. Ryujinx)
      • D3D1x device selection priority has been changed from ascending to discending to improve compatibility with ReShade 5.6, which creates dummy D3D10 device for D3D11 applications. Power users may select the previous ascending selection priority via profile if necessary
      • Improved compatibility with Vulkan applications, creating multiple dummy Vulkan devices on different GPUs during startup (e.g. Far Cry 3 with DXVK mod)
      • Frametime counter in shared memory is now buffered and it no longer updates dynamically during presenting the frame. Buffering is implemented to protect the counter from being asynchronously accessed by third party monitoring clients and prevent such client applications from reading incomplete frame timings
      • High application detection level is now restricted for Forza Horizon 5 via built-in application profile
      • Added power user oriented config file switch, allowing displaying 3D API (either abbreviated or full) in framerate counter displayed by "Show own statistics" option
      • Added new ScaleToFit application profile property. The property is intended to enable alternate offscreen overlay rendering mode and scale it to fit entire 3D application window while keeping original overlay proportions. New property is aimed to simplify the process of resizing overlay displayed via DesktopOverlayHost on small portable USB displays. Please take a note that the only supported form of scaling is stretching. Overlay shrinking is not supported
      • Added new environment variable based profile override mechanism, which is allowing the processes to override some application specific RTSS profile properties on the fly. New mechanism is aimed to allow DesktopOverlayHost to toggle new ScaleToFit profile property on the fly directly from executable and without physically altering the profile file
      • Slightly altered Direct3D9 and Direct3D1x blending setups for offscreen rendering mode to make final blending result look identical for offscreen rendering mode in Direct3D9 and Direct3D1x
      • Added optional power user oriented offscreen overlay rendering mode support for OpenGL applicaitons
      • Improved hypertext format:
        • Added new hypertext tag, allowing displaying total frame counter during benchmarking session
        • Added new hypertext tag, allowing specifying independent margins for left, top, right and bottom edges of the layer. The tag supports both positive (inner) and negative (outer) margins adjustable in zoomed pixel units. Margins affect layer background fill area and layer content placement, you can use the margins to achieve layer border or shadow effects
        • Improved image embedding hypertext tag syntax. Added optional tag parameter defining embedded image rotation angle
        • Improved bar embedding hypertext tag syntax. Added optional tag parameter allowing drawing variable width bar border instead of filling the bar with the solid color
        • Added new hypertext tag support for defining general purpose variables. Up to 256 general purpose integer variables can be defined in hypertext then referenced later as subsequent tag parameters. Additional "L" or "H" postfixes can be added to variables to extract low or high 16-bit integers from 32-bit integer variables
        • Improved hypertext parser:
        • Optimized dynamic colors attributes recalculation in hypertext parser for overlay layouts containing multiple graphs
        • Added shared memory access timeout to hypertext parser. Timeout is necessary to ensure that multiple simultaneously running 3D applications do not skip overlay updates when they try to access shared memory simultaneously (e.g. when scanline sync is enabled so multiple running 3D applications start rendering overlays synchronously)
        • Increased size of internal shared text buffer used to render performance profiler's and scanline sync debug info panels. Previously enabling both performance profiler's and scanline sync debug info panels simultaneously could cause buffer overflow on the systems with too long monitor name
        • Added integrated functions support to hypertext syntax. The following integrated functions are currently supported by hypertext parser:
          • $MAP function is intended for mapping the value ranges, e.g. for mapping [0;60] FPS range to [-90;90] degree rotation angle range in animated gauge indicator
          • $SPR function is intended for calculating animated sprite coordinates from specified sprite matrix and value range. Function result is packed in single 32-bit integer value, it can be stored to variable and independent coordinate components can be unpacked with previously mentioned "L" and "H" postfixes
  • Improved covering extent calculation for overlays containing some specific sequences of embedded bars and backspace symbols
  • Improved scanline sync implementation:
    • Added scanline sync support for non-native resolutions (e.g. DSR). This feature requires altering negative scanline index interpretation rule, now negative index is treated as offset from maximum visible scanline index instead of treating it as offset from VTotal before. Please keep it in mind and subtract vertical blanking interval from your target scanline index to get it positioned identically to the previous version
    • Altered + framerate limit field clicking functionality. Previously it allowed setting framerate limit to the primary display refresh rate, now it is setting framerate limit to refresh rate of display containing RivaTuner Statistics Server window
    • Framerate limit is no longer displayed as blank field when using + framerate limit field clicking functionality for some periodic refresh rate values, defined with arbitrary non-power-of-10 refresh rate denominator. Such periodic refresh rates are rounded to 3 decimal places
    • Added synchronous command queue flushing support (enabled by setting SyncFlush to 2) for Direct3D12 applications
    • Synchronous Vulkan command queue flushing is no longer enabled by default, now it is also engaged only when you explicitly request it by setting SyncFlush to 2
    • Name of target display device selected by SyncDisplay profile switch is also displayed in scanline sync debug info panel in addition to display device index
    • Improved OverlayEditor plugin:
      • Added Intel Arc GPUs support to internal HAL
      • Added extended temperature monitoring support for NVIDIA GPUs to internal HAL
      • Added core temperature sensor to internal HAL for legacy Overdrive 7 capable AMD GPUs (Fiji and older)
      • Added extended CPU temperature, power and clock monitoring support to internal HAL. Those data sources duplicate data provided by MSI Afterburner HAL and additionally provide bus clock, per-CCD temperature monitoring (Zen 2 or newer CPUs) and effective CPU clock monitoring. CPU monitoring functionality is provided by low-level RTCoreMini driver, bundled with the plugin. RTCoreMini is IOCTL compatible stripped down version of MSI Afterburner's RTCore driver, which lacks MMIO access functionality used for low-level GPU access on legacy graphics cards
      • Added effective core/memory clock sensors for NVIDIA GPUs to internal HAL. Unlike target clock, effective clock takes PLL resolution (e.g. physical clock generation step) and any forms of hardware clock slowdown/throttling (e.g. thermal) into account. Please take a note that in order to reflect throttling, effective clock sensors use averaged PLL clock counters during some period of time, so realtime effective clock changes are expected to be slightly lagged/delayed comparing to instantaneous target clock changes
      • Added PerfCap mask data source for NVIDIA GPUs. This data source duplicates combination of MSI Afterburner's original binary "Power limit", "Temperature limit", "Voltage limit" and "No load limit" monitoring graphs and allows displaying them natively in OverlayEditor
      • Added total board power monitoring support for AMD RADEON RX 7900 series graphics cards to internal HAL
      • Added special stub data source to internal HAL. This data source is not bound to any physical sensor so it doesn't consume any CPU time by polling hardware. You may use stub sources to implement some virtual sensors implemented purely via correction formulas and referencing other data sources only (e.g. total power consumption represented as "CPU power" + "GPU1 power" + fixed_delta)
      • Updated classic overlay layout, now it also displays VRAM temperature on supported systems
      • Updated classic and sample layouts to support CPU temperature and power readback from internal HAL
      • Now sample overlay layout displays thread usage bars for the first 16 threads instead of the first 8 threads before
      • Added new mini overlay layout. Please take a note that the second usage displayed in CPU column in this layout is max CPU thread usage, it is handy to detect games bottlenecked by signlethreaded performance
      • Rendering in overlay editor's window is now paused when you open "Overlay data sources" window to let you to see real idle CPU and GPU sensor readings unaffected by editor's window background rendering
      • Added alternate "Framerate history" and "Frametime history" data sources. Those data sources duplicate data provided by MSI Afterburner HAL. Unlike existing realtime "Framerate" and "Frametime" data sources, which are providing per-frame instantaneous framerate/frametime statistics independently for each 3D application, alternate data sources are sampled with overlay layout's refresh period and reflect averaged framerate and maximum frametime per sampling period similar to MSI Afterburner. Similar to Afterburner, those data sources also cannot reflect independent statistics for multiple simultaneously running 3D applications and apply to foreground 3D application only
      • Added layer margins adjustment to layer setting dialog. Now you can specify independent margins for left, top, right and bottom edges of the layer and supports both positive (inner) and negative (outer) margins adjustable in zoomed pixel units. Margins affect layer background fill area and layer content placement, you can use the margins to achieve layer border or shadow effects
      • Added new xmin, xavg, xmax and swa variables support to data source's correction formulas. Now you may specify these variables to display minimum, average, maximum or sliding window average smoothed value for a data source if necessary. Please take a note that now you may also associate a hotkey in HotkeyHandler plugin for resetting collected minimum/average/maximum statistics
      • Now you may hold while clicking button in data sources setup window to create a copy of selected data sources or additionally hold to increment instance indices of copied sources if it is available. This feature can be used to simplify the process of cloning of multiple instances of similar data sources, e.g. Windows performance counters based usages for logical processors
      • CPU usage data sources in internal HAL have been switched to alternate implementation based on NtQuerySystemInformation(SystemProcessorIdleInformation), because traditional legacy idle time reporting in NtQuerySystemInformation(SystemProcessorPerformanceInformation) is broken in current Windows 11 22H2 builds
      • Added new Import and Export commands to Layouts menu and *.OVX overlay layout exchange file format support. Previously to share your overlay layouts with others you needed to pack and distribute all dependent files (e.g. embedded image and external test files for dynamic layers) with your *.OVL file, then user needed to extract those files to local .\Plugins\Client\Overlay folder on his PC. New Import and Export commands are aimed to simplify this process. Export command will create special overlay layout exchange file (OVX), containing OVL and all dependent files (such as embedded image) used in your layout. OVX is the only file you need to share now. Import command will open OVX, extract all required dependent files from it and install them into .\Plugins\Client\Overlay folder
      • Added settings for specifying fixed rotation angle in static image properties window
      • Added settings for specifying dynamic rotation angle in animated image properties window. This way you may easily implement animated gauge-styled indicators, e.g. define gauge arrow sprite and make it rotate in desired range depending on input range. Sample overlay layout included in distributive demonstrates this technique with animated framerate gauge indicator
      • Added settings for displaying layer border in layer properties window
      • Added SMART attributes monitoring and hard drive temperature monitoring support to internal HAL. The implementation is based on original MSI Afterburner's SMART plugin, but unlike original implementation which supports SMART attributes readback on IDE/SATA drives only, internal HAL's implementation also provides support for SMART attributes reading on NVMe devices (including dual-channel memory/controller temperature monitoring on new Samsung NVMe drives). Please take a note that SMART monitoring is disabled by default due to performance reasons, you may enable it in new internal HAL properties window
      • Added data provider properties accessible via "..." button next to selected provider in "Add data sources" window. Currently configurable properties are available for internal HAL only, you can enable SMART monitoring or disable low-level IO driver there if necessary
      • %VRAM% macro is now aligned to closest 0.5GB boundary
      • Added functions support to correction formula parser. The following functions are currently supported:
        • Unary format conversion functions int(x) and flt(x)
        • Unary rounding functions ceil(x), floor(x) and round(x)
        • Binary comparison functions min(x,y) and max(x,y)
        • Bit-testing function test(x,mask). You may use such bit-testing function to extract desired bits from bitmask, it is intended to be used in conjunction with new PerfCap mask data source to extract independent performance capping limits from it and display them as independent graphs
  • Now you may use integer output format specifier "%d" inside data source's format field
  • Now hypertext editor field inside layer properties window supports context highlighting for native hypertext tags displaying some text info (e.g. , , etc). Now you may double click such highlighted tag or press "..." button to replace it with other tag or macro via popup macro/tag browser menu
  • Now hypertext editor field inside layer properties window displays helper popup tag or macro browser menu when you type in <> or %% sequence. This allows you to select desired tag or macro visually from it instead of typing it in manually
  • Added new "Snap to grid" option to "View" menu. Previously snap to grid mode was used by default, but you could individually position/resize layers in absolute pixels by holding during layer movement/resizing. New option is allowing you to disable snap to grid globally. key can still be used, but now it inverts global snap to grid mode for individual layers (i.e. it works as before for enabled "Snap to grid" mode and allows enabling snap to grid just for individual layers if global "Snap to grid" option is disabled)
  • Now you may hold button pressed in "Overlay data sources" window to show correction formulas used by each data source inside "Values" column
  • Improved HotkeyHandler plugin:
    • Added new XOR modifier type to profile modifier hotkeys. You can use XOR modifier to toggle boolean profile properties
    • Altered common pictures / videos folders location detection way to minimize warnings triggered by enabled controlled folder access
    • Added new "Reset statistics" preset to overlay editor's hotkey. You may define such hotkey if you use new xmin, xavg, xmax or xswa variables in correction formulas to display statistics for any data sources and want to reset it
    • Bundled DesktopOverlayHost tool has been upgraded to v1.3.1. New version provides multiple changes and new features aimed to improve DesktopOverlayHost usability in multimonitor environment in general and in specific case of multimonitor environment when secondary mini-display is mounted inside the PC case and used to display RTSS overlay with DesktopOverlayHost:
      • Slightly reorganized DesktopOverlayHost properties window, "Start with windows" option was moved to properties from tray icon context menu
      • Now all changes you do inside the application's properties are being applied to main window in real time, so you no longer need to close the properties when adjusting transparency or chroma key to see the result
      • Added optional Direct3D11 and OpenGL renderers, which can be used to bypass known architectural limitations of Direct3D9 desktop overlay renderer. Direct3D11 renderer is selected by default now, but you may select desired renderer in application properties
      • Added new "Scale overlay to fit entire window" option to application properties. New option is using RTSS profile control API and toggles new ScaleToFit property directly inside DesktopOverlayHost.exe profile. So now you may either render overlay inside DesktopOverlayHost as is, in its' natural size, or enable this new option to scale overlay to fit entire DesktopOverlayHost window area (which can be useful for manual overlay size finetuning if you plan to display DesktopOverlayHost window on small external display). When enable, it scales the overlay to keep original overlay proportions instead of just resizing it to whole window and possibly distorting it. Please keep in mind that only stretching is supported, overlay will be rendered in original size if you try to shrink it
      • Now you may click top left corner of DesktopOverlayHost borderless window to maximize it. Changing mouse cursor indicates target click area
      • Now you may use tray icon menu to move the window to any display and maximize it there. So all window location adjustments are done on the primary display, which is especially convenient when using DesktopOverlayHost with mini-display mounted inside the PC case
      • Now you may use '1'...'0' keys when DesktopOverlayHost window is focused to move it to displays 1..10 or 'W' to maximize it
      • Now you may use + '1'...'0' keys when DesktopOverlayHost window is focused to resize window to display 1..10 resolution
      • Properties of DesktopOverlayHost window are also displayed on the primary display now, if you invoke the properties from application tray icon
      • Added new "Lock multimonitor window position" option to advanced properties. When this option is enabled DesktopOverlayHost locks the window position, tracks display mode change events and patches monitor relative position on monitor coordinate space changes. This allows keeping overlay displayed in expected position on the secondary monitor even when fullscreen game changes the primary monitor resolution (which may cause changes in secondary monitor coordinate spaces and may cause the windows displayed there to be moved without such special locking feature)
      • Added new "Show window always on top" option to properties window
      • Added new "Suspend rendering in idle" option to properties window. You may enable it to save some power when DesktopOverlayHost is displaying overlay on desktop and no other 3D applications are running. When new option is enabled, DesktopOverlayHost will reduce its' own framerate to 1 FPS in idle (i.e. when no other 3D applications are running or when DesktopOverlayHost is a foreground application) but restore the full 30 FPS framerate when you launch some 3D application and switch to it
      • It is no longer possible to launch multiple instances of DesktopOverlayHost. Now it will display properties of running application instance on attempt to launch the secondary instance of DesktopOverlayHost
      • Now DesktopOverlayHost's executable file is located in the root of RivaTuner Statistics Server's installation folder, it is digitally signed and intaller adds shortcut to it to start menu. Please keep it and mind and ensure that you launch correct version of DesktopOverlayHost if you update RivaTuner Statistics Server without uninstalling the previous version, because in this case two copies of DesktopOverlayHost will be located inside your RivaTuner Statistics Server subfolders
      • Added profile caching system aimed to improve RivaTuner Statistics Server start time
      • Added process modules list dumping to debug system
      • Now you may press in RivaTuner Statistics Server's window to reread currently selected profile, if you modify it manually with some external text editor
      • Fixed issue causing "Start with Windows" option state to be reset after opening application properties then closing the application
      • Fixed issue causing overlay font to be invisible in some legacy 16-bit color exclusive fullscreen applications (e.g. Quake 3 : Arena in 16-bit display mode under Windows 10)
      • Fixed issue causing language icons to be displayed in wrong palette for some languages (German, Portuguese and Ukrainian) in "User Interface" tab
      • Improved compatibility with third party skins in "Layered with alpha" skin composition mode
      • Switched to alternate digital signature for hooks DLLs
      • Added On-Screen Display profile for Prepar3D v5
      • Added On-Screen Display profile for Brawlhalla
      • Added On-Screen Display profile for Don't Starve Together
      • Added On-Screen Display profile for VK Play version of Atomic Heart
      • Added On-Screen Display profile for Ryujinx
      • Added On-Screen Display profile for Overwatch 2
      • Updated profiles list