[PATCH v10 0/8] Asynchronous flip implementation for i915

Ville Syrjälä ville.syrjala at linux.intel.com
Mon Sep 28 12:18:28 UTC 2020


On Mon, Sep 21, 2020 at 04:32:02PM +0530, Karthik B S wrote:
> Without async flip support in the kernel, fullscreen apps where game
> resolution is equal to the screen resolution, must perform an extra blit
> per frame prior to flipping.
> 
> Asynchronous page flips will also boost the FPS of Mesa benchmarks.
> 
> v2: -Few patches have been squashed and patches have been shuffled as
>      per the reviews on the previous version.
> 
> v3: -Few patches have been squashed and patches have been shuffled as
>      per the reviews on the previous version.
> 
> v4: -Made changes to fix the sequence and time stamp issue as per the
>      comments received on the previous version.
>     -Timestamps are calculated using the flip done time stamp and current
>      timestamp. Here I915_MODE_FLAG_GET_SCANLINE_FROM_TIMESTAMP flag is used
>      for timestamp calculations.
>     -Event is sent from the interrupt handler immediately using this
>      updated timestamps and sequence.
>     -Added more state checks as async flip should only allow change in plane
>      surface address and nothing else should be allowed to change.
>     -Added a separate plane hook for async flip.
>     -Need to find a way to reject fbc enabling if it comes as part of this
>      flip as bspec states that changes to FBC are not allowed.
> 
> v5: -Fixed the Checkpatch and sparse warnings.
> 
> v6: -Reverted back to the old timestamping code as per the feedback received.
>     -Added documentation.
> 
> v7: -Changes in intel_atomic_check_async()
>     -Add vfunc for skl_program_async_surface_address()
> 
> v8: -Add WA for older platforms with double buffered
>      async address update enable bit.
> 
> v9: -Changes as per feedback received on previous version.
> 
> v10: -Changes as per feedback received on previous version.

Everything seems good, so pushed the series to dinq.  Thanks.

Gave this a little test run on my cfl as well. At first it didn't
kick in, but then I remebered that I'm running X with modifiers
enabled so I was getting compression instead. After disabling
modifiers I got plain old X-tile again and did see async flips
happening.

> 
> Karthik B S (8):
>   drm/i915: Add enable/disable flip done and flip done handler
>   drm/i915: Add support for async flips in I915
>   drm/i915: Add checks specific to async flips
>   drm/i915: Do not call drm_crtc_arm_vblank_event in async flips
>   drm/i915: Add dedicated plane hook for async flip case
>   drm/i915: WA for platforms with double buffered address update enable
>     bit
>   Documentation/gpu: Add asynchronous flip documentation for i915
>   drm/i915: Enable async flips in i915
> 
>  Documentation/gpu/i915.rst                    |   6 +
>  .../gpu/drm/i915/display/intel_atomic_plane.c |   6 +-
>  drivers/gpu/drm/i915/display/intel_display.c  | 199 ++++++++++++++++++
>  .../drm/i915/display/intel_display_types.h    |   3 +
>  drivers/gpu/drm/i915/display/intel_sprite.c   |  30 +++
>  drivers/gpu/drm/i915/i915_irq.c               |  52 +++++
>  drivers/gpu/drm/i915/i915_irq.h               |   3 +
>  drivers/gpu/drm/i915/i915_reg.h               |   1 +
>  8 files changed, 299 insertions(+), 1 deletion(-)
> 
> -- 
> 2.22.0

-- 
Ville Syrjälä
Intel


More information about the dri-devel mailing list