The intel_frontbuffer_get() and intel_frontbuffer_put() calls are routed
through intel_frontbuffer.c to i915_gem_object_frontbuffer.c. We might
as well call the functions directly, instead of going through display
code. This would only get worse with get/put being moved to the parent
interface.

To make this easier, convert overlay code from struct intel_frontbuffer
to struct i915_frontbuffer, and add a
i915_gem_object_frontbuffer_track() wrapper for clarity.

Signed-off-by: Jani Nikula <[email protected]>
---
 .../gpu/drm/i915/gem/i915_gem_object_frontbuffer.h   | 10 ++++++++++
 drivers/gpu/drm/i915/i915_overlay.c                  | 12 ++++++------
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h 
b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
index 1c250ce4ca66..46124048a59f 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
@@ -45,6 +45,16 @@ struct i915_frontbuffer 
*i915_gem_object_frontbuffer_get(struct drm_i915_gem_obj
 void i915_gem_object_frontbuffer_ref(struct i915_frontbuffer *front);
 void i915_gem_object_frontbuffer_put(struct i915_frontbuffer *front);
 
+static inline void i915_gem_object_frontbuffer_track(struct i915_frontbuffer 
*_old,
+                                                    struct i915_frontbuffer 
*_new,
+                                                    unsigned int 
frontbuffer_bits)
+{
+       struct intel_frontbuffer *old = _old ? &_old->base : NULL;
+       struct intel_frontbuffer *new = _new ? &_new->base : NULL;
+
+       intel_frontbuffer_track(old, new, frontbuffer_bits);
+}
+
 /**
  * i915_gem_object_frontbuffer_lookup - Look up the object's frontbuffer
  * @obj: The object whose frontbuffer to look up.
diff --git a/drivers/gpu/drm/i915/i915_overlay.c 
b/drivers/gpu/drm/i915/i915_overlay.c
index 28518dbb5b8e..f07a07b90b2a 100644
--- a/drivers/gpu/drm/i915/i915_overlay.c
+++ b/drivers/gpu/drm/i915/i915_overlay.c
@@ -30,7 +30,7 @@ struct i915_overlay {
        struct intel_context *context;
        struct i915_vma *vma;
        struct i915_vma *old_vma;
-       struct intel_frontbuffer *frontbuffer;
+       struct i915_frontbuffer *frontbuffer;
        /* register access */
        struct drm_i915_gem_object *reg_bo;
        void __iomem *regs;
@@ -138,18 +138,18 @@ static void i915_overlay_flip_prepare(struct i915_overlay 
*overlay,
                                      struct i915_vma *vma)
 {
        struct drm_i915_private *i915 = overlay->i915;
-       struct intel_frontbuffer *frontbuffer = NULL;
+       struct i915_frontbuffer *frontbuffer = NULL;
 
        drm_WARN_ON(&i915->drm, overlay->old_vma);
 
        if (vma)
-               frontbuffer = 
intel_frontbuffer_get(intel_bo_to_drm_bo(vma->obj));
+               frontbuffer = i915_gem_object_frontbuffer_get(vma->obj);
 
-       intel_frontbuffer_track(overlay->frontbuffer, frontbuffer,
-                               overlay->frontbuffer_bits);
+       i915_gem_object_frontbuffer_track(overlay->frontbuffer, frontbuffer,
+                                         overlay->frontbuffer_bits);
 
        if (overlay->frontbuffer)
-               intel_frontbuffer_put(overlay->frontbuffer);
+               i915_gem_object_frontbuffer_put(overlay->frontbuffer);
        overlay->frontbuffer = frontbuffer;
 
        overlay->old_vma = overlay->vma;
-- 
2.47.3

Reply via email to