public inbox for intel-xe@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: "Ville Syrjälä" <ville.syrjala@linux.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: Wed, 04 Mar 2026 12:55:34 +0200	[thread overview]
Message-ID: <99c154bc50a9b5c51f1f7945cf904cc7cbca95e7@intel.com> (raw)
In-Reply-To: <aacIH_3FjC7azuC9@intel.com>

On Tue, 03 Mar 2026, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> 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.

I'm afraid I merged the lot two hours before your message. :/

BR,
Jani.

>
>>  	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

-- 
Jani Nikula, Intel

  reply	other threads:[~2026-03-04 10:55 UTC|newest]

Thread overview: 16+ 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ä
2026-03-04 10:55     ` Jani Nikula [this message]
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 20:43 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-28  9:31 ` ✓ Xe.CI.FULL: " 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=99c154bc50a9b5c51f1f7945cf904cc7cbca95e7@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=ville.syrjala@linux.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