This fbdev vma reuse hacks is a massive layering violation. It
really does not belong in the fb pinning code. And it's in the
way of properly abstracting this stuff, so kill it.
I don't think this hack even does anything useful because the
normal view will just use bo->ggtt_node when present, and the
fbdev bo will be permanenly pinned with xe_bo_create_pin_map_at_novm()
which does set up bo->ggtt_node. So we should never end up
rebuilding the PTEs for the fbdev bo, even without the reuse hack.
v2: Pimp the commit message a a bit (Jani)
v3: Also nuke intel_fbdev_vma_pointer()
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260508143426.26504-9-ville.syrjala@linux.intel.com
return fbdev->fb;
}
-struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev)
-{
- return fbdev ? fbdev->vma : NULL;
-}
-
void intel_fbdev_get_map(struct intel_display *display, struct iosys_map *map)
{
struct intel_fbdev *fbdev = display->fbdev.fbdev;
.fbdev_probe = intel_fbdev_driver_fbdev_probe
void intel_fbdev_setup(struct intel_display *display);
struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev);
-struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev);
void intel_fbdev_get_map(struct intel_display *display, struct iosys_map *map);
#else
#define INTEL_FBDEV_DRIVER_OPS \
{
return NULL;
}
-
-static inline struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev)
-{
- return NULL;
-}
-
static inline void intel_fbdev_get_map(struct intel_display *display, struct iosys_map *map)
{
}
#include "intel_display_types.h"
#include "intel_fb.h"
#include "intel_fb_pin.h"
-#include "intel_fbdev.h"
#include "xe_bo.h"
#include "xe_device.h"
#include "xe_display_vma.h"
static bool reuse_vma(struct intel_plane_state *new_plane_state,
const struct intel_plane_state *old_plane_state)
{
- struct intel_framebuffer *fb = to_intel_framebuffer(new_plane_state->hw.fb);
struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
- struct xe_device *xe = to_xe_device(fb->base.dev);
- struct intel_display *display = xe->display;
struct i915_vma *vma;
if (old_plane_state->hw.fb == new_plane_state->hw.fb &&
goto found;
}
- if (fb == intel_fbdev_framebuffer(display->fbdev.fbdev)) {
- vma = intel_fbdev_vma_pointer(display->fbdev.fbdev);
- if (vma)
- goto found;
- }
-
return false;
found: