Commit 67a98f7e authored by Maarten Lankhorst's avatar Maarten Lankhorst
Browse files

drm/xe/display: Re-use display vmas when possible

i915 has this really nice, infrastructure where everything becomes
complicated, GGTT needs eviction, etc..

Lets not do that, and make the dumbest possible interface instead.
Try to retrieve the VMA from old_plane_state, or intel_fbdev if kernel
fb.

Link: https://patchwork.freedesktop.org/patch/msgid/20241206182032.196307-1-dev@lankhorst.se


Signed-off-by: default avatarMaarten Lankhorst <dev@lankhorst.se>
Reviewed-by: default avatarAnimesh Manna <animesh.manna@intel.com>
Tested-by: default avatarJani Saarinen <jani.saarinen@intel.com>
parent 2499212e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1135,7 +1135,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
	if (!obj)
		return 0;

	ret = intel_plane_pin_fb(new_plane_state);
	ret = intel_plane_pin_fb(new_plane_state, old_plane_state);
	if (ret)
		return ret;

+1 −1
Original line number Diff line number Diff line
@@ -865,7 +865,7 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
	if (ret)
		goto out_free;

	ret = intel_plane_pin_fb(new_plane_state);
	ret = intel_plane_pin_fb(new_plane_state, old_plane_state);
	if (ret)
		goto out_free;

+2 −1
Original line number Diff line number Diff line
@@ -252,7 +252,8 @@ intel_plane_fb_min_phys_alignment(const struct intel_plane_state *plane_state)
	return plane->min_alignment(plane, fb, 0);
}

int intel_plane_pin_fb(struct intel_plane_state *plane_state)
int intel_plane_pin_fb(struct intel_plane_state *plane_state,
		       const struct intel_plane_state *old_plane_state)
{
	struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
	const struct intel_framebuffer *fb =
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,

void intel_fb_unpin_vma(struct i915_vma *vma, unsigned long flags);

int intel_plane_pin_fb(struct intel_plane_state *plane_state);
int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
		       const struct intel_plane_state *old_plane_state);
void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state);

#endif
+5 −0
Original line number Diff line number Diff line
@@ -695,3 +695,8 @@ struct intel_framebuffer *intel_fbdev_framebuffer(struct intel_fbdev *fbdev)

	return to_intel_framebuffer(fbdev->helper.fb);
}

struct i915_vma *intel_fbdev_vma_pointer(struct intel_fbdev *fbdev)
{
	return fbdev ? fbdev->vma : NULL;
}
Loading