[Intel-gfx] [PATCH 28/37] drm/i915: Store a pointer to the pixel format info for fbc

Daniel Vetter daniel at ffwll.ch
Wed Nov 30 16:07:43 UTC 2016


On Fri, Nov 18, 2016 at 09:53:04PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Rather than store the pixel format and look up the format info as
> needed,  let's just store a pointer to the format info directly
> and speed up our lookups.
> 
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Cc: intel-gfx at lists.freedesktop.org
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Assuming it all compiles still:

Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

> ---
>  drivers/gpu/drm/i915/i915_drv.h  |  4 ++--
>  drivers/gpu/drm/i915/intel_fbc.c | 14 +++++++-------
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index be67aeece749..692b79e056be 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1026,7 +1026,7 @@ struct intel_fbc {
>  
>  		struct {
>  			u64 ilk_ggtt_offset;
> -			uint32_t pixel_format;
> +			const struct drm_format_info *format;
>  			unsigned int stride;
>  			int fence_reg;
>  			unsigned int tiling_mode;
> @@ -1042,7 +1042,7 @@ struct intel_fbc {
>  
>  		struct {
>  			u64 ggtt_offset;
> -			uint32_t pixel_format;
> +			const struct drm_format_info *format;
>  			unsigned int stride;
>  			int fence_reg;
>  		} fb;
> diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
> index 62f215b12eb5..659cebc3bfd2 100644
> --- a/drivers/gpu/drm/i915/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/intel_fbc.c
> @@ -188,7 +188,7 @@ static void g4x_fbc_activate(struct drm_i915_private *dev_priv)
>  	u32 dpfc_ctl;
>  
>  	dpfc_ctl = DPFC_CTL_PLANE(params->crtc.plane) | DPFC_SR_EN;
> -	if (drm_format_plane_cpp(params->fb.pixel_format, 0) == 2)
> +	if (params->fb.format->cpp[0] == 2)
>  		dpfc_ctl |= DPFC_CTL_LIMIT_2X;
>  	else
>  		dpfc_ctl |= DPFC_CTL_LIMIT_1X;
> @@ -235,7 +235,7 @@ static void ilk_fbc_activate(struct drm_i915_private *dev_priv)
>  	int threshold = dev_priv->fbc.threshold;
>  
>  	dpfc_ctl = DPFC_CTL_PLANE(params->crtc.plane);
> -	if (drm_format_plane_cpp(params->fb.pixel_format, 0) == 2)
> +	if (params->fb.format->cpp[0] == 2)
>  		threshold++;
>  
>  	switch (threshold) {
> @@ -303,7 +303,7 @@ static void gen7_fbc_activate(struct drm_i915_private *dev_priv)
>  	if (IS_IVYBRIDGE(dev_priv))
>  		dpfc_ctl |= IVB_DPFC_CTL_PLANE(params->crtc.plane);
>  
> -	if (drm_format_plane_cpp(params->fb.pixel_format, 0) == 2)
> +	if (params->fb.format->cpp[0] == 2)
>  		threshold++;
>  
>  	switch (threshold) {
> @@ -581,7 +581,7 @@ static int intel_fbc_alloc_cfb(struct intel_crtc *crtc)
>  	WARN_ON(drm_mm_node_allocated(&fbc->compressed_fb));
>  
>  	size = intel_fbc_calculate_cfb_size(dev_priv, &fbc->state_cache);
> -	fb_cpp = drm_format_plane_cpp(fbc->state_cache.fb.pixel_format, 0);
> +	fb_cpp = fbc->state_cache.fb.format->cpp[0];
>  
>  	ret = find_compression_threshold(dev_priv, &fbc->compressed_fb,
>  					 size, fb_cpp);
> @@ -764,7 +764,7 @@ static void intel_fbc_update_state_cache(struct intel_crtc *crtc,
>  	 * platforms that need. */
>  	if (IS_GEN(dev_priv, 5, 6))
>  		cache->fb.ilk_ggtt_offset = i915_gem_object_ggtt_offset(obj, NULL);
> -	cache->fb.pixel_format = fb->pixel_format;
> +	cache->fb.format = fb->format;
>  	cache->fb.stride = fb->pitches[0];
>  	cache->fb.fence_reg = get_fence_id(fb);
>  	cache->fb.tiling_mode = i915_gem_object_get_tiling(obj);
> @@ -823,7 +823,7 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
>  		return false;
>  	}
>  
> -	if (!pixel_format_is_valid(dev_priv, cache->fb.pixel_format)) {
> +	if (!pixel_format_is_valid(dev_priv, cache->fb.format->format)) {
>  		fbc->no_fbc_reason = "pixel format is invalid";
>  		return false;
>  	}
> @@ -892,7 +892,7 @@ static void intel_fbc_get_reg_params(struct intel_crtc *crtc,
>  	params->crtc.plane = crtc->plane;
>  	params->crtc.fence_y_offset = get_crtc_fence_y_offset(crtc);
>  
> -	params->fb.pixel_format = cache->fb.pixel_format;
> +	params->fb.format = cache->fb.format;
>  	params->fb.stride = cache->fb.stride;
>  	params->fb.fence_reg = cache->fb.fence_reg;
>  
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list