mesa/src/panfrost
Qiang Yu a6bf07e7c2
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
dri: avoid sending too many present reuqests when app start or pause
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>
2025-11-19 10:01:50 +08:00
..
ci dri: avoid sending too many present reuqests when app start or pause 2025-11-19 10:01:50 +08:00
clc nir: rename nir_copy_prop -> nir_opt_copy_prop 2025-11-15 02:16:38 +00:00
compiler pan/bi: introduce EXT_shader_pixel_local_storage support to compiler 2025-11-18 20:25:43 +00:00
drm-shim panfrost/drm-shim: Use align_uintptr instead of ALIGN for size_t input 2025-11-12 21:58:38 +00:00
ds panfrost/perfetto: Use Android-internal perfetto 2025-08-19 15:02:06 +00:00
genxml pan/genxml: Add ConversionDesc to v9+ BufferDescriptor 2025-11-07 17:03:53 +00:00
lib pan/lib: prepare for pixel local storage support 2025-11-18 20:25:43 +00:00
libpan panvk/csf: add PANLIB_BARRIER_CSF_WAIT, to insert WAIT after precomp 2025-11-17 19:31:31 +00:00
midgard nir: rename nir_copy_prop -> nir_opt_copy_prop 2025-11-15 02:16:38 +00:00
model pan: Lift pan_get_model into its own lib 2025-09-16 15:54:48 +00:00
perf build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
shared build: avoid redefining unreachable() which is standard in C23 2025-07-31 17:49:42 +00:00
tools pan/decode: detect error on fseek 2025-08-21 08:45:33 +00:00
util pan/bi: introduce EXT_shader_pixel_local_storage support to compiler 2025-11-18 20:25:43 +00:00
vulkan panvk/csf: merge v10 and v11 paths in issue_fragment_jobs 2025-11-18 21:33:40 +00:00
.clang-format clang-format: Update the .clang-format files to conformance clang-format json-schema 2025-09-09 07:04:55 +00:00
meson.build pan: Lift pan_get_model into its own lib 2025-09-16 15:54:48 +00:00