[Intel-gfx] [PATCH 4/4] drm/i915: Add support for variable cursor size on 845/865

Chris Wilson chris at chris-wilson.co.uk
Wed Aug 13 09:05:29 CEST 2014


On Tue, Aug 12, 2014 at 07:39:55PM +0300, ville.syrjala at linux.intel.com wrote:
>  	/* Check for which cursor types we support */
> -	if (!((width == 64 && height == 64) ||
> -			(width == 128 && height == 128 && !IS_GEN2(dev)) ||
> -			(width == 256 && height == 256 && !IS_GEN2(dev)))) {
> -		DRM_DEBUG("Cursor dimension not supported\n");
> -		return -EINVAL;
> +	if (IS_845G(dev) || IS_I865G(dev)) {
> +		if (width == 0 || height == 0 || (width & 63) != 0 ||
> +		    width > (IS_845G(dev) ? 64 : 512) || height > 1023) {
> +			DRM_DEBUG("Cursor dimension not supported\n");
> +			return -EINVAL;
> +		}
> +	} else {
> +		if (!((width == 64 && height == 64) ||
> +		      (width == 128 && height == 128 && !IS_GEN2(dev)) ||
> +		      (width == 256 && height == 256 && !IS_GEN2(dev)))) {
> +			DRM_DEBUG("Cursor dimension not supported\n");
> +			return -EINVAL;

Whilst changing this code, could we rewrite this sanely?

	switch (width | height) { // fails width==0 xor height==0
	case 128:
	case 256: if (!IS_GEN2(dev))
	case 64: break;
	default:
		 DRM_DEBUG("Cursor dimension not supported\n");
		 return -EINVAL;
	}

Ok, maybe I was having too much fun, but there are simpler ways of
writing that predicate.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list