]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/overlay: convert from struct intel_frontbuffer to i915_frontbuffer
authorJani Nikula <jani.nikula@intel.com>
Mon, 2 Mar 2026 18:17:35 +0000 (20:17 +0200)
committerJani Nikula <jani.nikula@intel.com>
Wed, 11 Mar 2026 09:32:10 +0000 (11:32 +0200)
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.

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
Link: https://patch.msgid.link/829b304a6451e80fbce554bdc7788077245e803a.1772475391.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/gem/i915_gem_object_frontbuffer.h
drivers/gpu/drm/i915/i915_overlay.c

index 1c250ce4ca66cc5b6d6654f17578ba4d4dac1e0d..46124048a59fb1b2fc5e590a47db2e238011522c 100644 (file)
@@ -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.
index 04d5ad6aba5ab33eee3e9f63e1e56ed4fc2ae1f4..c2d712bd2b0da5bec8f59a665fec2d959062cffd 100644 (file)
@@ -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;