[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