mirror_ubuntu-kernels/drivers/gpu/drm
Simon Ser c1e18c44dc drm/amd/display: only accept async flips for fast updates
Up until now, amdgpu was silently degrading to vsync when
user-space requested an async flip but the hardware didn't support
it.

The hardware doesn't support immediate flips when the update changes
the FB pitch, the DCC state, the rotation, enables or disables CRTCs
or planes, etc. This is reflected in the dm_crtc_state.update_type
field: UPDATE_TYPE_FAST means that immediate flip is supported.

Silently degrading async flips to vsync is not the expected behavior
from a uAPI point-of-view. Xorg expects async flips to fail if
unsupported, to be able to fall back to a blit. i915 already behaves
this way.

This patch aligns amdgpu with uAPI expectations and returns a failure
when an async flip is not possible.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: André Almeida <andrealmeid@igalia.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: André Almeida <andrealmeid@igalia.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2023-07-12 11:12:09 -04:00
..
amd drm/amd/display: only accept async flips for fast updates 2023-07-12 11:12:09 -04:00
arm drm/aperture: Remove primary argument 2023-04-16 14:17:41 +02:00
armada drm/armada: Use regular fbdev I/O helpers 2023-06-01 12:26:47 +02:00
aspeed drm/aspeed: Use GEM DMA fbdev emulation 2023-03-14 17:07:47 +01:00
ast drm/ast: Fix modeset failed on DisplayPort 2023-06-01 10:40:38 +02:00
atmel-hlcdc drm/atmel-hlcdc: Use GEM DMA fbdev emulation 2023-03-14 17:07:47 +01:00
bridge Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
display Merge tag 'drm-msm-next-2023-06-18' of https://gitlab.freedesktop.org/drm/msm into drm-next 2023-06-19 16:01:46 +10:00
etnaviv Revert "drm/etnaviv: export client GPU usage statistics via fdinfo" 2023-03-30 17:47:05 +02:00
exynos Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
fsl-dcu drm/fsl-dcu: Use GEM DMA fbdev emulation 2023-03-14 17:07:48 +01:00
gma500 drm/gma500: Use regular fbdev I/O helpers 2023-06-01 12:26:49 +02:00
gud drm/gud: use new debugfs device-centered functions 2023-01-06 16:15:08 -03:00
hisilicon drm: Only select I2C_ALGOBIT for drivers that actually need it 2023-01-10 11:15:44 +01:00
hyperv drm/aperture: Remove primary argument 2023-04-16 14:17:41 +02:00
i2c drm: Switch i2c drivers back to use .probe() 2023-05-30 16:55:16 -07:00
i915 drm/i915: use mock device info for creating mock device 2023-07-04 10:40:29 +01:00
imx drm/imx/lcdc: fix a NULL vs IS_ERR() bug in probe 2023-04-15 23:48:48 +02:00
ingenic drm/ingenic: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:31 +01:00
kmb drm/kmb: Use GEM DMA fbdev emulation 2023-03-14 17:07:48 +01:00
lib
lima drm/lima: fix sched context destroy 2023-06-07 11:53:22 +08:00
logicvc drm/logicvc: Use GEM DMA fbdev emulation 2023-03-14 17:07:48 +01:00
mcde drm/mcde: Use GEM DMA fbdev emulation 2023-03-14 17:07:49 +01:00
mediatek drm/mediatek: dp: Change the aux retries times when receiving AUX_DEFER 2023-04-03 16:49:49 +00:00
meson drm/meson: venc: include linux/bitfield.h 2023-06-02 15:47:52 +02:00
mgag200 Merge drm/drm-fixes into drm-misc-fixes 2023-05-12 09:47:12 +02:00
msm Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
mxsfb drm: lcdif: Add i.MX93 LCDIF compatible string 2023-05-26 19:07:33 +02:00
nouveau Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
omapdrm drm/omapdrm: Use regular fbdev I/O helpers 2023-06-01 12:41:32 +02:00
panel drm/panel: Fine tune Starry-ili9882t panel HFP and HBP 2023-06-29 17:35:34 -07:00
panfrost drm next for 6.4-rc1 2023-04-25 16:12:15 -07:00
pl111 drm/pl111: Fix FB depth on IMPD-1 framebuffer 2023-05-16 09:46:21 +02:00
qxl drm/qxl: handle NULL bo->resource in move callback 2023-02-23 10:29:14 +01:00
radeon drm/radeon: ERROR: "(foo*)" should be "(foo *)" 2023-07-12 11:12:09 -04:00
renesas drm: Place Renesas drivers in a separate dir 2023-05-29 16:41:03 +03:00
rockchip Merge drm/drm-next into drm-misc-next 2023-05-09 15:03:40 +02:00
scheduler Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
solomon drm: Switch i2c drivers back to use .probe() 2023-05-30 16:55:16 -07:00
sprd drm/sprd: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:32 +01:00
sti drm/sti/sti_hdmi: convert to using is_hdmi from display info 2023-05-02 18:48:58 +03:00
stm drm/stm: ltdc: fix late dereference check 2023-05-26 13:31:22 +02:00
sun4i drm: sun4i_tcon: use devm_clk_get_enabled in sun4i_tcon_init_clocks 2023-05-11 09:30:14 +02:00
tegra drm/tegra: Use regular fbdev I/O helpers 2023-06-01 12:41:40 +02:00
tests Merge drm/drm-next into drm-misc-next 2023-05-09 15:03:40 +02:00
tidss drm/tidss: Use GEM DMA fbdev emulation 2023-03-14 17:07:49 +01:00
tilcdc drm/tilcdc: Use GEM DMA fbdev emulation 2023-03-14 17:07:49 +01:00
tiny drm: Use of_property_read_bool() for boolean properties 2023-03-30 13:46:07 -05:00
ttm Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2023-06-15 14:11:22 +10:00
tve200 drm/tve200: Use devm_platform_ioremap_resource() 2023-04-24 10:04:33 +02:00
udl drm/udl: delete dead code 2023-05-03 16:32:33 +02:00
v3d drm/v3d: Use drm_sched_job_add_syncobj_dependency() 2023-02-24 17:23:43 -03:00
vboxvideo drm/vboxvideo: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:32 +01:00
vc4 Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2023-06-15 14:11:22 +10:00
vgem drm/vgem: Drop struct drm_vgem_gem_object 2023-03-20 08:14:27 -03:00
virtio drm/virtio: Wait for each dma-fence of in-fence array individually 2023-06-03 04:50:50 +03:00
vkms drm/vkms: Fix RGB565 pixel conversion 2023-05-15 10:58:11 -03:00
vmwgfx flexible-array transformations for 6.4-rc1 2023-04-26 08:25:57 -07:00
xen mm: replace vma->vm_flags direct modifications with modifier calls 2023-02-09 16:51:39 -08:00
xlnx drm/xlnx: Use GEM DMA fbdev emulation 2023-03-14 17:07:49 +01:00
drm_agpsupport.c
drm_aperture.c video/aperture: Drop primary argument 2023-04-16 14:17:55 +02:00
drm_atomic_helper.c drm/drm_atomic_helper.c: fix a typo 2023-05-17 09:22:07 +02:00
drm_atomic_state_helper.c drm/atomic-helper: fix kernel-doc problems 2023-01-19 09:16:04 +01:00
drm_atomic_uapi.c
drm_atomic.c drm/connector: Print connector colorspace in state debugfs 2023-06-09 12:46:41 -04:00
drm_auth.c
drm_blend.c drm/drm_blend: Remove usage of deprecated DRM_DEBUG_ATOMIC 2023-01-10 16:14:13 +01:00
drm_bridge_connector.c drm/bridge_connector: drop drm_bridge_connector_en/disable_hpd() 2023-01-05 15:08:10 +01:00
drm_bridge.c drm/bridge: Document the expected behaviour of DSI host controllers 2022-12-08 09:56:57 +01:00
drm_buddy.c drm: buddy_allocator: Fix buddy allocator init on 32-bit systems 2023-03-29 17:14:07 +02:00
drm_bufs.c drm/nouveau: Remove support for legacy contexts/buffers 2023-01-13 09:22:02 +01:00
drm_cache.c
drm_client_modeset.c
drm_client.c drm next for 6.3-rc1 2023-02-22 18:28:03 -08:00
drm_color_mgmt.c
drm_connector.c drm/connector: Allow drivers to pass list of supported colorspaces 2023-06-09 12:46:44 -04:00
drm_context.c drm/nouveau: Remove support for legacy contexts/buffers 2023-01-13 09:22:02 +01:00
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c
drm_debugfs.c drm: Track clients by tgid and not tid 2023-03-15 14:03:00 +01:00
drm_displayid.c drm/displayid: provide access to DisplayID version and primary use case 2023-02-27 02:58:38 +03:00
drm_dma.c
drm_drv.c Documentation: vkms: clarify devres managed reference cleanup 2023-05-08 15:56:25 +00:00
drm_dumb_buffers.c drm: remove dumb_destroy callback 2023-02-10 12:19:27 +01:00
drm_edid_load.c
drm_edid.c drm/edid: make drm_edid_duplicate() safe to call with NULL parameter 2023-06-02 13:23:30 +03:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_dma_helper.c
drm_fb_helper.c Linux 6.4-rc7 2023-06-19 16:01:25 +10:00
drm_fbdev_dma.c drm/fbdev-dma: Use regular fbdev I/O helpers 2023-06-01 12:26:51 +02:00
drm_fbdev_generic.c drm/fbdev-generic: Implement dedicated fbdev I/O helpers 2023-06-01 12:41:40 +02:00
drm_file.c drm: Add fdinfo memory stats 2023-05-24 18:03:30 +02:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Support the AB24/XB24 formats 2023-01-23 15:02:41 +01:00
drm_fourcc.c
drm_framebuffer.c drm: use new debugfs device-centered functions on DRM core files 2022-12-22 14:58:21 -03:00
drm_gem_atomic_helper.c
drm_gem_dma_helper.c - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
drm_gem_framebuffer_helper.c drm/gem: Check for valid formats 2023-04-19 20:19:27 -03:00
drm_gem_shmem_helper.c Linux 6.3-rc4 2023-03-29 16:00:23 +02:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/vram-helper: fix function names in vram helper doc 2023-05-08 09:16:18 +02:00
drm_gem.c Merge tag 'drm-msm-next-2023-04-10' of https://gitlab.freedesktop.org/drm/msm into drm-next 2023-04-11 12:21:50 +02:00
drm_hashtab.c
drm_internal.h drm: remove dumb_destroy callback 2023-02-10 12:19:27 +01:00
drm_ioc32.c drm: Replace DRM_DEBUG with drm_dbg_core in file and ioctl handling 2023-01-03 18:20:57 +01:00
drm_ioctl.c drm: Replace DRM_DEBUG with drm_dbg_core in file and ioctl handling 2023-01-03 18:20:57 +01:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c drm: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:30 +01:00
drm_legacy_misc.c
drm_legacy.h
drm_lock.c
drm_managed.c drm: fix drmm_mutex_init() 2023-05-22 12:23:50 +02:00
drm_memory.c
drm_mipi_dbi.c drm/mipi-dbi: Support separate I/O regulator 2022-12-14 14:57:09 +01:00
drm_mipi_dsi.c Merge drm/drm-fixes into drm-misc-fixes 2023-05-12 09:47:12 +02:00
drm_mm.c
drm_mode_config.c drm/debugfs: create debugfs late register functions 2022-12-22 14:58:55 -03:00
drm_mode_object.c
drm_modes.c drm: Fix comment on mode parsing 2023-02-20 14:56:52 +01:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c drm: of: Add drm_of_get_dsi_bus helper function 2023-01-27 09:39:21 +01:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Change Air's quirk to support Air Plus 2023-05-17 11:46:49 +02:00
drm_panel.c
drm_pci.c
drm_plane_helper.c drm: Remove unnecessary include statements for drm_crtc_helper.h 2023-01-18 09:25:30 +01:00
drm_plane.c drm/docs: Explicitly document default CRTC background behavior 2023-01-04 16:12:15 +00:00
drm_prime.c drm/prime: reject DMA-BUF attach when get_sg_table is missing 2023-04-03 14:31:24 +02:00
drm_print.c
drm_privacy_screen_x86.c
drm_privacy_screen.c
drm_probe_helper.c drm/probe-helper: Cancel previous job before starting new one 2023-02-27 16:19:14 +01:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_suballoc.c drm/suballoc: Extract amdgpu_sa.c as generic suballocation helper 2023-03-01 17:18:19 +01:00
drm_syncobj.c
drm_sysfs.c Merge drm/drm-next into drm-misc-next 2023-05-09 15:03:40 +02:00
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c drm/vblank: Fix for drivers that do not drm_vblank_init() 2023-04-04 22:38:03 +02:00
drm_vm.c mm: replace vma->vm_flags direct modifications with modifier calls 2023-02-09 16:51:39 -08:00
drm_vma_manager.c drm/drm_vma_manager: Add drm_vma_node_allow_once() 2023-01-19 14:16:55 +01:00
drm_writeback.c
Kconfig Renesas DRM/KMS drivers: 2023-06-09 11:17:00 +10:00
Makefile Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2023-06-15 14:11:22 +10:00