71 lines · 1.5 KB · C
RawDownload
// SPDX-License-Identifier: MIT/* Copyright © 2026 Intel Corporation */ #include <drm/drm_gem.h>#include <drm/intel/display_parent_interface.h> #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,};