linux/drivers/gpu/drm/tegra
André Almeida fd40a63c63 drm/atomic: Let drivers decide which planes to async flip
Currently, DRM atomic uAPI allows only primary planes to be flipped
asynchronously. However, each driver might be able to perform async
flips in other different plane types. To enable drivers to set their own
restrictions on which type of plane they can or cannot flip, use the
existing atomic_async_check() from struct drm_plane_helper_funcs to
enhance this flexibility, thus allowing different plane types to be able
to do async flips as well.

Create a new parameter for the atomic_async_check(), `bool flip`. This
parameter is used to distinguish when this function is being called from
a plane update from a full page flip.

In order to prevent regressions and such, we keep the current policy: we
skip the driver check for the primary plane, because it is always
allowed to do async flips on it.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Christopher Snowhill <chris@kode54.net>
Tested-by: Christopher Snowhill <chris@kode54.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20250127-tonyk-async_flip-v12-1-0f7f8a8610d3@igalia.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
2025-02-14 00:54:29 +02:00
..
dc.c drm/atomic: Let drivers decide which planes to async flip 2025-02-14 00:54:29 +02:00
dc.h drm/tegra: rgb: Make tegra_dc_rgb_remove() return void 2023-04-04 14:24:40 +02:00
dp.c
dp.h
dpaux.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
dpaux.h
drm.c drm: remove driver date from struct drm_driver and all drivers 2024-12-05 12:35:42 +02:00
drm.h drm/tegra: Run DRM default client setup 2024-09-26 09:31:29 +02:00
dsi.c drm/connector: make mode_valid take a const struct drm_display_mode 2025-01-07 12:45:19 +02:00
dsi.h
falcon.c
falcon.h
fb.c drm/tegra: put drm_gem_object ref on error in tegra_fb_create 2024-02-22 18:29:22 +01:00
fbdev.c drm/tegra: Run DRM default client setup 2024-09-26 09:31:29 +02:00
firewall.c drm/tegra: firewall: Check for is_addr_reg existence in IMM check 2023-01-26 15:55:38 +01:00
gem.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
gem.h drm/tegra: gem: Don't attach dma-bufs when not needed 2024-08-29 20:14:29 +02:00
gr2d.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
gr2d.h
gr3d.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
gr3d.h
hda.c
hda.h
hdmi.c drm/connector: make mode_valid take a const struct drm_display_mode 2025-01-07 12:45:19 +02:00
hdmi.h
hub.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
hub.h
Kconfig drm/tegra: Run DRM default client setup 2024-09-26 09:31:29 +02:00
Makefile drm/tegra: Hide fbdev support behind config option 2023-04-06 12:18:54 +02:00
mipi-phy.c
mipi-phy.h
nvdec.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
output.c drm/tegra: fix potential uninitialized variable use 2024-09-05 12:40:18 +02:00
plane.c drm/tegra: plane: Improve use of dev_err_probe() 2023-04-04 18:04:57 +02:00
plane.h
rgb.c drm/tegra: rgb: Fix missing clk_put() in the error handling paths of tegra_dc_rgb_probe() 2023-12-14 18:39:10 +01:00
riscv.c drm/tegra: Add code for booting RISC-V based engines 2022-11-25 16:14:58 +01:00
riscv.h drm/tegra: Add code for booting RISC-V based engines 2022-11-25 16:14:58 +01:00
sor.c drm/connector: make mode_valid take a const struct drm_display_mode 2025-01-07 12:45:19 +02:00
sor.h
submit.c drm/tegra: Use tegra_dev_iommu_get_stream_id() 2023-01-27 17:49:43 +01:00
submit.h
trace.c
trace.h
uapi.c gpu: host1x: Select context device based on attached IOMMU 2022-11-25 16:14:19 +01:00
uapi.h
vic.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
vic.h