]> git.baikalelectronics.ru Git - kernel.git/commit
drm/vc4: Correct lbm size and calculation
authorDom Cobley <popcornmix@gmail.com>
Thu, 21 Jan 2021 10:57:58 +0000 (11:57 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Mon, 25 Jan 2021 10:52:59 +0000 (11:52 +0100)
commit966adcb3af6c448c9c1645c7b22812184b87cd23
treebca73da8a6ec881347bd6851056413561a2e57a1
parentc35bb3487648bd1843fbac1b4975f4457a7c028d
drm/vc4: Correct lbm size and calculation

LBM base address is measured in units of pixels per cycle.
That is 4 for 2711 (hvs5) and 2 for 2708.

We are wasting 75% of lbm by indexing without the scaling.
But we were also using too high a size for the lbm resulting
in partial corruption (right hand side) of vertically
scaled images, usually at 4K or lower resolutions with more layers.

The physical RAM of LBM on 2711 is 8 * 1920 * 16 * 12-bit
(pixels are stored 12-bits per component regardless of format).

The LBM address indexes work in units of pixels per clock,
so for 4 pixels per clock that means we have 32 * 1920 = 60K

Fixes: 0d1c2ca1b0b0 ("drm/vc4: Add support for the BCM2711 HVS5")
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Tested-By: Lucas Nussbaum <lucas@debian.org>
Tested-By: Ryutaroh Matsumoto <ryutaroh@ict.e.titech.ac.jp>
Link: https://patchwork.freedesktop.org/patch/msgid/20210121105759.1262699-1-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_hvs.c
drivers/gpu/drm/vc4/vc4_plane.c