video: tegra: dc: Separate allocations for U and V
authorRobert Morell <rmorell@nvidia.com>
Sat, 16 Jul 2011 01:47:06 +0000 (18:47 -0700)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 24 Mar 2012 00:29:35 +0000 (17:29 -0700)
commit0e961ac05d25a2ad691bdc08e352b8bc1a5ffe6a
treebd22ea7061798b551ea71a3709be4051984a5585
parent1fe6e48d2ef5afd28d7b2bdc3c5c60d0308a3d67
video: tegra: dc: Separate allocations for U and V

Currently, dc_ext only takes a single nvmap memory ID per overlay, even
in the YUV case (the U and V planes are expected to be differentiated
using an offset from the beginning of the nvmap allocation).

This is problematic for some software flows, such as certain video
interlacing algorithms that will vary the luma plane while keeping the
chrome plane constant.

This change allows dc_ext clients to specify a different nvmap
allocation for each of the Y, U, and V planes.  If a YUV surface is
used and no U or V plane allocation is specified, the old behavior is
preserved: the U and V offsets are assumed to be within the same
allocation as Y.

Note: this changes the behavior of the offset parameter: the old code
added offset to offset_u and offset_v when using it.  The new code
treats all three offsets as relative to the beginning of the allocation.
It also fixes a bug in the code where offset was applied twice to the Y
plane.  I believe this is safe because the presence of this bug means
that no existing clients are using offset != 0 (or if they are, they're
already broken).

Signed-off-by: Robert Morell <rmorell@nvidia.com>

Bug 850882

Original-Change-Id: I230e03db25baaae73a3bdc0d45a2aec162b87fa4
Reviewed-on: http://git-master/r/41471
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

Rebase-Id: Ra6dd17a50de7150edf104d2a6c9b3b9949919022
arch/arm/mach-tegra/include/mach/dc.h
drivers/video/tegra/dc/dc.c
drivers/video/tegra/dc/ext/dev.c
drivers/video/tegra/dc/ext/tegra_dc_ext_priv.h
drivers/video/tegra/dc/overlay.c
drivers/video/tegra/fb.c
include/video/tegra_dc_ext.h