From: Ville Syrjälä <[email protected]> After upcoming intel_frontbuffer lifetime related changed we won't need intel_frontbuffer::obj for anything apart from getting at the display. Add a direct pointer for that instead so that the obj pointer can be completely eliminated.
Signed-off-by: Ville Syrjälä <[email protected]> --- .../gpu/drm/i915/display/intel_frontbuffer.c | 19 ++++++++----------- .../gpu/drm/i915/display/intel_frontbuffer.h | 1 + 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c index 34bbf18f3c08..abe7d29781e1 100644 --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c @@ -128,7 +128,7 @@ void __intel_fb_invalidate(struct intel_frontbuffer *front, enum fb_op_origin origin, unsigned int frontbuffer_bits) { - struct intel_display *display = to_intel_display(front->obj->dev); + struct intel_display *display = front->display; if (origin == ORIGIN_CS) { spin_lock(&display->fb_tracking.lock); @@ -148,7 +148,7 @@ void __intel_fb_flush(struct intel_frontbuffer *front, enum fb_op_origin origin, unsigned int frontbuffer_bits) { - struct intel_display *display = to_intel_display(front->obj->dev); + struct intel_display *display = front->display; if (origin == ORIGIN_DIRTYFB) intel_bo_frontbuffer_flush_for_display(front); @@ -215,12 +215,12 @@ static void frontbuffer_retire(struct i915_active *ref) } static void frontbuffer_release(struct kref *ref) - __releases(&to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock) + __releases(&front->display->fb_tracking.frontbuffer_lock) { struct intel_frontbuffer *ret, *front = container_of(ref, typeof(*front), ref); + struct intel_display *display = front->display; struct drm_gem_object *obj = front->obj; - struct intel_display *display = to_intel_display(obj->dev); drm_WARN_ON(display->drm, atomic_read(&front->bits)); @@ -248,6 +248,7 @@ intel_frontbuffer_get(struct drm_gem_object *obj) if (!front) return NULL; + front->display = display; front->obj = obj; kref_init(&front->ref); atomic_set(&front->bits, 0); @@ -269,7 +270,7 @@ void intel_frontbuffer_put(struct intel_frontbuffer *front) { kref_put_lock(&front->ref, frontbuffer_release, - &to_intel_display(front->obj->dev)->fb_tracking.frontbuffer_lock); + &front->display->fb_tracking.frontbuffer_lock); } /** @@ -298,17 +299,13 @@ void intel_frontbuffer_track(struct intel_frontbuffer *old, BUILD_BUG_ON(I915_MAX_PLANES > INTEL_FRONTBUFFER_BITS_PER_PIPE); if (old) { - struct intel_display *display = to_intel_display(old->obj->dev); - - drm_WARN_ON(display->drm, + drm_WARN_ON(old->display->drm, !(atomic_read(&old->bits) & frontbuffer_bits)); atomic_andnot(frontbuffer_bits, &old->bits); } if (new) { - struct intel_display *display = to_intel_display(new->obj->dev); - - drm_WARN_ON(display->drm, + drm_WARN_ON(new->display->drm, atomic_read(&new->bits) & frontbuffer_bits); atomic_or(frontbuffer_bits, &new->bits); } diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h b/drivers/gpu/drm/i915/display/intel_frontbuffer.h index 293c2d0152d6..ff2a6ac75a34 100644 --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h @@ -43,6 +43,7 @@ enum fb_op_origin { struct intel_frontbuffer { struct kref ref; + struct intel_display *display; atomic_t bits; struct i915_active write; struct drm_gem_object *obj; -- 2.49.1
