It appears to be possible that IDLE is observed before COMPLETE. In this case, an application may access present_id in subsequent QueuePresentKHR and race against the fence worker reading present_id. Solve this by adding a separate signal_present_id that is used when completing to avoid the race. Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no> Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22633>