public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
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

  parent reply	other threads:[~2026-03-03 16:11 UTC|newest]

Thread overview: 14+ 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:40 ` ✓ i915.CI.BAT: success for drm/i915, drm/xe: clean up i915_vma.h usage for display Patchwork
2026-02-28  1:10 ` ✗ i915.CI.Full: failure " 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox