Skip to content

Commit

Permalink
gpu: ipu-v3: image-convert: add some ASCII art to the exposition
Browse files Browse the repository at this point in the history
Visualize the scaling and rotation pipeline with some ASCII art
diagrams. Remove the FIXME comment about missing seam prevention.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Steve Longerbeam <slongerbeam@gmail.com>
  • Loading branch information
Philipp Zabel committed Nov 5, 2018
1 parent d966e23 commit e46279f
Showing 1 changed file with 29 additions and 10 deletions.
39 changes: 29 additions & 10 deletions drivers/gpu/ipu-v3/ipu-image-convert.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,36 @@
* when double_buffering boolean is set).
*
* Note that the input frame must be split up into the same number
* of tiles as the output frame.
* of tiles as the output frame:
*
* FIXME: at this point there is no attempt to deal with visible seams
* at the tile boundaries when upscaling. The seams are caused by a reset
* of the bilinear upscale interpolation when starting a new tile. The
* seams are barely visible for small upscale factors, but become
* increasingly visible as the upscale factor gets larger, since more
* interpolated pixels get thrown out at the tile boundaries. A possilble
* fix might be to overlap tiles of different sizes, but this must be done
* while also maintaining the IDMAC dma buffer address alignment and 8x8 IRT
* alignment restrictions of each tile.
* +---------+-----+
* +-----+---+ | A | B |
* | A | B | | | |
* +-----+---+ --> +---------+-----+
* | C | D | | C | D |
* +-----+---+ | | |
* +---------+-----+
*
* Clockwise 90° rotations are handled by first rescaling into a
* reusable temporary tile buffer and then rotating with the 8x8
* block rotator, writing to the correct destination:
*
* +-----+-----+
* | | |
* +-----+---+ +---------+ | C | A |
* | A | B | | A,B, | | | | |
* +-----+---+ --> | C,D | | --> | | |
* | C | D | +---------+ +-----+-----+
* +-----+---+ | D | B |
* | | |
* +-----+-----+
*
* If the 8x8 block rotator is used, horizontal or vertical flipping
* is done during the rotation step, otherwise flipping is done
* during the scaling step.
* With rotation or flipping, tile order changes between input and
* output image. Tiles are numbered row major from top left to bottom
* right for both input and output image.
*/

#define MAX_STRIPES_W 4
Expand Down

0 comments on commit e46279f

Please sign in to comment.