I wrote a small test program that modifies a region using BitBlt
, then checks the color of that region. I found that even immediately after BitBlt
, it takes over 80 milliseconds before the correct color can be reliably detected.
Then, I added an XSync(gdi_display, False)
after the XFlush
in x11drv_surface_flush
, and the delay dropped to around 50–60 milliseconds.
Is this expected?
I was hoping that after BitBlt
, the updated color could be detected immediately, without needing to add a delay or jitter.
But it seems that XFlush
only pushes the commands to the X server, and is not like vkQueuePresentKHR
with semaphores or fences, which signal that the data has been pushed to the display (even though that still doesn’t guarantee vertical scanout completion).