loader/dri3: Keep current number of back buffers if frame was skipped
authorMichel Dänzer <mdaenzer@redhat.com>
Tue, 6 Oct 2020 15:52:08 +0000 (17:52 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 22 Oct 2020 15:52:33 +0000 (15:52 +0000)
We'd previously take the copy path. If we were actually flipping (in
which case skipped frames are more likely to occur), we'd ping-pong
between a smaller and larger number of back buffers, and frame-rate
could vary / take a dip due to the buffer management overhead.

While I'm not sure this is actually possible to hit at this point, it
definitely will be with the next change.

Cc: mesa-stable
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7033>

src/loader/loader_dri3_helper.c

index 6a65f31..1cb482d 100644 (file)
@@ -280,6 +280,9 @@ dri3_update_max_num_back(struct loader_dri3_drawable *draw)
       draw->max_num_back = 3;
       break;
 
+   case XCB_PRESENT_COMPLETE_MODE_SKIP:
+      break;
+
    default:
       /* On transition from flips to copies, start with a single buffer again,
        * a second one will be allocated if needed