2023-10-17 09:31:35

by André Almeida

[permalink] [raw]
Subject: [PATCH v7 0/6] drm: Add support for atomic async page-flip

Hi,

This work from me and Simon adds support for DRM_MODE_PAGE_FLIP_ASYNC through
the atomic API. This feature is already available via the legacy API. The use
case is to be able to present a new frame immediately (or as soon as
possible), even if after missing a vblank. This might result in tearing, but
it's useful when a high framerate is desired, such as for gaming.

Differently from earlier versions, this one refuses to flip if any prop changes
for async flips. The idea is that the fast path of immediate page flips doesn't
play well with modeset changes, so only the fb_id can be changed.
Thanks,
André

- User-space patch: https://github.com/Plagman/gamescope/pull/595
- IGT tests: https://gitlab.freedesktop.org/andrealmeid/igt-gpu-tools/-/tree/atomic_async_page_flip

Changes from v6:
- Dropped the exception to allow MODE_ID changes (Simon)
- Clarify what happens when flipping with the same FB_ID (Pekka)

v6: https://lore.kernel.org/dri-devel/[email protected]/

Changes from v5:
- Add note in the docs that not every redundant attribute will result in no-op,
some might cause oversynchronization issues.

v5: https://lore.kernel.org/dri-devel/[email protected]/

Changes from v4:
- Documentation rewrote by Pekka Paalanen

v4: https://lore.kernel.org/dri-devel/[email protected]/

Changes from v3:
- Add new patch to reject prop changes
- Add a documentation clarifying the KMS atomic state set

v3: https://lore.kernel.org/dri-devel/[email protected]/

André Almeida (1):
drm: Refuse to async flip with atomic prop changes

Pekka Paalanen (1):
drm/doc: Define KMS atomic state set

Simon Ser (4):
drm: allow DRM_MODE_PAGE_FLIP_ASYNC for atomic commits
drm: introduce DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP
drm: introduce drm_mode_config.atomic_async_page_flip_not_supported
amd/display: indicate support for atomic async page-flips on DC

Documentation/gpu/drm-uapi.rst | 47 ++++++++++++
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 +
drivers/gpu/drm/drm_atomic_uapi.c | 75 +++++++++++++++++--
drivers/gpu/drm/drm_crtc_internal.h | 2 +-
drivers/gpu/drm/drm_ioctl.c | 5 ++
drivers/gpu/drm/drm_mode_object.c | 2 +-
.../drm/i915/display/intel_display_driver.c | 1 +
drivers/gpu/drm/nouveau/nouveau_display.c | 1 +
include/drm/drm_mode_config.h | 11 +++
include/uapi/drm/drm.h | 10 ++-
include/uapi/drm/drm_mode.h | 9 +++
11 files changed, 155 insertions(+), 9 deletions(-)

--
2.42.0


2023-10-17 13:47:39

by Helen Koike

[permalink] [raw]
Subject: Re: [PATCH v7 0/6] drm: Add support for atomic async page-flip



On 17/10/2023 06:28, André Almeida wrote:
> Hi,
>
> This work from me and Simon adds support for DRM_MODE_PAGE_FLIP_ASYNC through
> the atomic API. This feature is already available via the legacy API. The use
> case is to be able to present a new frame immediately (or as soon as
> possible), even if after missing a vblank. This might result in tearing, but
> it's useful when a high framerate is desired, such as for gaming.
>
> Differently from earlier versions, this one refuses to flip if any prop changes
> for async flips. The idea is that the fast path of immediate page flips doesn't
> play well with modeset changes, so only the fb_id can be changed.
> Thanks,
> André
>
> - User-space patch: https://github.com/Plagman/gamescope/pull/595
> - IGT tests: https://gitlab.freedesktop.org/andrealmeid/igt-gpu-tools/-/tree/atomic_async_page_flip
>
> Changes from v6:
> - Dropped the exception to allow MODE_ID changes (Simon)
> - Clarify what happens when flipping with the same FB_ID (Pekka)
>
> v6: https://lore.kernel.org/dri-devel/[email protected]/
>
> Changes from v5:
> - Add note in the docs that not every redundant attribute will result in no-op,
> some might cause oversynchronization issues.
>
> v5: https://lore.kernel.org/dri-devel/[email protected]/
>
> Changes from v4:
> - Documentation rewrote by Pekka Paalanen
>
> v4: https://lore.kernel.org/dri-devel/[email protected]/
>
> Changes from v3:
> - Add new patch to reject prop changes
> - Add a documentation clarifying the KMS atomic state set
>
> v3: https://lore.kernel.org/dri-devel/[email protected]/
>
> André Almeida (1):
> drm: Refuse to async flip with atomic prop changes
>
> Pekka Paalanen (1):
> drm/doc: Define KMS atomic state set
>
> Simon Ser (4):
> drm: allow DRM_MODE_PAGE_FLIP_ASYNC for atomic commits
> drm: introduce DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP
> drm: introduce drm_mode_config.atomic_async_page_flip_not_supported
> amd/display: indicate support for atomic async page-flips on DC
>
> Documentation/gpu/drm-uapi.rst | 47 ++++++++++++
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 1 +
> drivers/gpu/drm/drm_atomic_uapi.c | 75 +++++++++++++++++--
> drivers/gpu/drm/drm_crtc_internal.h | 2 +-
> drivers/gpu/drm/drm_ioctl.c | 5 ++
> drivers/gpu/drm/drm_mode_object.c | 2 +-
> .../drm/i915/display/intel_display_driver.c | 1 +
> drivers/gpu/drm/nouveau/nouveau_display.c | 1 +
> include/drm/drm_mode_config.h | 11 +++
> include/uapi/drm/drm.h | 10 ++-
> include/uapi/drm/drm_mode.h | 9 +++
> 11 files changed, 155 insertions(+), 9 deletions(-)
>

Hello o/

Maybe it is not related (since there are a few years I don't work on
this) but this reminds me of
https://yhbt.net/lore/all/[email protected]/T/

(just sharing for the sake of communication flow)

Regards,
Helen