Skip to content

Commit d51fd24

Browse files
author
ScreenSensitive
committed
First public release: version 1.0 (removed prior-version references/changelogs)
1 parent 3f61de5 commit d51fd24

3 files changed

Lines changed: 10 additions & 31 deletions

File tree

GITHUB_ABOUT.txt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ Topics/tags:
1515
display color-depth tkinter dcn
1616

1717
Release title:
18-
RedControl v2.2 — Display Signal Control
18+
RedControl v1.0 — Display Signal Control
1919

2020
Release notes summary:
21-
v2.1 adds a DisplayPort Signal panel (live DP stream-encoder readout and
22-
DP_COMPONENT_DEPTH forcing via UMR), a safe auto-revert dialog for
23-
resolution/refresh changes, and fixes for outputs at power-on default FMT
24-
state not appearing. The EDID editor has been removed to keep the tool
25-
focused on live signal control.
21+
First public release. Per-output spatial/temporal dithering control, color
22+
truncation, a live DP/HDMI signal panel with on-wire depth forcing via UMR,
23+
GPU/monitor scaling, a CRC static-frame test, and safe auto-revert for risky
24+
display changes. For flicker-sensitive users and display tinkerers.

README.md

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
![Python 3](https://img.shields.io/badge/python-3-3776AB)
1212
![License: MIT](https://img.shields.io/badge/license-MIT-lightgrey)
1313

14-
RedControl talks directly to the AMD display engine (DCN) through UMR — the User Mode Register debugger — to control things no desktop settings panel exposes: per-pipe spatial/temporal dithering, color truncation, and as of v2.1 the display stream encoder itself (DisplayPort and HDMI). Built for flicker-sensitive users, display tinkerers, and anyone who needs to know (and change) exactly what signal their AMD GPU is putting on the wire.
14+
RedControl talks directly to the AMD display engine (DCN) through UMR — the User Mode Register debugger — to control things no desktop settings panel exposes: per-pipe spatial/temporal dithering, color truncation, and the display stream encoder itself (DisplayPort and HDMI). Built for flicker-sensitive users, display tinkerers, and anyone who needs to know (and change) exactly what signal their AMD GPU is putting on the wire.
1515

1616
## Screenshots
1717

@@ -30,7 +30,7 @@ git clone <this-repo-url> RedControl && cd RedControl
3030

3131
- 🎛️ **Dithering Control** — enable/disable spatial and temporal dithering, RGB noise, highpass/frame random, with per-depth and per-mode settings on every output (HDMI, DisplayPort, eDP, DVI)
3232
- ✂️ **Color Truncation** — force a static signal by truncating/rounding to 6/8/10/12 bpc instead of dithering
33-
-**Signal panel (new in 2.1)** — live view of the DIG encoder driving each output: link type (DisplayPort, HDMI, or HDMI-over-DP++), pixel encoding (RGB/YCbCr) and the color depth actually on the wire. Force `DP_COMPONENT_DEPTH` (DP, 6–16 bpc) or `HDMI_DEEP_COLOR_DEPTH` (HDMI, 8–16 bpc) instantly — no modeset required; HDMI changes auto-revert in 15 s unless confirmed
33+
-**Signal panel** — live view of the DIG encoder driving each output: link type (DisplayPort, HDMI, or HDMI-over-DP++), pixel encoding (RGB/YCbCr) and the color depth actually on the wire. Force `DP_COMPONENT_DEPTH` (DP, 6–16 bpc) or `HDMI_DEEP_COLOR_DEPTH` (HDMI, 8–16 bpc) instantly — no modeset required; HDMI changes auto-revert in 15 s unless confirmed
3434
- 🎨 **Color / Depth** — max bpc, colorspace (BT.709/opRGB/BT.2020), RGB range (full/limited) per connector
3535
- 🖥️ **Multi-Monitor** — CRTC-based pipe mapping; each display configured independently
3636
- 🎮 **Multi-GPU** — automatic detection and switching between AMD GPUs
@@ -95,26 +95,6 @@ Open **Signal (DP / HDMI)** in the sidebar for any monitor:
9595
- **Force Link Depth** writes the encoder's depth field directly (`DP_COMPONENT_DEPTH` on DP, `HDMI_DEEP_COLOR_DEPTH`/`ENABLE` on HDMI). Every force goes through a Keep/Revert dialog that auto-reverts in 15 s if unanswered. **Pin (auto-reapply)** keeps a forced depth alive: a watchdog reapplies it whenever the driver resets the register on a modeset or monitor sleep/wake.
9696
- **Why no 6 bpc on HDMI**: DisplayPort defines an 18-bit link format; HDMI's minimum is 24-bit RGB. For 6-bit output on HDMI, use Truncate → 6-bit or 6-bit spatial dithering — the wire stays 8 bpc but only 6 bits carry content.
9797

98-
## What's new in 2.2
99-
100-
- **Dark mode fixed** — every dialog, banner and readout follows the theme (no more blinding white pop-ups or hidden text).
101-
- **Static Signal Test moved to the Dithering page** with a "hold the screen still" warning and a clear scope note: it detects *temporal, GPU-side* dithering only — not spatial dithering, monitor-side FRC, or backlight PWM.
102-
- **GPU / monitor scaling** — None / Full / Center / Full aspect (like NVIDIA's scaling), plus underscan (overscan fix).
103-
- **VRR / FreeSync status** card that reflects the display's capability.
104-
- **Read bug fixed** — Link Status, TearFree and Broadcast RGB were silently failing to read (the monitor's EDID pushed the value past a scan window); now correct.
105-
- **Scrollable sections** (mouse wheel, trackpad, touch drag) so nothing clips; clearer section titles + subtitles; *Display Properties → Display*.
106-
- **First-run safety disclaimer** and a one-command **`install.sh`** (checks deps, installs umr, adds a launcher).
107-
- **Under the hood** — cached `xrandr --props` (faster page renders), safer error handling, and repo polish (badges, screenshots, CONTRIBUTING, issue templates).
108-
109-
## What changed in 2.1
110-
111-
- **Added**: Signal section — DIG encoder readout (DP & HDMI) with on-wire depth forcing via UMR, DP++ adapter detection
112-
- **Added**: mode-change confirmation dialog with 15-second auto-revert
113-
- **Removed**: EDID editor/viewer (spoofing, colorimetry patching, firmware EDID install) — out of scope for a signal-control tool; monitor names are still read from EDID
114-
- **Fixed**: outputs with untouched (power-on default) FMT registers — commonly DisplayPort — now get tabs like everything else
115-
- **Fixed**: hardware→UI sync no longer hardcoded to one ASIC; works on any detected GPU
116-
- **Fixed**: `--version`/`--help` printed nothing in default quiet mode
117-
11898
## Disclaimer
11999

120100
RedControl writes GPU registers directly. All writes are non-persistent (a reboot or modeset restores driver defaults), but a forced depth or encoding the sink can't handle may blank the screen until you revert. Use at your own risk.

redcontrol.py

100644100755
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22
"""
3-
RedControl v2.2
3+
RedControl v1.0
44
Advanced display pipeline control for AMD GPUs (DCN)
55

66
Per-pipe dithering/truncation via the FMT block, color & depth properties,
@@ -33,7 +33,7 @@
3333

3434
APP_NAME = "RedControl"
3535
APP_ID = "redcontrol"
36-
APP_VERSION = "2.2"
36+
APP_VERSION = "1.0"
3737

3838
# Global app instance for routing warnings/errors into the CMD Log
3939
APP_INSTANCE = None
@@ -23528,7 +23528,7 @@ def copy_install_commands(self, username):
2352823528
def show_about(self):
2352923529
"""Show about dialog"""
2353023530
messagebox.showinfo("About RedControl",
23531-
"RedControl v2.0\n\n"
23531+
"RedControl v1.0\n\n"
2353223532
"Advanced display control for AMD GPUs\n"
2353323533
"Manage dithering, color depth, colorspace, and more.\n\n"
2353423534
"Uses UMR (User Mode Register access) to directly\n"

0 commit comments

Comments
 (0)