All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/16] i.MX media mem2mem scaler
@ 2018-06-22 15:52 Philipp Zabel
  2018-06-22 15:52 ` [PATCH 01/16] gpu: ipu-v3: ipu-ic: allow to manually set resize coefficients Philipp Zabel
                   ` (16 more replies)
  0 siblings, 17 replies; 28+ messages in thread
From: Philipp Zabel @ 2018-06-22 15:52 UTC (permalink / raw)
  To: linux-media; +Cc: kernel, Steve Longerbeam

Hi,

we have image conversion code for scaling and colorspace conversion in
the IPUv3 base driver for a while. Since the IC hardware can only write
up to 1024x1024 pixel buffers, it scales to larger output buffers by
splitting the input and output frame into similarly sized tiles.

This causes the issue that the bilinear interpolation resets at the tile
boundary: instead of smoothly interpolating across the seam, there is a
jump in the input sample position that is very apparent for high
upscaling factors. This can be avoided by slightly changing the scaling
coefficients to let the left/top tiles overshoot their input sampling
into the first pixel / line of their right / bottom neighbors. The error
can be further reduced by letting tiles be differently sized and by
selecting seam positions that minimize the input sampling position error
at tile boundaries.
This is complicated by different DMA start address, burst size, and
rotator block size alignment requirements, depending on the input and
output pixel formats, and the fact that flipping happens in different
places depending on the rotation.

This series implements optimal seam position selection and seam hiding
with per-tile resizing coefficients and adds a scaling mem2mem device
to the imx-media driver.

regards
Philipp

Philipp Zabel (16):
  gpu: ipu-v3: ipu-ic: allow to manually set resize coefficients
  gpu: ipu-v3: image-convert: prepare for per-tile configuration
  gpu: ipu-v3: image-convert: calculate per-tile resize coefficients
  gpu: ipu-v3: image-convert: reconfigure IC per tile
  gpu: ipu-v3: image-convert: store tile top/left position
  gpu: ipu-v3: image-convert: calculate tile dimensions and offsets
    outside fill_image
  gpu: ipu-v3: image-convert: move tile alignment helpers
  gpu: ipu-v3: image-convert: select optimal seam positions
  gpu: ipu-v3: image-convert: fix debug output for varying tile sizes
  gpu: ipu-v3: image-convert: relax tile width alignment for NV12 and
    NV16
  gpu: ipu-v3: image-convert: relax input alignment restrictions
  gpu: ipu-v3: image-convert: relax output alignment restrictions
  gpu: ipu-v3: image-convert: fix bytesperline adjustment
  gpu: ipu-v3: image-convert: add some ASCII art to the exposition
  gpu: ipu-v3: image-convert: disable double buffering if necessary
  media: imx: add mem2mem device

 drivers/gpu/ipu-v3/ipu-ic.c                   |  52 +-
 drivers/gpu/ipu-v3/ipu-image-convert.c        | 865 +++++++++++++---
 drivers/staging/media/imx/Kconfig             |   1 +
 drivers/staging/media/imx/Makefile            |   1 +
 drivers/staging/media/imx/imx-media-dev.c     |  11 +
 drivers/staging/media/imx/imx-media-mem2mem.c | 953 ++++++++++++++++++
 drivers/staging/media/imx/imx-media.h         |  10 +
 include/video/imx-ipu-v3.h                    |   6 +
 8 files changed, 1760 insertions(+), 139 deletions(-)
 create mode 100644 drivers/staging/media/imx/imx-media-mem2mem.c

-- 
2.17.1

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2018-07-23 17:57 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-22 15:52 [PATCH 00/16] i.MX media mem2mem scaler Philipp Zabel
2018-06-22 15:52 ` [PATCH 01/16] gpu: ipu-v3: ipu-ic: allow to manually set resize coefficients Philipp Zabel
2018-06-22 15:52 ` [PATCH 02/16] gpu: ipu-v3: image-convert: prepare for per-tile configuration Philipp Zabel
2018-06-22 15:52 ` [PATCH 03/16] gpu: ipu-v3: image-convert: calculate per-tile resize coefficients Philipp Zabel
2018-06-22 15:52 ` [PATCH 04/16] gpu: ipu-v3: image-convert: reconfigure IC per tile Philipp Zabel
2018-06-22 15:52 ` [PATCH 05/16] gpu: ipu-v3: image-convert: store tile top/left position Philipp Zabel
2018-06-22 15:52 ` [PATCH 06/16] gpu: ipu-v3: image-convert: calculate tile dimensions and offsets outside fill_image Philipp Zabel
2018-06-22 15:52 ` [PATCH 07/16] gpu: ipu-v3: image-convert: move tile alignment helpers Philipp Zabel
2018-06-22 15:52 ` [PATCH 08/16] gpu: ipu-v3: image-convert: select optimal seam positions Philipp Zabel
2018-06-22 15:52 ` [PATCH 09/16] gpu: ipu-v3: image-convert: fix debug output for varying tile sizes Philipp Zabel
2018-06-22 15:52 ` [PATCH 10/16] gpu: ipu-v3: image-convert: relax tile width alignment for NV12 and NV16 Philipp Zabel
2018-06-22 15:52 ` [PATCH 11/16] gpu: ipu-v3: image-convert: relax input alignment restrictions Philipp Zabel
2018-06-22 15:52 ` [PATCH 12/16] gpu: ipu-v3: image-convert: relax output " Philipp Zabel
2018-06-22 15:52 ` [PATCH 13/16] gpu: ipu-v3: image-convert: fix bytesperline adjustment Philipp Zabel
2018-06-22 15:52 ` [PATCH 14/16] gpu: ipu-v3: image-convert: add some ASCII art to the exposition Philipp Zabel
2018-06-22 15:52 ` [PATCH 15/16] gpu: ipu-v3: image-convert: disable double buffering if necessary Philipp Zabel
2018-06-22 15:52 ` [PATCH 16/16] media: imx: add mem2mem device Philipp Zabel
2018-06-22 19:37   ` Nicolas Dufresne
2018-06-22 21:03   ` kbuild test robot
2018-07-05 22:09   ` Steve Longerbeam
2018-07-16 14:12     ` Philipp Zabel
2018-07-22 18:02       ` Steve Longerbeam
2018-07-23  7:31         ` Philipp Zabel
2018-07-23 16:54           ` Steve Longerbeam
2018-07-10 12:07   ` Pavel Machek
2018-07-16 14:10     ` Philipp Zabel
2018-07-05 21:55 ` [PATCH 00/16] i.MX media mem2mem scaler Steve Longerbeam
2018-07-16 14:10   ` Philipp Zabel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.