mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-05 22:00:11 +01:00
Found when running glxgears with vblank enabled and modesetting DDX. glxgears will send many present requests at the beginning, but most of them get complete event with skip mode. This problem causes glxgears report ~75fps on a 60Hz monitor at the first record. This change reduces it to 60fps. Vulkan side X11 WSI does not have this problem as it will wait first present request's complete event before send second present request. How the problem happens: 1. client send present request 1 with target msc = 1 2. server side current msc is 100, so it find request 1 is outdated and queue it for vblank with target msc = 101 3. client send present request 2 with target msc = 2 4. server side current msc is still 100, so it find request 2 is outdated and queue it with target msc = 101, and find request 1 will be overridden, so mark it as skipped and send idle notify for it. 5. client get the idle notify for request 1, and reuse the request 1 buffer for new back buffer to send present request 3. 6. this keeps going until client send present request N, and server finally process the vblank queue before 101 msc arrive and send complete event for all these requests back to client. Reviewed-by: Michel Dänzer <michel@daenzer.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38178> |
||
|---|---|---|
| .. | ||
| ci | ||
| clc | ||
| compiler | ||
| drm-shim | ||
| ds | ||
| genxml | ||
| lib | ||
| libpan | ||
| midgard | ||
| model | ||
| perf | ||
| shared | ||
| tools | ||
| util | ||
| vulkan | ||
| .clang-format | ||
| meson.build | ||