All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shankar, Uma" <uma.shankar@intel.com>
To: "Kandpal, Suraj" <suraj.kandpal@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH v10 5/7] drm/i915: Fill in native_420 field
Date: Tue, 21 Feb 2023 09:15:18 +0000	[thread overview]
Message-ID: <CY5PR11MB634498AE84F467845036A961F4A59@CY5PR11MB6344.namprd11.prod.outlook.com> (raw)
In-Reply-To: <MWHPR11MB174178DE6E35F637ABFD55BEE3A59@MWHPR11MB1741.namprd11.prod.outlook.com>



> -----Original Message-----
> From: Kandpal, Suraj <suraj.kandpal@intel.com>
> Sent: Tuesday, February 21, 2023 10:11 AM
> To: Shankar, Uma <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org
> Subject: RE: [Intel-gfx] [PATCH v10 5/7] drm/i915: Fill in native_420 field
> 
> >
> > > -----Original Message-----
> > > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf
> > > Of Suraj Kandpal
> > > Sent: Wednesday, February 15, 2023 8:47 AM
> > > To: intel-gfx@lists.freedesktop.org
> > > Subject: [Intel-gfx] [PATCH v10 5/7] drm/i915: Fill in native_420
> > > field
> >
> > Append "display"
> >
> 
> drm/i915/display ?

Yes

> > >
> > > Now that we have laid the groundwork for YUV420 Enablement we fill
> > > up
> > > native_420 field in vdsc_cfg and add appropriate checks wherever
> > required.
> > >
> > > ---v2
> > > -adding native_422 field as 0 [Vandita] -filling in
> > > second_line_bpg_offset, second_line_offset_adj and nsl_bpg_offset in
> > > vds_cfg when native_420 is true
> > >
> > > ---v3
> > > -adding display version check to solve igt issue
> > >
> > > --v7
> > > -remove is_pipe_dsc check as its always true for D14 [Jani]
> > >
> > > --v10
> > > -keep sink capability check [Jani]
> > > -move from !(x == y  || w == z) to x !=y && w != z [Jani]
> > >
> > > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c
> > > b/drivers/gpu/drm/i915/display/icl_dsi.c
> > > index 05e749861658..7065203460d3 100644
> > > --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> > > +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> > > @@ -1534,8 +1534,6 @@ static int gen11_dsi_dsc_compute_config(struct
> > > intel_encoder *encoder,
> > >  	if (crtc_state->dsc.slice_count > 1)
> > >  		crtc_state->dsc.dsc_split = true;
> > >
> > > -	vdsc_cfg->convert_rgb = true;
> > > -
> > >  	/* FIXME: initialize from VBT */
> > >  	vdsc_cfg->rc_model_size = DSC_RC_MODEL_SIZE_CONST;
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > > b/drivers/gpu/drm/i915/display/intel_dp.c
> > > index 1a397ab710dd..baa5af7d3bdc 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > > @@ -1466,9 +1466,10 @@ static int intel_dp_dsc_compute_params(struct
> > > intel_encoder *encoder,
> > >  	vdsc_cfg->dsc_version_minor =
> > >  		min(intel_dp_source_dsc_version_minor(intel_dp),
> > >  		    intel_dp_sink_dsc_version_minor(intel_dp));
> > > -
> > > -	vdsc_cfg->convert_rgb = intel_dp-
> > > >dsc_dpcd[DP_DSC_DEC_COLOR_FORMAT_CAP - DP_DSC_SUPPORT] &
> > > -		DP_DSC_RGB;
> > > +	if (vdsc_cfg->convert_rgb)
> > > +		vdsc_cfg->convert_rgb =
> > > +			intel_dp-
> > >dsc_dpcd[DP_DSC_DEC_COLOR_FORMAT_CAP -  DP_DSC_SUPPORT] &
> > > +			DP_DSC_RGB;
> > >
> > >  	line_buf_depth = drm_dp_dsc_sink_line_buf_depth(intel_dp-
> > >dsc_dpcd);
> > >  	if (!line_buf_depth) {
> > > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c
> > > b/drivers/gpu/drm/i915/display/intel_vdsc.c
> > > index ed16f63d6355..19f9fb53f139 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
> > > @@ -460,14 +460,47 @@ int intel_dsc_compute_params(struct
> > >intel_crtc_state
> > > *pipe_config)
> > >  	vdsc_cfg->pic_width = pipe_config- hw.adjusted_mode.crtc_hdisplay;
> > >  	vdsc_cfg->slice_width = DIV_ROUND_UP(vdsc_cfg->pic_width,
> > >  					     pipe_config->dsc.slice_count);
> > > -
> > > -	/* Gen 11 does not support YCbCr */
> > > +	/*
> > > +	 * According to DSC 1.2 specs if colorspace is YCbCr then
> > > +convert_rgb
> > is 0
> > > +	 * else 1
> > > +	 */
> > > +	vdsc_cfg->convert_rgb = pipe_config->output_format !=
> > > INTEL_OUTPUT_FORMAT_YCBCR420 &&
> > > +				pipe_config->output_format !=
> > > INTEL_OUTPUT_FORMAT_YCBCR444;
> > > +
> > > +	if (pipe_config->output_format ==
> > INTEL_OUTPUT_FORMAT_YCBCR420)
> > > +		vdsc_cfg->native_420 = true;
> > > +	/* We do not support YcBCr422 as of now */
> > > +	vdsc_cfg->native_422 = false;
> > > +	/* Gen 11 does not support YCbCr422 */
> >
> > This comment can be merged with the one above.
> >
> 
> Can I remove "/* Gen 11 does not support YCbCr422 */ "
> And just keep "/* We do not support YcBCr422 as of now */" or Make it something
> like " Gen 11+ does not support YCbCr422 "

I think "/* We do not support YcBCr422 as of now */" looks better.

> > >  	vdsc_cfg->simple_422 = false;
> > >  	/* Gen 11 does not support VBR */
> > >  	vdsc_cfg->vbr_enable = false;
> > >
> > >  	/* Gen 11 only supports integral values of bpp */
> > >  	vdsc_cfg->bits_per_pixel = compressed_bpp << 4;
> >
> > Leave a line gap here
> >
> > > +	/*
> > > +	 * According to DSC 1.2 specs if native_420 is set:
> >
> > It would be good to add the section name as well for ease of reference.
> >
> > > +	 * -We need to double the current bpp.
> > > +	 * -second_line_bpg_offset is 12 in general and equal to
> > > +2*(slice_height-1) if
> > > slice
> > > +	 * height < 8.
> > > +	 * -second_line_offset_adj is 512 as shown by emperical values to
> > > +yeild best
> > > chroma
> > > +	 * preservation in second line.
> > > +	 * -nsl_bpg_offset is calculated as
> > > +second_line_offset/slice_height
> > > +-1 then
> > > rounded
> > > +	 * up to 16 fractional bits, we left shift second line offset by
> > > +11 to preserve
> > > 11
> > > +	 * fractional bits.
> > > +	 */
> > > +	if (vdsc_cfg->native_420) {
> > > +		vdsc_cfg->bits_per_pixel <<= 1;
> >
> > Leave a line gap here
> >
> > > +		if (vdsc_cfg->slice_height >= 8)
> > > +			vdsc_cfg->second_line_bpg_offset = 12;
> > > +		else
> > > +			vdsc_cfg->second_line_bpg_offset =
> > > +				2 * (vdsc_cfg->slice_height - 1);
> >
> > Here as well
> >
> > > +		vdsc_cfg->second_line_offset_adj = 512;
> > > +		vdsc_cfg->nsl_bpg_offset = DIV_ROUND_UP(vdsc_cfg-
> > > >second_line_bpg_offset << 11,
> > > +							vdsc_cfg-
> > >slice_height - 1);
> >
> > The parameters we compute here are being programmed only for gen14. We
> > should limit the computation if they are going to be unused for prior
> > platforms.
> 
> How about we make native_420 field of vdsc_cfg true only if DISPLAY_VER() >= 14
> this should take care of not filling any extra fields or computations

Yeah we can even do that

Regards
Uma Shankar
 
> Regards,
> Suraj Kandpal
> >
> > > +	}
> > > +
> > >  	vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3;
> > >
> > >  	for (i = 0; i < DSC_NUM_BUF_RANGES - 1; i++) { @@ -594,8 +627,13
> > @@
> > > static void intel_dsc_pps_configure(const struct intel_crtc_state
> > *crtc_state)
> > >  		DSC_VER_MIN_SHIFT |
> > >  		vdsc_cfg->bits_per_component << DSC_BPC_SHIFT |
> > >  		vdsc_cfg->line_buf_depth << DSC_LINE_BUF_DEPTH_SHIFT;
> > > -	if (vdsc_cfg->dsc_version_minor == 2)
> > > +	if (vdsc_cfg->dsc_version_minor == 2) {
> > >  		pps_val |= DSC_ALT_ICH_SEL;
> > > +		if (vdsc_cfg->native_420)
> > > +			pps_val |= DSC_NATIVE_420_ENABLE;
> > > +		if (vdsc_cfg->native_422)
> > > +			pps_val |= DSC_NATIVE_422_ENABLE;
> > > +	}
> > >  	if (vdsc_cfg->block_pred_enable)
> > >  		pps_val |= DSC_BLOCK_PREDICTION;
> > >  	if (vdsc_cfg->convert_rgb)
> > > @@ -906,6 +944,32 @@ static void intel_dsc_pps_configure(const
> > > struct intel_crtc_state *crtc_state)
> > >  				       pps_val);
> > >  	}
> > >
> > > +	if (DISPLAY_VER(dev_priv) >= 14) {
> > > +		/* Populate PICTURE_PARAMETER_SET_17 registers */
> > > +		pps_val = 0;
> > > +		pps_val |= DSC_SL_BPG_OFFSET(vdsc_cfg-
> > > >second_line_bpg_offset);
> > > +		drm_dbg_kms(&dev_priv->drm, "PPS17 = 0x%08x\n",
> > pps_val);
> > > +		intel_de_write(dev_priv,
> > > +			       MTL_DSC0_PICTURE_PARAMETER_SET_17(pipe),
> > > +			       pps_val);
> > > +		if (crtc_state->dsc.dsc_split)
> > > +			intel_de_write(dev_priv,
> > > +
> > > MTL_DSC1_PICTURE_PARAMETER_SET_17(pipe),
> > > +				       pps_val);
> > > +
> > > +		/* Populate PICTURE_PARAMETER_SET_18 registers */
> > > +		pps_val = 0;
> > > +		pps_val |= DSC_NSL_BPG_OFFSET(vdsc_cfg-
> > >nsl_bpg_offset) |
> > > +			   DSC_SL_OFFSET_ADJ(vdsc_cfg-
> > >second_line_offset_adj);
> > > +		drm_dbg_kms(&dev_priv->drm, "PPS18 = 0x%08x\n",
> > pps_val);
> > > +		intel_de_write(dev_priv,
> > > +			       MTL_DSC0_PICTURE_PARAMETER_SET_18(pipe),
> > > +			       pps_val);
> > > +		if (crtc_state->dsc.dsc_split)
> > > +			intel_de_write(dev_priv,
> > > +
> > > MTL_DSC1_PICTURE_PARAMETER_SET_18(pipe),
> > > +				       pps_val);
> > > +	}
> >
> > Leave a line gap.
> >
> > >  	/* Populate the RC_BUF_THRESH registers */
> > >  	memset(rc_buf_thresh_dword, 0, sizeof(rc_buf_thresh_dword));
> > >  	for (i = 0; i < DSC_NUM_BUF_RANGES - 1; i++) {
> > > --
> > > 2.25.1


  reply	other threads:[~2023-02-21  9:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-07  7:44 [Intel-gfx] [PATCH v9 0/7] Enable YCbCr420 for VDSC Suraj Kandpal
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 1/7] drm/dp_helper: Add helper to check if the sink supports given format with DSC Suraj Kandpal
2023-02-20 20:37   ` Shankar, Uma
2023-02-20 20:50     ` Shankar, Uma
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 2/7] drm/i915/dp: Check if DSC supports the given output_format Suraj Kandpal
2023-02-20 20:49   ` Shankar, Uma
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 3/7] drm/i915: Adding the new registers for DSC Suraj Kandpal
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 4/7] drm/i915: Enable YCbCr420 for VDSC Suraj Kandpal
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 5/7] drm/i915: Fill in native_420 field Suraj Kandpal
2023-02-14 11:50   ` Jani Nikula
2023-02-15  3:02     ` Kandpal, Suraj
2023-02-15  3:17   ` [Intel-gfx] [PATCH v10 " Suraj Kandpal
2023-02-20 21:37     ` Shankar, Uma
2023-02-21  4:40       ` Kandpal, Suraj
2023-02-21  9:15         ` Shankar, Uma [this message]
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 6/7] drm/i915/vdsc: Check slice design requirement Suraj Kandpal
2023-02-20 21:53   ` Shankar, Uma
2023-02-21  4:20     ` Kandpal, Suraj
2023-02-21  9:11       ` Shankar, Uma
2023-02-07  7:44 ` [Intel-gfx] [PATCH v9 7/7] drm/i915/dsc: Add debugfs entry to validate DSC output formats Suraj Kandpal
2023-02-07  8:35   ` Jani Nikula
2023-02-08 14:16     ` Swati Sharma
2023-02-10 11:31       ` Jani Nikula
2023-02-14 10:51   ` [Intel-gfx] [v10] " Swati Sharma
2023-02-14 10:51     ` Jani Nikula
2023-02-14 11:01       ` Swati Sharma
2023-02-14 11:02   ` [Intel-gfx] [v11] " Swati Sharma
2023-02-20 21:57     ` Shankar, Uma
2023-02-07  8:09 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Enable YCbCr420 for VDSC Patchwork
2023-02-07  8:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-02-07 13:16 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2023-02-14 14:51 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Enable YCbCr420 for VDSC (rev3) Patchwork
2023-02-14 15:21 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-02-15  3:11 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2023-02-15  3:45 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Enable YCbCr420 for VDSC (rev4) Patchwork
2023-02-15  4:10 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-02-15 15:16 ` [Intel-gfx] ✓ Fi.CI.IGT: " 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=CY5PR11MB634498AE84F467845036A961F4A59@CY5PR11MB6344.namprd11.prod.outlook.com \
    --to=uma.shankar@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=suraj.kandpal@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.