Geoffrey McRae
653cecadeb
[idd] disable HDR and post-processing when in software mode
2026-07-19 05:52:40 +10:00
Geoffrey McRae
20225f05d1
[idd] hdr: complete HDR display and cursor metadata
...
Publish BT.2020 chromaticities in the virtual monitor EDID so
Windows receives a valid HDR colour volume.
Extend cursor messages with their IddCx SDR white level and an
explicit visibility-valid flag. Consumers can then calibrate cursors
without treating colour-transform-only messages as cursor hides.
2026-07-19 05:12:59 +10:00
Geoffrey McRae
fcd66a5172
[all] fix copyright headers
2026-07-19 03:31:44 +10:00
Geoffrey McRae
26ca90893a
[idd/client] apply the Windows display color transform
...
Honor the IddCx 3x4 XYZ matrix and post-transfer LUT in the IDD
conversion pipeline. Carry transform changes to the client so EGL applies
the same calibration to hardware cursors, and invalidate the full frame
whenever calibration changes.
2026-07-19 03:25:30 +10:00
Geoffrey McRae
1f6dbb0dae
[idd] hdr: propagate per-frame HDR metadata
...
Handle DEFAULT, NEW, and UNCHANGED IDDCX HDR10 metadata states and
publish valid mastering metadata through KVMFR. Preserve the metadata
across post-processing without reallocating resources for
metadata-only changes.
2026-07-19 02:13:57 +10:00
Geoffrey McRae
d8dee8806b
[idd] rgb24: fix packed-texel damage endpoints
2026-07-19 01:02:08 +10:00
Geoffrey McRae
86824a0010
[idd] accumulate damage from dropped frames
2026-07-19 01:00:22 +10:00
Geoffrey McRae
84e0a1b956
[idd] cancel stale swap chain assignments
...
Invalidate in-progress swap chain setup when IddCx unassigns the
monitor, and serialize replacement assignments so workers are
never started on abandoned handles.
Also initialize all worker dependencies before starting the processing
thread and treat teardown during SetDevice as normal cancellation.
2026-07-19 00:28:56 +10:00
Geoffrey McRae
a700db51a0
[idd] debug: add additional logging
2026-07-19 00:13:58 +10:00
Geoffrey McRae
b48f8d6fec
[idd] remove debounce logic now the lifecycle is properly protected
2026-07-18 04:41:38 +10:00
Geoffrey McRae
87db473122
[idd] apply resolution after the final replug
...
Preserve the requested display mode across intermediate swap chains when
rapid resolution changes cause replugs to be coalesced. Apply and clear
the mode only once the final replacement swap chain is ready.
2026-07-18 04:36:42 +10:00
Geoffrey McRae
791da3387a
[idd] serialize monitor replugs with swap chain teardown
...
Keep the replug lifecycle gated until the old swap chain has drained and
released its pending frame, and the replacement swap chain is fully
initialized. Coalesce additional requests into a follow-up replug to
prevent overlapping topology changes and IddCx release-frame timeout
bugchecks.
2026-07-18 04:30:21 +10:00
Geoffrey McRae
9676b30299
[idd] stop flooding the log with parsed modes
2026-07-18 04:22:14 +10:00
Geoffrey McRae
4631a14c44
[idd] implement config reload
2026-07-18 04:12:13 +10:00
Geoffrey McRae
6e70f36134
[idd] never add the extraMode to the EDID
...
Doing so causes windows to treat a new EDID as a new monitor
2026-07-18 04:01:19 +10:00
Geoffrey McRae
234f8623dc
[idd] avoid release frame timeouts during replug
...
Drop frames when the LGMP queue is full instead of blocking
while holding an IddCx surface. Always finish every
acquired frame, including duplicate frame numbers, so
replug teardown cannot trigger the release-frame watchdog.
2026-07-18 03:53:24 +10:00
Geoffrey McRae
3095a86556
[idd] fix failure to initialize variables
2026-07-18 03:42:16 +10:00
Geoffrey McRae
37d7f0e48f
[idd] keep the generated EDID immutable
...
Generate the EDID once during adapter initialization and update only the
live mode list when resolutions change.
Changing the EDID during a monitor replug causes Windows to identify it
as a different monitor, losing the existing display configuration.
Reusing the original EDID preserves the monitor identity while still
allowing dynamic modes to be advertised through IddCx.
2026-07-18 02:14:12 +10:00
Geoffrey McRae
d0bc4f3e07
[idd] publish frames after copy submission
...
Submit the D3D12 copy before exposing the frame through LGMP, preventing
clients from waiting on work that has not yet been queued. Track the
last published buffer separately for safe subscriber resends and handle
submission failures.
2026-07-17 23:49:57 +10:00
Geoffrey McRae
2006fb640f
[idd/client/obs] hdr: wire up the SdrWhiteLevel from the capture
2026-07-17 17:50:23 +10:00
Geoffrey McRae
aa25b0cfe3
[idd] hdr: correct the BT.709 to BT.2020 conversion
2026-07-17 03:10:55 +10:00
Geoffrey McRae
e332dc77f2
[obs] fix HDR support to properly convert from PQ
2026-07-16 23:13:36 +10:00
Geoffrey McRae
ef8a4e2923
[idd] use the actual surface colorspace instead of guessing
2026-07-16 20:24:23 +10:00
Geoffrey McRae
4734a4028a
[idd] collapse duplicate messages to the latest event only
2026-07-16 19:43:24 +10:00
Geoffrey McRae
5e6d88f382
[idd] debounce resolution changes
2026-07-16 19:32:12 +10:00
Geoffrey McRae
1ce446f97a
[idd] stop using IddCxMonitorUpdateModes(2)
...
While it would make much more sense to use these then a full replug to
change modes, Microsoft have not properly implemented the API to clear
the cached monitor mode states internally, making these calls useless.
Revert to just replugging the device on mode change
2026-07-16 19:24:24 +10:00
Geoffrey McRae
b97a0b79f1
[idd] don't rebuild the monitor from inside the old monitor's context
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-07-16 16:13:24 +10:00
Geoffrey McRae
fbf564f2e1
[idd] prevent races from corrupting the mode list and edid
2026-07-16 15:26:21 +10:00
Geoffrey McRae
0140a3f6fb
[client/idd] hdr: fix incorrect tone mapping knee bug
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-07-16 10:48:10 +10:00
Geoffrey McRae
e502af7d9d
Revert "[idd/client] correct HDR luminance when PQ conversion is in use"
...
This reverts commit 05d8bc5311 .
2026-07-16 09:58:44 +10:00
Geoffrey McRae
05d8bc5311
[idd/client] correct HDR luminance when PQ conversion is in use
2026-07-16 09:34:02 +10:00
Geoffrey McRae
ff1631da67
[idd] hdr: dont advertise non hdr formats as hdr
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-07-16 05:34:09 +10:00
Geoffrey McRae
82d36a858f
[idd] fix the HDR16 to HDR10 post processor
...
`linear` is a HLSL keyword
2026-07-16 05:34:09 +10:00
Geoffrey McRae
9047c26694
[idd] hdr: fix incorrect struct usage
2026-07-16 05:34:09 +10:00
Geoffrey McRae
8301ec5ae5
[idd] cleanup IDD version guards for HDR support
2026-07-16 05:34:09 +10:00
Geoffrey McRae
9721fc8c7e
[idd] whitespace fixes
2026-07-16 05:34:09 +10:00
Geoffrey McRae
0c653c1fb2
[idd] add support to return HDR metadata to clients
2026-07-16 05:34:09 +10:00
Quantum
bc96319b94
[idd] driver: report Windows 11 OS name correctly
...
Also refactored the versioning code to be more modular.
The old registry code was turned into a fallback and simplified, since
C++11 and newer guarantees the byte past the end of the std::string is
valid for null-terminator writes.
2026-07-15 17:22:58 +10:00
Quantum
3aa6492760
[idd] driver: implement reading in pipe server
...
Following the example of CPipeClient in the helper, this switches to using
overlapped I/O for easy interruption and cancellation that doesn't quite
work with CancelSynchronousIO.
2026-06-06 02:30:43 +10:00
Geoffrey McRae
37bb89f490
[idd] ipc/helper: notify the helper if a software renderer is in use
2026-06-04 01:45:35 +10:00
Geoffrey McRae
803aea0d21
[idd] ipc: implement reporting of GPU software status
2026-06-03 21:31:08 +10:00
Quantum
976be95177
[idd] driver: add BOM to CEdid.* for non-English systems
...
It wouldn't compile otherwise.
2026-06-03 16:59:58 +10:00
Geoffrey McRae
1b7c00dc82
[idd] driver: implement postprocess filters
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2026-06-03 08:59:48 +10:00
Geoffrey McRae
a59040f0be
[idd] driver: add/expose CSettings read string/bool methods
2026-06-03 08:59:48 +10:00
Geoffrey McRae
929428c273
[idd] driver: implement dirty rect tracking
2026-06-03 08:59:48 +10:00
Geoffrey McRae
bd88a64a98
[idd] driver: cleanup magic numbers in CEdid
2026-06-03 08:59:48 +10:00
Geoffrey McRae
882d531792
[idd] driver: use the default resolution for default modes
2026-06-03 08:59:48 +10:00
Geoffrey McRae
3211bc1d93
[idd] driver: improve resolution switching performance
2026-06-03 08:59:48 +10:00
Geoffrey McRae
a10efc9e23
[idd] hdr: use iddcx 1.10 if possible and expose HDR support
2026-06-03 08:59:48 +10:00
Geoffrey McRae
65005c0dc0
[idd] all: add default refresh rate setting support
2026-06-03 08:59:48 +10:00