diff mbox series

drm/i915/mtl: Introduce FBC B

Message ID 20220817122624.213889-1-jani.nikula@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/mtl: Introduce FBC B | expand

Commit Message

Jani Nikula Aug. 17, 2022, 12:26 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

MTL introduces a second FBC engine. The two FBC engines can
operate entirely independently, FBC A serving pipe A and
FBC B serving pipe B.

The one place where things might go a bit wrong is the CFB
allocation from stolen. We might have to consider some change
to the allocation strategy to have a better chance of both
engines being able to allocate its CFB. Maybe FBC A should
allocate bottom up and FBC B top down, or something? For the
moment the allocation strategy is DRM_MM_INSERT_BEST for both.

Cc: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.h | 1 +
 drivers/gpu/drm/i915/i915_pci.c          | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

Kahola, Mika Aug. 17, 2022, 12:38 p.m. UTC | #1
> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Wednesday, August 17, 2022 3:26 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>; Ville Syrjälä
> <ville.syrjala@linux.intel.com>; Kahola, Mika <mika.kahola@intel.com>
> Subject: [PATCH] drm/i915/mtl: Introduce FBC B
> 
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> MTL introduces a second FBC engine. The two FBC engines can operate entirely
> independently, FBC A serving pipe A and FBC B serving pipe B.
> 
> The one place where things might go a bit wrong is the CFB allocation from
> stolen. We might have to consider some change to the allocation strategy to
> have a better chance of both engines being able to allocate its CFB. Maybe FBC
> A should allocate bottom up and FBC B top down, or something? For the
> moment the allocation strategy is DRM_MM_INSERT_BEST for both.
> 
> Cc: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_fbc.h | 1 +
>  drivers/gpu/drm/i915/i915_pci.c          | 3 ++-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.h
> b/drivers/gpu/drm/i915/display/intel_fbc.h
> index db60143295ec..4adb98afe6ff 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.h
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.h
> @@ -19,6 +19,7 @@ struct intel_plane_state;
> 
>  enum intel_fbc_id {
>  	INTEL_FBC_A,
> +	INTEL_FBC_B,
> 
>  	I915_MAX_FBCS,
>  };
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 9fd788e147a3..d8446bb25d5e 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -1111,7 +1111,8 @@ static const struct intel_device_info pvc_info = {
>  #define XE_LPDP_FEATURES	\
>  	XE_LPD_FEATURES,	\
>  	.display.ver = 14,	\
> -	.display.has_cdclk_crawl = 1
> +	.display.has_cdclk_crawl = 1, \
> +	.display.fbc_mask = BIT(INTEL_FBC_A) | BIT(INTEL_FBC_B)
> 
>  __maybe_unused
>  static const struct intel_device_info mtl_info = {
> --
> 2.34.1
Jani Nikula Aug. 19, 2022, 9:51 a.m. UTC | #2
On Wed, 17 Aug 2022, "Kahola, Mika" <mika.kahola@intel.com> wrote:
>> -----Original Message-----
>> From: Nikula, Jani <jani.nikula@intel.com>
>> Sent: Wednesday, August 17, 2022 3:26 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: Nikula, Jani <jani.nikula@intel.com>; Ville Syrjälä
>> <ville.syrjala@linux.intel.com>; Kahola, Mika <mika.kahola@intel.com>
>> Subject: [PATCH] drm/i915/mtl: Introduce FBC B
>>
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> MTL introduces a second FBC engine. The two FBC engines can operate entirely
>> independently, FBC A serving pipe A and FBC B serving pipe B.
>>
>> The one place where things might go a bit wrong is the CFB allocation from
>> stolen. We might have to consider some change to the allocation strategy to
>> have a better chance of both engines being able to allocate its CFB. Maybe FBC
>> A should allocate bottom up and FBC B top down, or something? For the
>> moment the allocation strategy is DRM_MM_INSERT_BEST for both.
>>
>> Cc: Mika Kahola <mika.kahola@intel.com>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> Reviewed-by: Mika Kahola <mika.kahola@intel.com>

Thanks for the review, pushed to drm-intel-next.

BR,
Jani.


>
>> ---
>>  drivers/gpu/drm/i915/display/intel_fbc.h | 1 +
>>  drivers/gpu/drm/i915/i915_pci.c          | 3 ++-
>>  2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.h
>> b/drivers/gpu/drm/i915/display/intel_fbc.h
>> index db60143295ec..4adb98afe6ff 100644
>> --- a/drivers/gpu/drm/i915/display/intel_fbc.h
>> +++ b/drivers/gpu/drm/i915/display/intel_fbc.h
>> @@ -19,6 +19,7 @@ struct intel_plane_state;
>>
>>  enum intel_fbc_id {
>>       INTEL_FBC_A,
>> +     INTEL_FBC_B,
>>
>>       I915_MAX_FBCS,
>>  };
>> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
>> index 9fd788e147a3..d8446bb25d5e 100644
>> --- a/drivers/gpu/drm/i915/i915_pci.c
>> +++ b/drivers/gpu/drm/i915/i915_pci.c
>> @@ -1111,7 +1111,8 @@ static const struct intel_device_info pvc_info = {
>>  #define XE_LPDP_FEATURES     \
>>       XE_LPD_FEATURES,        \
>>       .display.ver = 14,      \
>> -     .display.has_cdclk_crawl = 1
>> +     .display.has_cdclk_crawl = 1, \
>> +     .display.fbc_mask = BIT(INTEL_FBC_A) | BIT(INTEL_FBC_B)
>>
>>  __maybe_unused
>>  static const struct intel_device_info mtl_info = {
>> --
>> 2.34.1
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.h b/drivers/gpu/drm/i915/display/intel_fbc.h
index db60143295ec..4adb98afe6ff 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.h
+++ b/drivers/gpu/drm/i915/display/intel_fbc.h
@@ -19,6 +19,7 @@  struct intel_plane_state;
 
 enum intel_fbc_id {
 	INTEL_FBC_A,
+	INTEL_FBC_B,
 
 	I915_MAX_FBCS,
 };
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 9fd788e147a3..d8446bb25d5e 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -1111,7 +1111,8 @@  static const struct intel_device_info pvc_info = {
 #define XE_LPDP_FEATURES	\
 	XE_LPD_FEATURES,	\
 	.display.ver = 14,	\
-	.display.has_cdclk_crawl = 1
+	.display.has_cdclk_crawl = 1, \
+	.display.fbc_mask = BIT(INTEL_FBC_A) | BIT(INTEL_FBC_B)
 
 __maybe_unused
 static const struct intel_device_info mtl_info = {