Correct usage of DisplayTask::SetSignal

Peter Kinsey-James 0 Reputation points
2025-12-20T10:27:58.7433333+00:00

I can't get Windows.Display.Devices.Core DisplayTask::SetSignal to work as documented

Sample application compiles, runs and presents content to my monitor

I have created a DisplayFence by opening a shared handle to a D3D11Fence and passed that in as the parameter to SetSignal for both DisplayTaskSignalKind enums - but in both cases, calling GetCompletedValue or waiting on an Event from the fence fail to ever change the CompletedValue or be signalled

Frame pace my application based on presentation success and I want to be able to predict the next frame time. How is this meant to work?

https://quic.hkg1.meaqua.org/en-us/windows-hardware/drivers/display/specialized-monitors-compositor

https://quic.hkg1.meaqua.org/en-us/uwp/api/windows.devices.display.core.displaytask.setsignal?view=winrt-26100#windows-devices-display-core-displaytask-setsignal(windows-devices-display-core-displaytasksignalkind-windows-devices-display-core-displayfence)

Things I have tried:

  • Multiple machines both running Win 11 (24H2 26100.7462)
  • Different GPUs (NVidia RTX 4000 Ada & Nvidia Gefore RTX 4060 Laptop)
  • Latest Nvidia driver
  • Passing in a nullptr DisplayFence
  • Tried both by removing display from desktop in Windows on Enterprise & using a vendor specific block in my device EDID
  • Tried having a separate DX12 Device creating D3D12Fence1 instances and using those as the backing for the DisplayFence
  • Neither OnPresentFlipAway or OnPresentFlipTo ever seem to signal the underlying D3D fence
Windows development | Windows API - Win32
0 comments No comments
{count} votes

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.