Geoffrey McRae
f8b50e741c
[idd] accumulate damage from dropped frames
2026-07-23 09:44:00 +10:00
Geoffrey McRae
3e67052cb4
[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-23 09:44:00 +10:00
Geoffrey McRae
7707decc57
[idd] debug: add additional logging
2026-07-23 09:44:00 +10:00
Geoffrey McRae
5982a60d6c
[idd] remove debounce logic now the lifecycle is properly protected
2026-07-23 09:43:59 +10:00
Geoffrey McRae
2f237a841c
[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-23 09:43:59 +10:00
Geoffrey McRae
5adc22ebca
[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-23 09:43:59 +10:00
Geoffrey McRae
de68e5ae97
[idd] stop flooding the log with parsed modes
2026-07-23 09:43:59 +10:00
Geoffrey McRae
1ec92a943d
[idd] implement config reload
2026-07-23 09:43:59 +10:00
Geoffrey McRae
1da457affe
[idd] never add the extraMode to the EDID
...
Doing so causes windows to treat a new EDID as a new monitor
2026-07-23 09:43:59 +10:00
Geoffrey McRae
4d3636dba5
[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-23 09:43:59 +10:00
Geoffrey McRae
2e616ddf79
[idd] fix failure to initialize variables
2026-07-23 09:43:59 +10:00
Geoffrey McRae
e6ac8a2b75
[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-23 09:43:59 +10:00
Geoffrey McRae
041ae0e9f4
[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-23 09:43:59 +10:00
Geoffrey McRae
845c612d0f
[idd/client/obs] hdr: wire up the SdrWhiteLevel from the capture
2026-07-23 09:43:59 +10:00
Geoffrey McRae
f2b45646d7
[idd] hdr: correct the BT.709 to BT.2020 conversion
2026-07-23 09:43:59 +10:00
Geoffrey McRae
f9a77048ab
[obs] fix HDR support to properly convert from PQ
2026-07-23 09:43:59 +10:00
Geoffrey McRae
4dd9d11cca
[idd] use the actual surface colorspace instead of guessing
2026-07-23 09:43:59 +10:00
Geoffrey McRae
e245256860
[idd] collapse duplicate messages to the latest event only
2026-07-23 09:43:59 +10:00
Geoffrey McRae
67d29242ba
[idd] debounce resolution changes
2026-07-23 09:43:59 +10:00
Geoffrey McRae
f702576820
[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-23 09:40:49 +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
Geoffrey McRae
c2add993ac
[idd] CEdid: add new helper class to build the EDID block
2026-06-03 08:59:48 +10:00
Geoffrey McRae
83bebf4519
[idd] CSettings: fix registry string value handling
...
Rename the invalid default parameter and make registry string reads
more robust.
Validate the returned value type and byte count after querying the
value data, reject malformed UTF-16 sizes, and explicitly terminate
the string based on the number of bytes actually returned.
Sanity check the parsed mode values
2026-06-03 08:59:48 +10:00
Geoffrey McRae
19f75dc045
[idd] driver: CSettings minor refactor
2026-06-03 08:59:48 +10:00
Geoffrey McRae
69f44a003d
[all] refresh copyright
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-05-31 15:13:57 +10:00
Geoffrey McRae
e9b7bdfea1
Revert "[all] refresh copyright"
...
Corrupted IDD sources due to lack of UTF-8 with BOM support in the
script.
2026-05-31 15:10:44 +10:00
Geoffrey McRae
98602fb95e
[all] refresh copyright
2026-05-31 15:03:37 +10:00