linux_dsm_epyc7002/drivers/gpu/drm
Daniel Vetter 9d54fcd541 drm/gem-fb-helper: Always do implicit sync
I've done a lot of history digging. The first signs of this
optimization was introduced in i915:

commit 25067bfc06
Author: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Date:   Wed Sep 10 12:03:17 2014 -0300

    drm/i915: pin sprite fb only if it changed

without much justification. Pinning already pinned stuff is real cheap
(it's just obj->pin_count++ really), and the missing implicit sync was
entirely forgotten about it seems. It's at least not mentioned
anywhere it the commit message.

It was also promptly removed shortly afterwards in

commit ea2c67bb4a
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Tue Dec 23 10:41:52 2014 -0800

    drm/i915: Move to atomic plane helpers (v9)

again without really mentioning the side-effect that plane updates
with the same fb now again obey implicit syncing.

Note that this only ever applied to the plane_update hook, all other
legacy entry points (set_base, page_flip) always obeyed implicit sync
in the drm/i915 driver.

The real source of this code here seems to be msm, copied to vc4, then
copied to tinydrm. I've also tried to dig around in all available msm
sources, but the corresponding check for fb != old_fb is present ever
since the initial merge in

commit cf3a7e4ce0
Author: Rob Clark <robdclark@gmail.com>
Date:   Sat Nov 8 13:21:06 2014 -0500

    drm/msm: atomic core bits

The only older version I've found of msm atomic code predates the
atomic helpers, and so didn't even use any of this. It also does not
have a corresponding check (because it simply did no implicit sync at
all).

I've chatted with Rob on irc, and he didn't remember the reason for
this either.

Note we had epic amounts of fun with too much syncing against
_vblank_, especially around cursor updates. But I don't ever
discussing a need for less syncing against implicit fences.

Also note that explicit fencing allows you to sidetrack all of this,
at least for all the drivers correctly implemented using
drm_atomic_set_fence_for_plane().

Given that it seems to be an accident of history, and that big drivers
like i915 (and also nouveau it seems, I didn't follow the
amdgpu/radeon sync code to figure this out properly there) never have
done it, let's remove this.

Cc: Rob Clark <robdclark@gmail.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Sean Paul <seanpaul@chromium.org>
Cc: David Airlie <airlied@linux.ie>
Cc: "Noralf Trønnes" <noralf@tronnes.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180405154449.23038-8-daniel.vetter@ffwll.ch
2018-06-20 14:43:13 +02:00
..
amd drm/amdgpu/dc: Stop updating plane->fb 2018-06-11 20:22:44 +03:00
arc drm/arc: Stop consulting plane->fb 2018-05-25 20:08:27 +03:00
arm
armada drm/armada: Move GEM BO to drm_framebuffer 2018-05-18 14:52:36 +01:00
ast drm/ast: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
atmel-hlcdc drm/atmel-hlcdc: Stop using plane->fb 2018-05-25 21:21:39 +03:00
bochs drm/bochs: fix mode_valid's return type 2018-04-25 09:34:00 +02:00
bridge drm/bridge: sil_sii8620: do not have a dependency of RC_CORE 2018-06-14 14:32:11 +02:00
cirrus drm/cirrus: cirrus_framebuffer -> drm_framebuffer 2018-05-18 14:52:30 +01:00
etnaviv drm/etnaviv: bump HW job limit to 4 2018-03-22 11:08:48 +01:00
exynos drm/exynos: Stop updating plane->crtc 2018-06-11 20:22:44 +03:00
fsl-dcu
gma500 drm/gma500: Remove VLA 2018-05-23 10:45:02 +02:00
hisilicon drm/hisilicon: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
i2c drm/i2c: tda998x: Remove VLA usage 2018-05-23 10:45:22 +02:00
i810
i915 drm/i915: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
imx Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
lib
mediatek drm/mtk: mtk_drm_fb -> drm_framebuffer 2018-05-18 15:56:16 +01:00
meson Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
mga
mgag200 drm/mgag200: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
msm drm/msm: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
mxsfb drm/mxsfb: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:43 +02:00
nouveau drm: Don't pass the index to drm_property_add_enum() 2018-04-27 16:46:50 +03:00
omapdrm drm/omapdrm: Nuke omap_framebuffer_get_next_connector() 2018-05-25 21:21:39 +03:00
panel display: panel: Add AUO g070vvn01 display support (800x480) 2018-05-29 16:22:43 +02:00
pl111 drm/pl111: Fix module probe bug 2018-05-04 00:13:41 +02:00
qxl gpu: drm: qxl: Adding new typedef vm_fault_t 2018-05-14 11:01:30 +02:00
r128
radeon drm/radeon: add PX quirk for Asus K73TK 2018-04-11 13:11:50 -05:00
rcar-du drm/rcar-du: Convert to the new generic alpha property 2018-04-16 21:20:59 +02:00
rockchip drm/rockchip: vop: fix irq disabled after vop driver probed 2018-06-18 14:59:32 +02:00
savage
scheduler Revert 190c462d5be19ba622a82f5fd0625087c870a1e6..bf3012ada1b2222e770de5c35c1bb16f73b3a01d" 2018-05-03 12:38:39 +02:00
selftests drm/mm: Add a search-by-address variant to only inspect a single hole 2018-05-24 15:04:30 +01:00
shmobile
sis
sti drm/sti: Stop consulting plane->crtc 2018-05-25 20:08:27 +03:00
stm drm/stm: ltdc: fix warnings in ltdc_plane_create() 2018-04-27 11:02:58 +02:00
sun4i drm/sun4i: mark PM functions as __maybe_unused 2018-05-28 10:47:27 +02:00
tdfx
tegra drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tilcdc
tinydrm drm/tinydrm/mi0283qt: Always set rotation value 2018-04-30 11:00:19 +02:00
ttm drm/ttm: Export the ttm_k[un]map_atomic_prot API. 2018-03-22 11:10:06 +01:00
tve200 drm/tve200: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:06 +02:00
udl gpu: drm: udl: Adding new typedef vm_fault_t 2018-05-23 10:48:46 +02:00
v3d drm/v3d: Checking for NULL vs IS_ERR() 2018-05-21 10:44:33 -07:00
vc4 drm/vc4: Stop updating plane->fb/crtc 2018-06-11 20:22:44 +03:00
vgem gpu: drm: vgem: Change return type to vm_fault_t 2018-05-24 14:56:57 +02:00
via
virtio drm/virtio: Stop updating plane->crtc 2018-06-11 20:22:44 +03:00
vmwgfx drm/vmwgfx: Stop messing about with plane->fb/old_fb/crtc 2018-06-11 20:22:44 +03:00
xen drm/xen-front: fix pointer casts 2018-05-25 08:28:41 +03:00
zte drm/zte: Stop consulting plane->crtc 2018-03-29 19:14:21 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_atomic.c drm/atomic: Set current atomic state in drm_private_state 2018-06-15 23:35:41 +03:00
drm_auth.c
drm_blend.c drm/blend: Add a generic alpha property 2018-04-16 21:17:29 +02:00
drm_bridge.c
drm_bufs.c drm: dma_bufs: Fixed checkpatch issues 2018-03-19 09:31:20 -04:00
drm_cache.c
drm_color_mgmt.c kernel.h: Retain constant expression output for max()/min() 2018-04-05 14:17:16 -07:00
drm_connector.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm: Print bad user modes 2018-06-15 23:31:07 +03:00
drm_crtc.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c sched/wait, drivers/drm: Convert wait_on_atomic_t() usage to the new wait_var_event() API 2018-03-20 08:23:18 +01:00
drm_dp_dual_mode_helper.c drm/i915: Fix LSPCON TMDS output buffer enabling from low-power state 2018-04-18 16:33:14 +03:00
drm_dp_helper.c drm/dp: Correctly mask DP_TRAINING_AUX_RD_INTERVAL values for DP 1.4 2018-05-08 12:18:43 -07:00
drm_dp_mst_topology.c drm/dp/mst: Fix off-by-one typo when dump payload table 2018-03-28 09:12:16 +03:00
drm_drv.c drm: remove all control node code 2018-05-03 21:26:32 +02:00
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm/edid: Quirk Vive Pro VR headset non-desktop. 2018-06-02 09:46:49 +01:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_file.c
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Always do implicit sync 2018-06-20 14:43:13 +02:00
drm_gem.c drm/gem: Document that handle_create must be the last step 2018-03-26 17:42:06 +02:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c drm: Drop DRM_CONTROL_ALLOW from ioctls 2018-05-03 11:28:02 +02:00
drm_ioctl.c drm: Add DRM client cap for aspect-ratio 2018-05-11 09:05:03 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c gpu: drm/lease:: Use list_{next/prev}_entry instead of list_entry 2018-03-26 10:38:06 +02:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm/mm: Add a search-by-address variant to only inspect a single hole 2018-05-24 15:04:30 +01:00
drm_mode_config.c
drm_mode_object.c
drm_modes.c drm: Print bad user modes 2018-06-15 23:31:07 +03:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Convert to use match_string() helper 2018-05-10 11:36:25 -04:00
drm_panel.c drm/panel: Add device_link from panel device to DRM device 2018-05-18 11:22:06 +02:00
drm_pci.c
drm_plane_helper.c drm: Stop updating plane->crtc/fb/old_fb on atomic drivers 2018-06-11 20:22:44 +03:00
drm_plane.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_prime.c drm: Make the prime vmap/vunmap hooks optional. 2018-04-30 10:42:03 -07:00
drm_print.c drm: Reduce object size of DRM_DEV_<LEVEL> uses 2018-03-19 15:15:42 +01:00
drm_probe_helper.c Linux 4.16-rc7 2018-03-28 14:30:41 +10:00
drm_property.c drm: Don't pass the index to drm_property_add_enum() 2018-04-27 16:46:50 +03:00
drm_rect.c drm/rect: Handle rounding errors in drm_rect_clip_scaled, v3. 2018-05-04 11:09:54 +02:00
drm_scatter.c
drm_scdc_helper.c drm/scdc-helper: Convert errors into debug messages 2018-03-26 21:37:24 +03:00
drm_simple_kms_helper.c drm/simple-kms-helper: Plumb plane state to the enable hook 2018-03-28 19:19:32 +03:00
drm_syncobj.c Revert 190c462d5be19ba622a82f5fd0625087c870a1e6..bf3012ada1b2222e770de5c35c1bb16f73b3a01d" 2018-05-03 12:38:39 +02:00
drm_sysfs.c drm: remove all control node code 2018-05-03 21:26:32 +02:00
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c gpu: drm: drm_vm: Adding new typedef vm_fault_t 2018-05-29 08:58:46 +02:00
drm_vma_manager.c
Kconfig drm/selftests: Add drm helper selftest 2018-05-04 11:36:45 +02:00
Makefile drm/selftests: Rename the Kconfig option to CONFIG_DRM_DEBUG_SELFTEST 2018-05-04 11:36:34 +02:00