]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Implement proper clipping for video sprites
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 24 Apr 2013 15:52:38 +0000 (18:52 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 30 Apr 2013 20:20:09 +0000 (22:20 +0200)
commitf761260f66b7f004d9e12a94a69844b114f748d8
treed7f3d7de199a46c488b0a43333a1e57c14b0ec5d
parent16642d9d880e38d02cb3d357b3ec6ccaa238b3ca
drm/i915: Implement proper clipping for video sprites

Properly clip the source when the destination gets clipped
by the pipe dimensions.

Sadly the video sprite hardware is rather limited so it can't do proper
sub-pixel postitioning. Resort to truncating the source coordinates to
(macro)pixel boundary.

The scaling checks are done using the strict drm_region functions.
Which means that an error is returned when the min/max scaling
ratios are exceeded.

Also do some additional checking against various hardware limits.

v2: Truncate src coords instead of rounding to avoid increasing src
    viewport size, and adapt to changes in drm_calc_{h,v}scale().
v3: Adapt to drm_region->drm_rect rename. Fix misaligned crtc_w for
    packed YUV formats when scaling isn't supported.
v4: Use stricter scaling checks, use drm_rect_equals()
v5: If sprite is below min size, make it invisible instead returning
    an error.
    Use WARN_ON() instead if BUG_ON(), and add one to sanity check the
    src viewport size.
v6: Add comments to remind about src and dst coordinate types

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_sprite.c