intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 16/16] drm/i915: reject invalid formats for FBC
Date: Fri, 28 Aug 2015 20:55:16 +0300	[thread overview]
Message-ID: <20150828175515.GH5176@intel.com> (raw)
In-Reply-To: <1439588061-18064-17-git-send-email-paulo.r.zanoni@intel.com>

On Fri, Aug 14, 2015 at 06:34:21PM -0300, Paulo Zanoni wrote:
> This commit is essentially a rewrite of "drm/i915: Check pixel format
> for fbc" from Ville Syrjälä. The idea is the same, but the code is
> different due to all the changes that happened since his original
> patch. So any bugs are due to my bad rewrite.
> 
> Testcases: igt/kms_frontbuffer_tracking/*fbc*-${format_name}-draw-*
> Credits-to: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h  |  1 +
>  drivers/gpu/drm/i915/intel_fbc.c | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index f8f3ed3..938f69f 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -947,6 +947,7 @@ struct i915_fbc {
>  		FBC_IN_DBG_MASTER, /* kernel debugger is active */
>  		FBC_BAD_STRIDE, /* stride is not supported */
>  		FBC_PIXEL_RATE, /* pixel rate is too big */
> +		FBC_PIXEL_FORMAT /* pixel format is invalid */
>  	} no_fbc_reason;
>  
>  	bool (*fbc_enabled)(struct drm_i915_private *dev_priv);
> diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
> index 5dfe460..cd3ed90 100644
> --- a/drivers/gpu/drm/i915/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/intel_fbc.c
> @@ -505,6 +505,8 @@ const char *intel_no_fbc_reason_str(enum no_fbc_reason reason)
>  		return "framebuffer stride not supported";
>  	case FBC_PIXEL_RATE:
>  		return "pixel rate is too big";
> +	case FBC_PIXEL_FORMAT:
> +		return "pixel format is invalid";
>  	default:
>  		MISSING_CASE(reason);
>  		return "unknown reason";
> @@ -731,6 +733,34 @@ static bool stride_is_valid(unsigned int stride)
>  	return true;
>  }
>  
> +static bool pixel_format_is_valid(struct drm_framebuffer *fb)
> +{
> +	struct drm_device *dev = fb->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +
> +	/* Primary planes don't support alpha, so the "A" formats and "X"
> +	 * formats are one and the same. */
> +	switch (fb->pixel_format) {
> +	case DRM_FORMAT_XRGB8888:
> +	case DRM_FORMAT_ARGB8888:
> +	case DRM_FORMAT_XBGR8888:
> +	case DRM_FORMAT_ABGR8888:
> +		return true;
> +	case DRM_FORMAT_XRGB1555:
> +	case DRM_FORMAT_ARGB1555:
> +	case DRM_FORMAT_RGB565:

I think we've since concluded that ARGB format implies alpha blending,
and removed the ARGB formats for most platforms from the list of
supported formats. However SKL includes ARGB in it's list of formats,
and I think it enables alpha blending when encountering it. Since FBC is
not compatible with alpha blending we should drop the alpha formats from
this list.

> +		/* 16bpp not supported on gen2 */
> +		if (IS_GEN2(dev))
> +			return false;
> +		/* WaFbcOnly1to1Ratio:ctg */
> +		if (IS_G4X(dev_priv))
> +			return false;
> +		return true;
> +	default:
> +		return false;
> +	}
> +}
> +
>  /**
>   * __intel_fbc_update - enable/disable FBC as needed, unlocked
>   * @dev_priv: i915 device instance
> @@ -846,6 +876,11 @@ static void __intel_fbc_update(struct drm_i915_private *dev_priv)
>  		goto out_disable;
>  	}
>  
> +	if (!pixel_format_is_valid(fb)) {
> +		set_no_fbc_reason(dev_priv, FBC_PIXEL_FORMAT);
> +		goto out_disable;
> +	}
> +
>  	/* If the kernel debugger is active, always disable compression */
>  	if (in_dbg_master()) {
>  		set_no_fbc_reason(dev_priv, FBC_IN_DBG_MASTER);
> -- 
> 2.4.6
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

      reply	other threads:[~2015-08-28 17:55 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-14 21:34 [PATCH 00/16] FBC bug fixes Paulo Zanoni
2015-08-14 21:34 ` [PATCH 01/16] drm/i915: make sure we're not changing the FBC CFB with FBC enabled Paulo Zanoni
2015-08-28 14:05   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 02/16] drm/i915: fix the FBC work allocation failure path Paulo Zanoni
2015-08-28 14:20   ` Ville Syrjälä
2015-08-28 14:50     ` Paulo Zanoni
2015-08-28 15:29       ` Ville Syrjälä
2015-09-01 10:07       ` Daniel Vetter
2015-09-01 11:03         ` Ville Syrjälä
2015-09-02  7:52           ` Daniel Vetter
2015-08-14 21:34 ` [PATCH 03/16] drm/i915: fix FBC for cases where crtc->base.y is non-zero Paulo Zanoni
2015-08-28 14:30   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 04/16] drm/i915: set ILK_DPFC_FENCE_YOFF to 0 on SNB Paulo Zanoni
2015-08-28 14:46   ` Ville Syrjälä
2015-10-08 21:26     ` Zanoni, Paulo R
2015-10-08 21:37       ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 05/16] drm/i915: check for the supported strides on HSW+ FBC Paulo Zanoni
2015-08-28 15:16   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 06/16] drm/i915: try a little harder to find an FBC CRTC Paulo Zanoni
2015-08-28 16:55   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 07/16] drm/i915: disable FBC on FIFO underruns Paulo Zanoni
2015-08-15  8:22   ` Chris Wilson
2015-08-19 12:06   ` Ville Syrjälä
2015-08-20 13:30     ` Paulo Zanoni
2015-08-20 13:58       ` Ville Syrjälä
2015-08-20 14:29         ` Paulo Zanoni
2015-08-20 15:00           ` Ville Syrjälä
2015-08-26  7:36             ` Daniel Vetter
2015-08-14 21:34 ` [PATCH 08/16] drm/i915: avoid the last 8mb of stolen on BDW/SKL Paulo Zanoni
2015-08-15  8:29   ` Chris Wilson
2015-08-18 21:49     ` Zanoni, Paulo R
2015-08-19  8:24       ` chris
2015-09-11 20:35         ` Paulo Zanoni
2015-08-14 21:34 ` [PATCH 09/16] drm/i915: print the correct amount of bytes allocated for the CFB Paulo Zanoni
2015-08-28 17:11   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 10/16] drm/i915: fix CFB size calculation Paulo Zanoni
2015-08-28 17:25   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 11/16] drm/i915/bdw: don't enable FBC when pixel rate exceeds 95% Paulo Zanoni
2015-08-28 17:41   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 12/16] drm/i915: apply WaFbcAsynchFlipDisableFbcQueue earlier Paulo Zanoni
2015-08-28 17:45   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 13/16] drm/i915: don't use the first stolen page on Broadwell Paulo Zanoni
2015-08-15  8:30   ` Chris Wilson
2015-08-19 11:55     ` Ville Syrjälä
2015-08-26  7:48       ` Daniel Vetter
2015-08-26 11:21         ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 14/16] drm/i915: don't apply WaFbcAsynchFlipDisableFbcQueue on SKL Paulo Zanoni
2015-08-28 17:51   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 15/16] Revert "drm/i915: Allocate fbcon from stolen memory" Paulo Zanoni
2015-08-15  8:24   ` Chris Wilson
2015-08-18 21:54     ` Zanoni, Paulo R
2015-08-19  8:16       ` chris
2015-08-14 21:34 ` [PATCH 16/16] drm/i915: reject invalid formats for FBC Paulo Zanoni
2015-08-28 17:55   ` Ville Syrjälä [this message]

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=20150828175515.GH5176@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@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;
as well as URLs for NNTP newsgroup(s).