Skip to content

Releases: RochStudio/Roch-GPU

Roch GPU 1.0.5

Choose a tag to compare

@RochStudio RochStudio released this 12 Sep 15:29

Roch GPU 1.0.5 improves the NVIDIA tuning layout and adds hardware-read graphics information.

Highlights:

  • Adds a read-only Graphics window with GPU, board, silicon, memory, PCIe, Resizable BAR, and driver details.
  • Shows driver, vBIOS, VRAM type/vendor, maximum PCIe generation/lane width, and Resizable BAR state in the main header.
  • Places V/F Curve, XOC, and Fan side by side.
  • Moves supported XBAR, SYS, and video clock offsets directly below Core Offset with no separate enable switches.
  • Keeps rail, OCP, and clock-range controls individually protected in XOC.
  • Updates NVIDIA and AMD hardware identity reads and the README.

Download RochGPU.exe and run it with an installed NVIDIA or AMD graphics driver. The Windows x64 executable is self-contained and needs no separate .NET runtime.

Validation: Release build succeeded with 341 core tests and 17 telemetry tests passed.
SHA-256: 63f5e35b38b02d1d55a948150c4940d02465e80b1781a01e5b3db85221adcddf

Roch GPU 1.0.4

Choose a tag to compare

@RochStudio RochStudio released this 11 Sep 12:12

Roch GPU 1.0.4 includes AMD driver detection improvements, the shared YouTube | X | Discord footer, and updated documentation for native telemetry and driver-reported memory-clock limits.

Download RochGPU.exe and run it with the installed NVIDIA or AMD graphics driver. This self-contained Windows x64 executable needs no separate .NET runtime.

Validation: Release build, 330 core tests and 17 telemetry tests passed. Footer visually verified.

Roch GPU 1.0.3

Choose a tag to compare

@RochStudio RochStudio released this 08 Sep 15:00

Over-current limits you can actually set, telemetry that measures current instead of dividing it out,
and longer travel on the sliders that had run out.

Getting it

Download RochGPU.exe below and run it. Nothing to install — no .NET runtime, no DLLs beside it.
It is unsigned, so SmartScreen will warn on first run ("More info" → "Run anyway").

SHA-256  47fc121a79009bbd2afd407ebe03964551f87a2a285bda3c647a756dda365c69

OCP current limits

The NVVDD and MSVDD over-current limits, in amps, are now levers in the XOC window — armed
individually like everything else there, and restored to stock when disarmed rather than left
standing, because an OCP limit survives a reboot and a card quietly running without its protection is
a state nobody chose.

The window each slider offers is read from the card, not derived. A 5070 Ti reports 250–350 A for
the core rail, and that is what the slider gives; where the driver declines to constrain a limit —
which it does for MSVDD, answering 1 A to 5001 A — the slider falls back to half the stock figure to
half again above it. Every card reports its own, which is the point.

--nvvdd-ocp and --msvdd-ocp do the same from the command line.

Raising one of these makes nothing faster. It moves the current at which the card stops itself out
of the way, and the reason that limit exists is the hardware behind it.

Telemetry

The hardware monitor is now the Telemetry window, and it carries measured rail current —
seven 12 V channels straight from the card's own power monitor: board total, PCIe slot, NVVDD input,
Misc0 input, and three the driver names only by number. Measured, not divided out of the board watts,
with min/max/average like every other row.

More travel where it ran out

  • Core and crossbar offsets to +750 MHz (from +495). These are the offsets a card reaches once
    the rails are raised and the boost is wound open, and the sliders were stopping before the card
    did.
  • Rail ceilings to 1200 mV (from 1170). Deliberately more than air cooling can use; the reason to
    offer it is water and LN2.
  • Clock range floor from the driver — 180 MHz on a 5070 Ti, where 210 used to be compiled in as a
    guess. Tested: the driver accepts 180 as a floor.

Every one of these is a slider end, not a measurement. Nothing up there is known to be stable.

Smaller things

  • Reset to Defaults replaces Reset and Revert. It writes the driver's defaults to the card and
    loads them into the sliders — which it always did, but the one-word label undersold it.
  • XOC is what the window is called now, matching the button that opens it, with one warning for
    the whole window instead of a note that predated half its levers.
  • The clock range forgets a lock the driver has cleared. NVML will not report a lock — GetClock
    answers NOT_SUPPORTED and the event reasons read zero whether one is set or not, both measured — so
    that row shows what was asked for. A display driver reset clears the lock, and is the only thing
    that makes NVML reopen its session, so the window now notices and stops claiming a range nothing
    holds.
  • A driver reset no longer strands the app. An NVML session does not survive one; a failure whose
    code says so now reopens it and retries.
  • Private call buffers carry 8 KB of slack. These structures are described by sizes worked out
    rather than published, and a size too small lets the driver write past the end — which corrupts the
    heap and kills the process later, somewhere unrelated.

Warning

Writing clocks and voltages to a GPU can crash the machine, corrupt work in progress, and in the
extreme damage hardware. The XOC levers can brown a card out rather than merely fail. Nothing here is
endorsed by NVIDIA or AMD. Read the warning in the README before using it.

Licence

GPL-3.0-or-later, the same licence as Roch Viewer.
The complete corresponding source for this binary is this repository at tag v1.0.3; build.ps1
rebuilds it with one command. Bundled third-party components keep their own licences — see
THIRD-PARTY-NOTICES.md.

Roch GPU 1.0.2

Choose a tag to compare

@RochStudio RochStudio released this 07 Sep 22:58

Three fixes found while testing 1.0.1, all of them things that failed quietly rather than loudly.

Getting it

Download RochGPU.exe below and run it. Nothing to install — no .NET runtime, no DLLs beside it.
It is unsigned, so SmartScreen will warn on first run ("More info" → "Run anyway").

SHA-256  ee30b7c89df4e36b19f0b6b7918699c35322a64c85e6153321f7a2f191b37877

A driver reset no longer strands the app

A game crashed hard enough for Windows to reset the display driver, and from that moment the clock
range could not be released again: nvmlDeviceResetGpuLockedClocks: Unknown Error (999), eleven
times over three quarters of a minute and for as long as the app stayed open.

Every NVAPI write in the same process went on succeeding throughout. A card that answers one library
and not the other is not a broken card — NVML opens a session per process, and that one did not
survive the reset. A failure whose code says so now closes NVML, reopens it and tries once more.
The reads recover the same way, where the same fault would have been quieter still: board watts
would simply have read blank until the app was restarted.

A voltage cap can sit above the stock ceiling

Applying a profile put every field on the card except the one it was built around — the cap was
written only when it sat below the stock ceiling, so on a card at 1035 mV stock a 1050 mV cap read
as "capping nothing" and wrote 0, even with the boost wound fully open and the rail raised to 1050.
With the boost applied that card reaches 1100, and the 65 mV in between is exactly what a cap is
for. The ceiling now moves with the boost, and one definition is shared by the window and the engine
so the two cannot disagree about what "no cap" means.

Separately, the main window's Apply never used the profile's cap at all: it read the lock off the
card, which meant a profile could only preserve a cap the card already held and never restore one.
That went unnoticed while the card happened to be holding the right lock, and a driver reset clears
it. It now uses the value a profile loaded, and the curve editor's flatten writes into the same
place.

A tidier XOC window

Every lever's caption line is gone — +420 MHz on the interconnect clock under a box already
reading +420 and a slider already at +420 was three ways of saying one number. Each row is now
label, value, slider, Enable. The tooltips that hung off those captions were already on the value
boxes. The window is 642px tall, from just over 700.

Warning

Writing clocks and voltages to a GPU can crash the machine, corrupt work in progress, and in the
extreme damage hardware. The Extreme OC levers can brown a card out rather than merely fail. Nothing
here is endorsed by NVIDIA or AMD. Read the warning in the README before using it.

Licence

GPL-3.0-or-later, the same licence as Roch Viewer.
The complete corresponding source for this binary is this repository at tag v1.0.2; build.ps1
rebuilds it with one command. Bundled third-party components keep their own licences — see
THIRD-PARTY-NOTICES.md.

Roch GPU 1.0.1

Choose a tag to compare

@RochStudio RochStudio released this 07 Sep 00:25

Fan control gets its own window, the whole app takes on Roch Viewer's look, and the four clock
domains that were only numbers now have names.

Getting it

Download RochGPU.exe below and run it. Nothing to install — no .NET runtime, no DLLs beside it.
It is unsigned, so SmartScreen will warn on first run ("More info" → "Run anyway").

SHA-256  03a161f45b52904005f4ff933f3f0bb84955bf3b2501c67cdd9065a8247d03cc

Fan control

Its own window, from the Fan button, replacing the single fan slider that used to sit in the
main window.

  • A duty per fan. A 5070 Ti reports three coolers and the driver addresses them separately — ids
    1, 2 and 3, each with its own policy, level and tachometer — so each gets a slider. Move
    together
    is on by default.
  • A curve, dragged on the plot or typed underneath, with every point listed as an editable row
    rather than only the selected one. Double-click the plot to add a point, right-click one to
    remove it.
  • Nudge arrows stepping 5%, matching the sliders in the main window.
  • Apply writes the card and saves the fan settings into the active profile slot. Applying and
    saving are separate elsewhere, and for clocks that is right — you try a value before you keep it.
    The reason to set a curve is for the machine to run it, including after a reboot, so a curve that
    was applied and never saved is a trap rather than a choice.

Roch Viewer's look

The palette, the Consolas font and the title bar are Roch
Viewer
's, value for value, and the hardware monitor is
laid out like its telemetry tab. Light and dark is one button, top right, showing the mode you
are in; it repaints everything already on screen, including the title bars Windows draws rather
than WPF, and the choice is remembered. The monitor's line graphs are gone — the table carries
min, max and average, which is what they were read for.

Clock domains

HUBCLK, DISPCLK, L2CLK and the reference clock are named and read in the monitor. The names come
from mVolt's telemetry tab and were checked rather than trusted: reading both tools at once, the
figures agree to within about 2 MHz on every domain.

The reference clock is why the list is now built by asking the frequency counter for every type id
instead of walking the driver's info struct — the walk misses it entirely, though the counter
answers for it perfectly well. One domain stays unnamed, because a number with no name is more
honest than a name with no evidence.

Also

  • XOC arming is one button per lever showing the action, rather than an Enable/Disable pair.
  • The logon task leaves the app in the tray instead of applying and quitting, because a software
    fan curve needs something alive to step it. Opening the app from the desktop afterwards brings
    that copy back rather than starting a second elevated process writing the same card.
  • Fan settings come back from the saved profile at launch. They did not, in a way that hid
    itself well: the curve was applying correctly at boot while the fan window opened on Auto. An
    apply with no slot selected builds a throwaway profile named Session that is never written to
    disk, and that name was being recorded as the card's last-used profile — not null, so the fallback
    to the startup profile never ran.
  • Recorded, after checking all three places it could live, that there is no per-voltage-point
    crossbar table
    on this driver. HYDRA 2.3B carries a 127-entry xbar_curve_points array beside
    its core curve, which suggests one; the 127-point V/F space is entirely the core curve, the
    control block holds a single flat offset, and HYDRA's own saved profile has that array all-zero.
    The README says where it was looked for, so the finding can be checked rather than taken.

Warning

Writing clocks and voltages to a GPU can crash the machine, corrupt work in progress, and in the
extreme damage hardware. The Extreme OC levers can brown a card out rather than merely fail. Nothing
here is endorsed by NVIDIA or AMD. Read the warning in the README before using it.

Licence

GPL-3.0-or-later, the same licence as Roch Viewer.
The complete corresponding source for this binary is this repository at tag v1.0.1; build.ps1
rebuilds it with one command. Bundled third-party components keep their own licences — see
THIRD-PARTY-NOTICES.md.

Roch GPU 1.0.0

Choose a tag to compare

@RochStudio RochStudio released this 21 Aug 02:16

The first public release. One executable for NVIDIA and AMD: run it with nothing for the window, with
a command for the CLI.

Getting it

Download RochGPU.exe below and run it. Nothing to install — no .NET runtime, no DLLs beside it.
It is unsigned, so SmartScreen will warn on first run ("More info" → "Run anyway").

SHA-256  e2fdedd00819a21b794e9c0cb8ce613d92dd35f8fcce6e5b0a33309828bef151

What is in it

  • Clocks, power, temperature, voltage and fan, with every range read from the driver rather than hard-coded, and sliders narrowed to the part worth dragging.
  • V/F curve editor (NVIDIA) — drag points, flatten to a cap, undo.
  • Extreme OC — NVVDD and MSVDD rail ranges, the crossbar, SYS and video clock offsets, and a clock range. Each has its own Enable/Disable and is off by default, because they fail in unrelated ways.
  • Hardware monitor — temperatures, measured rail voltages, per-domain clocks, load, board watts and fans, with min/max/average.
  • Five profile slots, and an optional apply-at-logon.
  • A CLI in the same executable for scripting: info, monitor, apply, apply-profile, reset, diag, startup.

Tested on an RTX 5070 Ti (Blackwell) and RTX 4070 Ti (Ada), with an RX 9070 XT for the AMD path.
The README records what each card does and does not expose, including the calls that come back empty,
and docs/diag-rtx5070ti.txt is the raw dump behind those findings.

Warning

Writing clocks and voltages to a GPU can crash the machine, corrupt work in progress, and in the
extreme damage hardware. The Extreme OC levers can brown a card out rather than merely fail. Nothing
here is endorsed by NVIDIA or AMD. Read the warning in the README before using it.

Licence

GPL-3.0-or-later, the same licence as Roch Viewer.
The complete corresponding source for this binary is this repository at tag v1.0.0; build.ps1
rebuilds it with one command. Bundled third-party components keep their own licences — see
THIRD-PARTY-NOTICES.md.