st/dri: decrease input lag by syncing sooner in SwapBuffers
authorMarek Olšák <marek.olsak@amd.com>
Mon, 22 Apr 2019 21:11:00 +0000 (17:11 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 2 May 2019 20:09:24 +0000 (16:09 -0400)
commit20909284f204091757c050aa40cfffaf3f981b9c
tree0747ef4c13b716453af6bcd4e6e52f58a499a62f
parentd30ce03bc07562d2f694dbe94cbf9c1875a25c4d
st/dri: decrease input lag by syncing sooner in SwapBuffers

It's done by:
- decrease the number of frames in flight by 1
- flush before throttling in SwapBuffers
  (instead of wait-then-flush, do flush-then-wait)

The improvement is apparent with Unigine Heaven.

Previously:
    draw frame 2
    wait frame 0
    flush frame 2
    present frame 2

    The input lag is 2 frames.

Now:
    draw frame 2
    flush frame 2
    wait frame 1
    present frame 2

    The input lag is 1 frame. Flushing is done before waiting, because
    otherwise the device would be idle after waiting.

Nine is affected because it also uses the pipe cap.
src/gallium/auxiliary/util/u_screen.c
src/gallium/state_trackers/dri/dri_drawable.c