Message ID | 20200921110210.21182-1-karthik.b.s@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | Asynchronous flip implementation for i915 | expand |
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
On 9/28/2020 5:48 PM, Ville Syrjälä wrote: > 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. > Thanks for the merge. Thanks, Karthik.B.S >> >> 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 >