All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Shashank Sharma <shashank.sharma@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3 2/7] drm/i915: Add CRTC output format YCBCR 4:4:4
Date: Wed, 17 Jan 2018 20:27:31 +0200	[thread overview]
Message-ID: <20180117182731.GQ10981@intel.com> (raw)
In-Reply-To: <1515145535-11228-3-git-send-email-shashank.sharma@intel.com>

On Fri, Jan 05, 2018 at 03:15:30PM +0530, Shashank Sharma wrote:
> This patch adds support for YCBCR 4:4:4 CRTC output format.
> To do this, this patch extends the existing YCBCR 4:2:0
> framework by:
> - Adding new parameter in for YCBCR 4:4:4 enum crtc_iutput_format.
> - Adding case for YCBCR 4:4:4 in while setting AVI infoframes.
> - Adding necessary checks in modeset sequence.
> 
> V3: Added this patch in the series
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_color.c   |  3 ++-
>  drivers/gpu/drm/i915/intel_display.c | 13 +++++++++----
>  drivers/gpu/drm/i915/intel_drv.h     |  1 +
>  drivers/gpu/drm/i915/intel_hdmi.c    |  2 ++
>  4 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
> index 99e32cb..5b76de6 100644
> --- a/drivers/gpu/drm/i915/intel_color.c
> +++ b/drivers/gpu/drm/i915/intel_color.c
> @@ -141,7 +141,8 @@ static void i9xx_load_csc_matrix(struct drm_crtc_state *crtc_state)
>  	uint16_t coeffs[9] = { 0, };
>  	struct intel_crtc_state *intel_crtc_state = to_intel_crtc_state(crtc_state);
>  
> -	if (intel_crtc_state->output_format == CRTC_OUTPUT_YCBCR420) {
> +	if (intel_crtc_state->output_format == CRTC_OUTPUT_YCBCR420 ||
> +	    intel_crtc_state->output_format == CRTC_OUTPUT_YCBCR444) {
>  		i9xx_load_ycbcr_conversion_matrix(intel_crtc);
>  		return;
>  	} else if (crtc_state->ctm) {
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 69b0aa3..6ac5ca6 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6357,8 +6357,9 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  		return -EINVAL;
>  	}
>  
> -	if (pipe_config->output_format == CRTC_OUTPUT_YCBCR420 &&
> -	    pipe_config->base.ctm) {
> +	if ((pipe_config->output_format == CRTC_OUTPUT_YCBCR420 ||
> +	     pipe_config->output_format == CRTC_OUTPUT_YCBCR444) &&
> +	     pipe_config->base.ctm) {
>  		/*
>  		 * There is only one pipe CSC unit per pipe, and we need that
>  		 * for output conversion from RGB->YCBCR. So if CTM is already
> @@ -8179,11 +8180,12 @@ static void haswell_set_pipemisc(struct drm_crtc *crtc)
>  		if (intel_crtc->config->dither)
>  			val |= PIPEMISC_DITHER_ENABLE | PIPEMISC_DITHER_TYPE_SP;
>  
> -		if (config->output_format == CRTC_OUTPUT_YCBCR420) {
> +		if (config->output_format > CRTC_OUTPUT_RGB)

The '>' looks weird. For best clarity I would just use
'x == YCBCR444 || x == YCBCR420'

>  			val |= PIPEMISC_OUTPUT_COLORSPACE_YUV;
> +
> +		if (config->output_format == CRTC_OUTPUT_YCBCR420)
>  			val |= PIPEMISC_YUV420_ENABLE |
>  			       PIPEMISC_YUV420_MODE_FULL_BLEND;
> -		}
>  
>  		I915_WRITE(PIPEMISC(intel_crtc->pipe), val);
>  	}
> @@ -9161,6 +9163,7 @@ static void haswell_get_ddi_port_state(struct intel_crtc *crtc,
>  static const char * const output_format_str[] = {
>  	"Invalid",
>  	"RGB",
> +	"YCBCR4:4:4",
>  	"YCBCR4:2:0",
>  };
>  
> @@ -9226,6 +9229,8 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
>  					output_format = CRTC_OUTPUT_INVALID;
>  				else
>  					output_format = CRTC_OUTPUT_YCBCR420;
> +			} else {
> +				output_format = CRTC_OUTPUT_YCBCR444;
>  			}
>  
>  		}
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 79662650..a393342 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -612,6 +612,7 @@ struct intel_crtc_wm_state {
>  enum crtc_output_format {
>  	CRTC_OUTPUT_INVALID = -1,
>  	CRTC_OUTPUT_RGB,
> +	CRTC_OUTPUT_YCBCR444,
>  	CRTC_OUTPUT_YCBCR420,
>  };
>  
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index b266a7f..258bb51 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -480,6 +480,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
>  
>  	if (crtc_state->output_format == CRTC_OUTPUT_YCBCR420)
>  		frame.avi.colorspace = HDMI_COLORSPACE_YUV420;
> +	else if (crtc_state->output_format == CRTC_OUTPUT_YCBCR444)
> +		frame.avi.colorspace = HDMI_COLORSPACE_YUV444;
>  	else
>  		frame.avi.colorspace = HDMI_COLORSPACE_RGB;
>  
> -- 
> 2.7.4

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-01-17 18:27 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-05  9:45 [PATCH v3 0/7] YCBCR 4:2:0/4:4:4 output support for LSPCON Shashank Sharma
2018-01-05  9:45 ` [PATCH v3 1/7] drm/i915: Add CRTC output format YCBCR 4:2:0 Shashank Sharma
2018-01-05 11:21   ` Maarten Lankhorst
2018-01-17 18:27   ` Ville Syrjälä
2018-01-18  6:21     ` Sharma, Shashank
2018-01-05  9:45 ` [PATCH v3 2/7] drm/i915: Add CRTC output format YCBCR 4:4:4 Shashank Sharma
2018-01-17 18:27   ` Ville Syrjälä [this message]
2018-01-18  6:23     ` Sharma, Shashank
2018-01-05  9:45 ` [PATCH v3 3/7] drm/i915: Check LSPCON vendor OUI Shashank Sharma
2018-01-05  9:45 ` [PATCH v3 4/7] drm/i915: Add AVI infoframe support for LSPCON Shashank Sharma
2018-01-05  9:45 ` [PATCH v3 5/7] drm/i915: Write AVI infoframes for MCA LSPCON Shashank Sharma
2018-01-05  9:45 ` [PATCH v3 6/7] drm/i915: Write AVI infoframes for Parade LSPCON Shashank Sharma
2018-01-05  9:45 ` [PATCH v3 7/7] drm/i915: Add YCBCR 4:2:0/4:4:4 support for LSPCON Shashank Sharma
2018-01-17 18:27   ` Ville Syrjälä
2018-01-18  6:27     ` Sharma, Shashank
2018-01-18  9:30       ` Maarten Lankhorst
2018-01-18 16:16         ` Sharma, Shashank
2018-01-18 14:03       ` Ville Syrjälä
2018-01-18 15:30         ` Sharma, Shashank
2018-01-18 15:35           ` Ville Syrjälä
2018-01-18 15:52             ` Sharma, Shashank
2018-01-05 10:15 ` ✗ Fi.CI.BAT: warning for YCBCR 4:2:0/4:4:4 output " 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=20180117182731.GQ10981@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=shashank.sharma@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.