intel_bo_frontbuffer_flush_for_display() is a bit too low level
to be directly in the high level dirtyfb code. Move the calls
into intel_frontbuffer_flush().
There is a slight behavioural change here in that we now skip
the flush if the bo is not a current scanout buffer (front->bits
== 0). But that is fine as the flush will eventually happen via
the fb pinning code if/when the bo becomes a scanout buffer again.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251016185408.22735-6-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
return ret;
flush:
- intel_bo_frontbuffer_flush_for_display(front);
intel_frontbuffer_flush(front, ORIGIN_DIRTYFB);
return ret;
}
{
struct intel_display *display = to_intel_display(front->obj->dev);
+ if (origin == ORIGIN_DIRTYFB)
+ intel_bo_frontbuffer_flush_for_display(front);
+
if (origin == ORIGIN_CS) {
spin_lock(&display->fb_tracking.lock);
/* Filter out new bits since rendering started. */
struct intel_frontbuffer *front =
container_of(work, struct intel_frontbuffer, flush_work);
- intel_bo_frontbuffer_flush_for_display(front);
intel_frontbuffer_flush(front, ORIGIN_DIRTYFB);
intel_frontbuffer_put(front);
}