From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 2/4] drm/i915: add VMA to parent interface
Date: Tue, 3 Mar 2026 18:11:11 +0200 [thread overview]
Message-ID: <aacIH_3FjC7azuC9@intel.com> (raw)
In-Reply-To: <036f4b2d20cc1b0a7ab814beb5bb914c53b6eb53.1772212579.git.jani.nikula@intel.com>
On Fri, Feb 27, 2026 at 07:17:12PM +0200, Jani Nikula wrote:
> It's unclear what the direction of the VMA abstraction in the parent
> interface should be, but convert i915_vma_fence_id() to parent interface
> for starters. This paves the way for making struct i915_vma opaque
> towards display.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_fbc.c | 5 ++---
> drivers/gpu/drm/i915/display/intel_parent.c | 9 +++++++++
> drivers/gpu/drm/i915/display/intel_parent.h | 3 +++
> drivers/gpu/drm/i915/i915_driver.c | 1 +
> drivers/gpu/drm/i915/i915_vma.c | 10 ++++++++++
> drivers/gpu/drm/i915/i915_vma.h | 7 ++-----
> drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h | 2 --
> include/drm/intel/display_parent_interface.h | 7 +++++++
> 8 files changed, 34 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 91de38379282..3e9b3e532499 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -45,7 +45,6 @@
> #include <drm/drm_fourcc.h>
> #include <drm/drm_print.h>
>
> -#include "i915_vma.h"
> #include "i9xx_plane_regs.h"
> #include "intel_de.h"
> #include "intel_display_device.h"
> @@ -1463,7 +1462,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
> !intel_fbc_has_fences(display));
>
> if (plane_state->flags & PLANE_HAS_FENCE)
> - fbc_state->fence_id = i915_vma_fence_id(plane_state->ggtt_vma);
> + fbc_state->fence_id = intel_parent_vma_fence_id(display, plane_state->ggtt_vma);
Hmm. I think I'd rather just return the fence from the pin stuff
and track it in the plane state, and then nuke plane_state->flags
since it'll no longer be needed.
> else
> fbc_state->fence_id = -1;
>
> @@ -1490,7 +1489,7 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
> */
> return DISPLAY_VER(display) >= 9 ||
> (plane_state->flags & PLANE_HAS_FENCE &&
> - i915_vma_fence_id(plane_state->ggtt_vma) != -1);
> + intel_parent_vma_fence_id(display, plane_state->ggtt_vma) != -1);
> }
>
> static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c
> index 89f78ca1cd15..0c5962cb2f6d 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.c
> +++ b/drivers/gpu/drm/i915/display/intel_parent.c
> @@ -317,6 +317,15 @@ void intel_parent_stolen_node_free(struct intel_display *display, const struct i
> display->parent->stolen->node_free(node);
> }
>
> +/* vma */
> +int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma)
> +{
> + if (!display->parent->vma)
> + return -1;
> +
> + return display->parent->vma->fence_id(vma);
> +}
> +
> /* generic */
> void intel_parent_fence_priority_display(struct intel_display *display, struct dma_fence *fence)
> {
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.h b/drivers/gpu/drm/i915/display/intel_parent.h
> index 2317482ef072..6e7d09133aee 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.h
> +++ b/drivers/gpu/drm/i915/display/intel_parent.h
> @@ -102,6 +102,9 @@ u64 intel_parent_stolen_node_size(struct intel_display *display, const struct in
> struct intel_stolen_node *intel_parent_stolen_node_alloc(struct intel_display *display);
> void intel_parent_stolen_node_free(struct intel_display *display, const struct intel_stolen_node *node);
>
> +/* vma */
> +int intel_parent_vma_fence_id(struct intel_display *display, const struct i915_vma *vma);
> +
> /* generic */
> bool intel_parent_has_auxccs(struct intel_display *display);
> bool intel_parent_has_fenced_regions(struct intel_display *display);
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 5f77e891604d..18f912043f90 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -775,6 +775,7 @@ static const struct intel_display_parent_interface parent = {
> .rpm = &i915_display_rpm_interface,
> .rps = &i915_display_rps_interface,
> .stolen = &i915_display_stolen_interface,
> + .vma = &i915_display_vma_interface,
>
> .fence_priority_display = fence_priority_display,
> .has_auxccs = has_auxccs,
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index afc192d9931b..6a3a4d4244dc 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -27,6 +27,7 @@
>
> #include <drm/drm_gem.h>
> #include <drm/drm_print.h>
> +#include <drm/intel/display_parent_interface.h>
>
> #include "display/intel_fb.h"
> #include "display/intel_frontbuffer.h"
> @@ -2332,3 +2333,12 @@ int __init i915_vma_module_init(void)
>
> return 0;
> }
> +
> +static int i915_vma_fence_id(const struct i915_vma *vma)
> +{
> + return vma->fence ? vma->fence->id : -1;
> +}
> +
> +const struct intel_display_vma_interface i915_display_vma_interface = {
> + .fence_id = i915_vma_fence_id,
> +};
> diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h
> index 8054047840aa..fa2d9b429db6 100644
> --- a/drivers/gpu/drm/i915/i915_vma.h
> +++ b/drivers/gpu/drm/i915/i915_vma.h
> @@ -404,11 +404,6 @@ i915_vma_unpin_fence(struct i915_vma *vma)
> __i915_vma_unpin_fence(vma);
> }
>
> -static inline int i915_vma_fence_id(const struct i915_vma *vma)
> -{
> - return vma->fence ? vma->fence->id : -1;
> -}
> -
> void i915_vma_parked(struct intel_gt *gt);
>
> static inline bool i915_vma_is_scanout(const struct i915_vma *vma)
> @@ -481,4 +476,6 @@ int i915_vma_module_init(void);
> I915_SELFTEST_DECLARE(int i915_vma_get_pages(struct i915_vma *vma));
> I915_SELFTEST_DECLARE(void i915_vma_put_pages(struct i915_vma *vma));
>
> +extern const struct intel_display_vma_interface i915_display_vma_interface;
> +
> #endif
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> index c4b5adaaa99a..da1d97b48fee 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> @@ -26,8 +26,6 @@ struct i915_vma {
> struct xe_ggtt_node *node;
> };
>
> -#define i915_vma_fence_id(vma) -1
> -
> static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
> {
> return xe_ggtt_node_addr(vma->node);
> diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
> index b4b0f58ae3ee..d02ab7cc1c92 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -149,6 +149,10 @@ struct intel_display_stolen_interface {
> void (*node_free)(const struct intel_stolen_node *node);
> };
>
> +struct intel_display_vma_interface {
> + int (*fence_id)(const struct i915_vma *vma);
> +};
> +
> /**
> * struct intel_display_parent_interface - services parent driver provides to display
> *
> @@ -198,6 +202,9 @@ struct intel_display_parent_interface {
> /** @stolen: Stolen memory. */
> const struct intel_display_stolen_interface *stolen;
>
> + /** @vma: VMA interface. Optional. */
> + const struct intel_display_vma_interface *vma;
> +
> /* Generic independent functions */
> struct {
> /** @fence_priority_display: Set display priority. Optional. */
> --
> 2.47.3
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2026-03-03 16:11 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-27 17:17 [PATCH 0/4] drm/i915, drm/xe: clean up i915_vma.h usage for display Jani Nikula
2026-02-27 17:17 ` [PATCH 1/4] drm/i915/fbdev: stop debug logging i915_ggtt_offset() Jani Nikula
2026-03-02 20:06 ` Michał Grzelak
2026-03-03 14:16 ` Jani Nikula
2026-02-27 17:17 ` [PATCH 2/4] drm/i915: add VMA to parent interface Jani Nikula
2026-03-02 20:07 ` Michał Grzelak
2026-03-03 16:11 ` Ville Syrjälä [this message]
2026-03-04 10:55 ` Jani Nikula
2026-02-27 17:17 ` [PATCH 3/4] drm/xe/compat: remove i915_vma.h from compat Jani Nikula
2026-03-02 20:07 ` Michał Grzelak
2026-02-27 17:17 ` [PATCH 4/4] drm/xe/display: clean up xe_initial_plane.c includes Jani Nikula
2026-03-02 20:07 ` Michał Grzelak
2026-02-27 19:23 ` ✗ CI.checkpatch: warning for drm/i915, drm/xe: clean up i915_vma.h usage for display Patchwork
2026-02-27 19:24 ` ✓ CI.KUnit: success " Patchwork
2026-02-27 19:40 ` ✓ i915.CI.BAT: " Patchwork
2026-02-27 20:43 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-28 1:10 ` ✗ i915.CI.Full: failure " Patchwork
2026-02-28 9:31 ` ✓ Xe.CI.FULL: success " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aacIH_3FjC7azuC9@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.