// SPDX-License-Identifier: MIT /* Copyright © 2026 Intel Corporation */ #include #include #include "intel_frontbuffer.h" #include "xe_frontbuffer.h" struct xe_frontbuffer { struct intel_frontbuffer base; struct drm_gem_object *obj; struct kref ref; }; static struct intel_frontbuffer *xe_frontbuffer_get(struct drm_gem_object *obj) { struct xe_frontbuffer *front; front = kmalloc_obj(*front); if (!front) return NULL; intel_frontbuffer_init(&front->base, obj->dev); kref_init(&front->ref); drm_gem_object_get(obj); front->obj = obj; return &front->base; } static void xe_frontbuffer_ref(struct intel_frontbuffer *_front) { struct xe_frontbuffer *front = container_of(_front, typeof(*front), base); kref_get(&front->ref); } static void frontbuffer_release(struct kref *ref) { struct xe_frontbuffer *front = container_of(ref, typeof(*front), ref); intel_frontbuffer_fini(&front->base); drm_gem_object_put(front->obj); kfree(front); } static void xe_frontbuffer_put(struct intel_frontbuffer *_front) { struct xe_frontbuffer *front = container_of(_front, typeof(*front), base); kref_put(&front->ref, frontbuffer_release); } static void xe_frontbuffer_flush_for_display(struct intel_frontbuffer *front) { } const struct intel_display_frontbuffer_interface xe_display_frontbuffer_interface = { .get = xe_frontbuffer_get, .ref = xe_frontbuffer_ref, .put = xe_frontbuffer_put, .flush_for_display = xe_frontbuffer_flush_for_display, };