[RFC PATCH 00/22] Remove/minimize frontbuffer tracking
Jouni Högander
jouni.hogander at intel.com
Fri Mar 24 08:07:20 UTC 2023
We are following a new strategy to rely purely on dirtyfb ioctl on
frontbuffer rendering. To have features like PSR, FBC and DRRS working
properly user-space needs to call dirtyfb when it completes
frontbuffer rendering.
This patch set is minimizing frontbuffer tracking implementation into
three interfaces:
intel_frontbuffer_flush:
This is supposed to be called from dirtyfb ioctl.
frontbuffer_flush:
This is purely for intel_overlay.
intel_frontbuffer_track:
This is called as a part of atomic commit to identify framebuffers
that are currently frontbuffers.
Implicit/Explicit Sync and DMA Fences
Patches are adding wait of DMA fences into dirtyfb
ioctl. This is solving problem with PSR, FBC, DRRS and GPU frontbuffer
rendering with i915/gem. For Xe and explicit sync this is assumed to
work if user space is importing fence using
dma_buf_import_sync_file. Questionable in this change is whether
it's ok to block dirtyfb ioctl until DMA fences are completed.
Legacy Cursor Updates
Legacy cursor updates are converted to use generic
drm_atomic_helper_update_plane as other planes. This is somehow
questionable and is breaking our legacy cursor igt testcases. From
usage point of view there is no problem observed in my testing. The
problem with legacy cursor igt testcases is that they are expecting
> 15000 cursor over one flip. We still have have 40 - 120 updates
which is just fine from usability point of view.
PSR, FBC, DRRS
Lots of code related to frontbuffer tracking is removed from PSR,
FBC, DRRS. Removed code is related to frontbuffer ivalidate which is
not used anymore as we are purely relying on dirtyfb. Also all
frontbuffer bit tracking is removed from the code related to these
features.
FBDev
Frontbuffer tracking code is completely removed from
intel_fbdev. This is not needed as our dirtyfb callback is called by
generic fbdev code on update. Anyways fbdev emulation is not really
used for anything else than fb console and that remains usable based
on testing. Also IGT testcases are passing. We could consider moving
into generic fbdev emulation as well. That would need a bit more
work as we would need to implement mechanism to re-use bios
framebuffers for fb console.
Jouni Högander (20):
drm/i915: Wait dma fences in dirtyfb callback
drm/i915/fbdev: Remove frontbuffer tracking calls
drm/i915: Remove custom legacy cursor update
drm/i915/psr: Use full frame updates for legacy cursor updates
drm/i915/display: Remove intel_frontbuffer_invalidate
drm/i915/display: Remove frontbuffer tracking calls from atomic commit
drm/i915/display: Add a new frontbuffer tracking interface for
intel_overlay
drm/i915/display: Remove unused frontbuffer references from
intel_overlay
drm/i915/display: Remove unused frontbuffer tracking interfaces
drm/i915/fbc: Remove invalidate callback
drm/i915/fbc: Remove origin from frontbuffer flush callback
drm/i915/psr: Remove invalidate callback
drm/i915/psr: Remove origin from frontbuffer flush callback
drm/i915/display: Remove origin from frontbuffer tracking interface
drm/i915/display: Move checking frontbuffer bits
drm/i915/display: Remove fb_op_origin enum
drm/i915/psr: Remove frontbuffer bit track keeping from PSR
drm/i915/fbc: Remove frontbuffer bits from flush callback
drm/i915/drrs: Remove drrs invalidate callback
drm/i915/drrs: DRRS doesn't really need frontbuffer bits
Maarten Lankhorst (2):
drm/i915: Remove gem and overlay frontbuffer tracking
drm/i915/display: Neuter frontbuffer tracking harder
drivers/gpu/drm/i915/display/i9xx_plane.c | 1 +
drivers/gpu/drm/i915/display/intel_cursor.c | 146 +-----------
drivers/gpu/drm/i915/display/intel_display.c | 9 +-
.../drm/i915/display/intel_display_trace.h | 31 +--
.../drm/i915/display/intel_display_types.h | 12 +-
drivers/gpu/drm/i915/display/intel_drrs.c | 69 +-----
drivers/gpu/drm/i915/display/intel_drrs.h | 5 +-
drivers/gpu/drm/i915/display/intel_fb.c | 19 +-
drivers/gpu/drm/i915/display/intel_fb_pin.c | 6 -
drivers/gpu/drm/i915/display/intel_fbc.c | 62 +----
drivers/gpu/drm/i915/display/intel_fbc.h | 3 +-
drivers/gpu/drm/i915/display/intel_fbdev.c | 62 +----
.../gpu/drm/i915/display/intel_frontbuffer.c | 220 +-----------------
.../gpu/drm/i915/display/intel_frontbuffer.h | 112 +--------
drivers/gpu/drm/i915/display/intel_overlay.c | 24 +-
.../drm/i915/display/intel_plane_initial.c | 3 +-
drivers/gpu/drm/i915/display/intel_psr.c | 205 +---------------
drivers/gpu/drm/i915/display/intel_psr.h | 8 +-
drivers/gpu/drm/i915/display/intel_sprite.c | 1 +
.../drm/i915/display/skl_universal_plane.c | 1 +
drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 4 -
drivers/gpu/drm/i915/gem/i915_gem_domain.c | 7 -
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 -
drivers/gpu/drm/i915/gem/i915_gem_object.c | 25 --
drivers/gpu/drm/i915/gem/i915_gem_object.h | 22 --
drivers/gpu/drm/i915/gem/i915_gem_phys.c | 4 -
drivers/gpu/drm/i915/i915_driver.c | 1 +
drivers/gpu/drm/i915/i915_gem.c | 8 -
drivers/gpu/drm/i915/i915_gem_gtt.c | 1 -
drivers/gpu/drm/i915/i915_vma.c | 12 -
30 files changed, 76 insertions(+), 1009 deletions(-)
--
2.34.1
More information about the Intel-gfx-trybot
mailing list