RE: [PATCH 03/10] drm/i915/vdsc: Add register bits for VDSC2 engine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@xxxxxxxxx>
> Sent: Thursday, October 17, 2024 1:54 PM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: intel-xe@xxxxxxxxxxxxxxxxxxxxx; Kandpal, Suraj
> <suraj.kandpal@xxxxxxxxx>
> Subject: [PATCH 03/10] drm/i915/vdsc: Add register bits for VDSC2 engine
> 
> Add bits to enable third VDSC engine VDSC2.

The subject and commit message dont entirely do justice to what is being done in the patch.
You are also adding definitions, and adding prospect for get_config and enabling dsc with 3 engines


> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
> ---
>  .../drm/i915/display/intel_display_types.h    |  1 +
>  drivers/gpu/drm/i915/display/intel_vdsc.c     | 21 +++++++++++++++----
>  .../gpu/drm/i915/display/intel_vdsc_regs.h    |  4 ++++
>  3 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 8bd63da8516c..e6d37d28c5c1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -912,6 +912,7 @@ struct intel_csc_matrix {  enum intel_dsc_split_state {
>  	INTEL_DSC_SPLIT_DISABLED,
>  	INTEL_DSC_SPLIT_2_STREAMS,
> +	INTEL_DSC_SPLIT_3_STREAMS,
>  };

This and the below name changes can be avoided if we make dsc_split a int no_dsc_spilt_streams

Regards,
Suraj Kandpal
> 
>  void intel_io_mmio_fw_write(void *ctx, i915_reg_t reg, u32 val); diff --git
> a/drivers/gpu/drm/i915/display/intel_vdsc.c
> b/drivers/gpu/drm/i915/display/intel_vdsc.c
> index bc5f8c5cb1d4..e34483d5be36 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> @@ -380,6 +380,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc,
> enum transcoder cpu_transcoder)  static int
> intel_dsc_get_vdsc_per_pipe(const struct intel_crtc_state *crtc_state)  {
>  	switch (crtc_state->dsc.dsc_split) {
> +	case INTEL_DSC_SPLIT_3_STREAMS:
> +		return 3;
>  	case INTEL_DSC_SPLIT_2_STREAMS:
>  		return 2;
>  	case INTEL_DSC_SPLIT_DISABLED:
> @@ -782,6 +784,12 @@ void intel_dsc_enable(const struct intel_crtc_state
> *crtc_state)
>  		dss_ctl2_val |= VDSC1_ENABLE;
>  		dss_ctl1_val |= JOINER_ENABLE;
>  	}
> +
> +	if (vdsc_instances_per_pipe > 2) {
> +		dss_ctl2_val |= VDSC2_ENABLE;
> +		dss_ctl2_val |= SMALL_JOINER_CONFIG_3_ENGINES;
> +	}
> +
>  	if (crtc_state->joiner_pipes) {
>  		if (intel_crtc_ultrajoiner_enable_needed(crtc_state))
>  			dss_ctl1_val |= ULTRA_JOINER_ENABLE; @@ -983,11
> +991,15 @@ void intel_dsc_get_config(struct intel_crtc_state *crtc_state)
>  	if (!crtc_state->dsc.compression_enable)
>  		goto out;
> 
> -	if ((dss_ctl1 & JOINER_ENABLE) &&
> -	    (dss_ctl2 & VDSC1_ENABLE))
> -		crtc_state->dsc.dsc_split = INTEL_DSC_SPLIT_2_STREAMS;
> -	else
> +	if (dss_ctl1 & JOINER_ENABLE) {
> +		if (dss_ctl2 & (VDSC2_ENABLE |
> SMALL_JOINER_CONFIG_3_ENGINES))
> +			crtc_state->dsc.dsc_split =
> INTEL_DSC_SPLIT_3_STREAMS;
> +
> +		else if (dss_ctl2 & VDSC1_ENABLE)
> +			crtc_state->dsc.dsc_split =
> INTEL_DSC_SPLIT_2_STREAMS;
> +	} else {
>  		crtc_state->dsc.dsc_split = INTEL_DSC_SPLIT_DISABLED;
> +	}
> 
>  	intel_dsc_get_pps_config(crtc_state);
>  out:
> @@ -997,6 +1009,7 @@ void intel_dsc_get_config(struct intel_crtc_state
> *crtc_state)  static const char * const dsc_split_str[] = {
>  	[INTEL_DSC_SPLIT_DISABLED] = "DISABLED",
>  	[INTEL_DSC_SPLIT_2_STREAMS] = "2 STREAMS",
> +	[INTEL_DSC_SPLIT_3_STREAMS] = "3 STREAMS",
>  };
> 
>  static const char *dsc_split_name(enum intel_dsc_split_state dsc_split) diff
> --git a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> index d7a72b95ee7e..941f4ff6b940 100644
> --- a/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_vdsc_regs.h
> @@ -22,6 +22,10 @@
> 
>  #define DSS_CTL2				_MMIO(0x67404)
>  #define  VDSC0_ENABLE				REG_BIT(31)
> +#define  VDSC2_ENABLE				REG_BIT(30)
> +#define  SMALL_JOINER_CONFIG_3_ENGINES		REG_BIT(23)
> +#define  ODD_PIXEL_REMOVAL			REG_BIT(18)
> +#define  ODD_PIXEL_REMOVAL_CONFIG_EOL		REG_BIT(17)
>  #define  VDSC1_ENABLE				REG_BIT(15)
>  #define  RIGHT_DL_BUF_TARGET_DEPTH_MASK		(0xfff << 0)
>  #define  RIGHT_DL_BUF_TARGET_DEPTH(pixels)	((pixels) << 0)
> --
> 2.45.2





[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux