drm/i915/overlay: convert from struct intel_frontbuffer to i915_frontbuffer

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>
This commit is contained in:
Jani Nikula 2026-03-02 20:17:35 +02:00
parent e18eec6c29
commit df88ba8904
2 changed files with 16 additions and 6 deletions

View 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.

View 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;