Skip to content

Commit

Permalink
drm/i915/display: Drop unnecessary frontbuffer flushes
Browse files Browse the repository at this point in the history
This unnecessary flushes are hurting power-savings are it causes
features like PSR, FBC and DRRS to disable it self to handle
frontbuffer rendering, below some explanation of why each removed
call is not necessary.

The flush in intel_prepare_plane_fb() is not required as framebuffer
will be flipped and power-saving features do the proper flip handling
in hardware.

intel_find_initial_plane_obj() flush is not required because it is
only executed during driver load and at this point the power-saving
features are not even enabled.

And the last one intelfb_create(), is also not required as at this
point the fbdev was just allocated, userspace will draw on
it what will trigger frontbuffer invalidates and flushes later on.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210930001409.254817-3-jose.souza@intel.com
  • Loading branch information
José Roberto de Souza committed Sep 30, 2021
1 parent 1f61f06 commit 5da579c
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 5 deletions.
3 changes: 0 additions & 3 deletions drivers/gpu/drm/i915/display/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -1711,8 +1711,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
plane_state->uapi.crtc = &crtc->base;
intel_plane_copy_uapi_to_hw_state(plane_state, plane_state, crtc);

intel_frontbuffer_flush(to_intel_frontbuffer(fb), ORIGIN_DIRTYFB);

atomic_or(plane->frontbuffer_bit, &to_intel_frontbuffer(fb)->bits);
}

Expand Down Expand Up @@ -10814,7 +10812,6 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
return ret;

i915_gem_object_wait_priority(obj, 0, &attr);
i915_gem_object_flush_frontbuffer(obj, ORIGIN_DIRTYFB);

if (!new_plane_state->uapi.fence) { /* implicit fencing */
struct dma_fence *fence;
Expand Down
2 changes: 0 additions & 2 deletions drivers/gpu/drm/i915/display/intel_fbdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,6 @@ static int intelfb_create(struct drm_fb_helper *helper,
goto out_unlock;
}

intel_frontbuffer_flush(to_frontbuffer(ifbdev), ORIGIN_DIRTYFB);

info = drm_fb_helper_alloc_fbi(helper);
if (IS_ERR(info)) {
drm_err(&dev_priv->drm, "Failed to allocate fb_info\n");
Expand Down

0 comments on commit 5da579c

Please sign in to comment.