Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4781f20f authored by Brian Rogers's avatar Brian Rogers Committed by Eric Anholt
Browse files

drm/i915: Don't call intel_update_fbc from intel_crtc_cursor_set



Commit 74dff282 exposed this unnecessary call by causing a change in
the failure path on i965 where framebuffer compression will be turned
on and off on every cursor update. If you don't have the xf86-video-intel
fix to avoid the blinking cursor effect, this is very slow.

Symptoms were a far more noticeable cursor blink with every cursor image
change combined with severe slowdown for animated cursors.

Signed-off-by: default avatarBrian Rogers <brian@xyzw.org>
Acked-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent 17d857be
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -3095,7 +3095,6 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
	struct drm_gem_object *bo;
	struct drm_gem_object *bo;
	struct drm_i915_gem_object *obj_priv;
	struct drm_i915_gem_object *obj_priv;
	int pipe = intel_crtc->pipe;
	int pipe = intel_crtc->pipe;
	int plane = intel_crtc->plane;
	uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR;
	uint32_t control = (pipe == 0) ? CURACNTR : CURBCNTR;
	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
	uint32_t base = (pipe == 0) ? CURABASE : CURBBASE;
	uint32_t temp = I915_READ(control);
	uint32_t temp = I915_READ(control);
@@ -3182,9 +3181,6 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
		drm_gem_object_unreference(intel_crtc->cursor_bo);
		drm_gem_object_unreference(intel_crtc->cursor_bo);
	}
	}


	if ((IS_I965G(dev) || plane == 0))
		intel_update_fbc(crtc, &crtc->mode);

	mutex_unlock(&dev->struct_mutex);
	mutex_unlock(&dev->struct_mutex);


	intel_crtc->cursor_addr = addr;
	intel_crtc->cursor_addr = addr;