Commit 37a6ed2c authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/{i915, xe}/bo: move display bo calls to parent interface



Continue i915 and xe separation from display by moving the bo calls to
the display parent interface. Instead of adding all these functions to
intel_parent.[ch], reuse the now vacated intel_bo.[ch], and avoid mass
renames to calls of these functions. This is similar to
intel_display_rpm.[ch].

Make many of the hooks optional to avoid having to implement dummy
functions in xe. Indeed now we can remove many of the existing dummy
functions.

Reviewed-by: default avatarSuraj Kandpal <suraj.kandpal@intel.com>
Link: https://patch.msgid.link/7899eef2ccf0cd603df69099df065226a0df917b.1773238670.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 49464bb6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -240,6 +240,7 @@ i915-y += \
	display/intel_atomic.o \
	display/intel_audio.o \
	display/intel_bios.o \
	display/intel_bo.o \
	display/intel_bw.o \
	display/intel_casf.o \
	display/intel_cdclk.o \
+66 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: MIT
/* Copyright © 2026 Intel Corporation */

#include <drm/drm_gem.h>
#include <drm/intel/display_parent_interface.h>

#include "intel_bo.h"
#include "intel_display_core.h"
#include "intel_display_types.h"

bool intel_bo_is_tiled(struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->is_tiled && display->parent->bo->is_tiled(obj);
}

bool intel_bo_is_userptr(struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->is_userptr && display->parent->bo->is_userptr(obj);
}

bool intel_bo_is_shmem(struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->is_shmem && display->parent->bo->is_shmem(obj);
}

bool intel_bo_is_protected(struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->is_protected(obj);
}

int intel_bo_key_check(struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->key_check(obj);
}

int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->fb_mmap(obj, vma);
}

int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
{
	struct intel_display *display = to_intel_display(obj->dev);

	return display->parent->bo->read_from_page(obj, offset, dst, size);
}

void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
{
	struct intel_display *display = to_intel_display(obj->dev);

	if (display->parent->bo->describe)
		display->parent->bo->describe(m, obj);
}
+22 −10
Original line number Diff line number Diff line
@@ -2,51 +2,63 @@
/* Copyright © 2024 Intel Corporation */

#include <drm/drm_panic.h>

#include "display/intel_bo.h"
#include <drm/intel/display_parent_interface.h>

#include "gem/i915_gem_mman.h"
#include "gem/i915_gem_object.h"
#include "gem/i915_gem_object_frontbuffer.h"
#include "pxp/intel_pxp.h"

#include "i915_bo.h"
#include "i915_debugfs.h"

bool intel_bo_is_tiled(struct drm_gem_object *obj)
static bool i915_bo_is_tiled(struct drm_gem_object *obj)
{
	return i915_gem_object_is_tiled(to_intel_bo(obj));
}

bool intel_bo_is_userptr(struct drm_gem_object *obj)
static bool i915_bo_is_userptr(struct drm_gem_object *obj)
{
	return i915_gem_object_is_userptr(to_intel_bo(obj));
}

bool intel_bo_is_shmem(struct drm_gem_object *obj)
static bool i915_bo_is_shmem(struct drm_gem_object *obj)
{
	return i915_gem_object_is_shmem(to_intel_bo(obj));
}

bool intel_bo_is_protected(struct drm_gem_object *obj)
static bool i915_bo_is_protected(struct drm_gem_object *obj)
{
	return i915_gem_object_is_protected(to_intel_bo(obj));
}

int intel_bo_key_check(struct drm_gem_object *obj)
static int i915_bo_key_check(struct drm_gem_object *obj)
{
	return intel_pxp_key_check(obj, false);
}

int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
static int i915_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
{
	return i915_gem_fb_mmap(to_intel_bo(obj), vma);
}

int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
static int i915_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size)
{
	return i915_gem_object_read_from_page(to_intel_bo(obj), offset, dst, size);
}

void intel_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
static void i915_bo_describe(struct seq_file *m, struct drm_gem_object *obj)
{
	i915_debugfs_describe_obj(m, to_intel_bo(obj));
}

const struct intel_display_bo_interface i915_display_bo_interface = {
	.is_tiled = i915_bo_is_tiled,
	.is_userptr = i915_bo_is_userptr,
	.is_shmem = i915_bo_is_shmem,
	.is_protected = i915_bo_is_protected,
	.key_check = i915_bo_key_check,
	.fb_mmap = i915_bo_fb_mmap,
	.read_from_page = i915_bo_read_from_page,
	.describe = i915_bo_describe,
};
+9 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: MIT */
/* Copyright © 2026 Intel Corporation */

#ifndef __I915_BO_H__
#define __I915_BO_H__

extern const struct intel_display_bo_interface i915_display_bo_interface;

#endif /* __I915_BO_H__ */
+2 −0
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@
#include "pxp/intel_pxp_debugfs.h"
#include "pxp/intel_pxp_pm.h"

#include "i915_bo.h"
#include "i915_debugfs.h"
#include "i915_display_pc8.h"
#include "i915_dpt.h"
@@ -765,6 +766,7 @@ static bool vgpu_active(struct drm_device *drm)
}

static const struct intel_display_parent_interface parent = {
	.bo = &i915_display_bo_interface,
	.dpt = &i915_display_dpt_interface,
	.dsb = &i915_display_dsb_interface,
	.frontbuffer = &i915_display_frontbuffer_interface,
Loading