All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] drm/exynos: rework layer blending setup
@ 2015-11-22 16:09 Tobias Jakobi
  2015-11-22 16:09 ` [PATCH v2 1/5] drm/exynos: mixer: refactor layer setup Tobias Jakobi
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Tobias Jakobi @ 2015-11-22 16:09 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: dri-devel, m.szyprowski, gustavo.padovan, jy0922.shim, inki.dae,
	Tobias Jakobi

Hello,

this is a rework of the layer blending setup in the Exynos DRM mixer. There are currently two problems with the setup:

(1) It's static and doesn't take the alpha state of the layers into consideration.
(2) It's spread out through the mixer code.

This rework pushes all the configuration details into a layer_cfg array, which specifies the priority of each layer, and adds dynamic configuration based on layer enable and alpha state.

Two default configs are currently specified, one for mixer versions with a video processor (VP) and one for mixers without VP. The VP gives us one additional layer, the video layer, which natively supports the NV12/NV21 pixelformat.

The blending setup roughly works like this:
1) Find the bottom-most enabled layer. Disable all blending for this layer. This is done because we currently don't expose modification of the mixer background to userspace. Once this is done we can add more flexibility here.
2) Find the next enabled layer in our layer stack. If the layer has a framebuffer with an alpha-pixelformat attached, enable blending for this layer. If not, disable blending.
3) Iterate (2) until all enabled layers are processed.

The series has been tested on a Hardkernel Odroid-X2 (Exynos4412, which has a VP).

You can check the series with libdrm's modetest by setting up two planes, one with a NV12/NV21 format and another one with a ARGB8888 format (or another format with an alpha channel).

With best wishes,
Tobias

v2: General code clean-up, indentation fixes and other small misc changes.
    Layer state caching was added, to reduce the amount of register programming.

Tobias Jakobi (5):
  drm/exynos: mixer: refactor layer setup
  drm/exynos: mixer: introduce mixer_layer_blending()
  drm/exynos: mixer: remove all static blending setup
  drm/exynos: mixer: do blending setup in mixer_cfg_layer()
  drm/exynos: mixer: also allow ARGB1555 and ARGB4444

 drivers/gpu/drm/exynos/exynos_mixer.c | 236 +++++++++++++++++++++++++++++-----
 drivers/gpu/drm/exynos/regs-mixer.h   |   1 +
 2 files changed, 203 insertions(+), 34 deletions(-)

-- 
2.4.9

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

end of thread, other threads:[~2015-11-26 16:42 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-22 16:09 [PATCH v2 0/5] drm/exynos: rework layer blending setup Tobias Jakobi
2015-11-22 16:09 ` [PATCH v2 1/5] drm/exynos: mixer: refactor layer setup Tobias Jakobi
2015-11-23  7:22   ` Inki Dae
2015-11-23 17:44     ` Tobias Jakobi
2015-11-25 16:38       ` Inki Dae
2015-11-22 16:09 ` [PATCH v2 2/5] drm/exynos: mixer: introduce mixer_layer_blending() Tobias Jakobi
2015-11-23  8:33   ` Inki Dae
2015-11-23 17:44     ` Tobias Jakobi
2015-11-25 16:31       ` Inki Dae
2015-11-22 16:09 ` [PATCH v2 3/5] drm/exynos: mixer: remove all static blending setup Tobias Jakobi
2015-11-22 16:09 ` [PATCH v2 4/5] drm/exynos: mixer: do blending setup in mixer_cfg_layer() Tobias Jakobi
2015-11-23  7:34   ` Inki Dae
2015-11-23 17:44     ` Tobias Jakobi
2015-11-25 16:00       ` Inki Dae
2015-11-26 16:42         ` Tobias Jakobi
2015-11-22 16:09 ` [PATCH v2 5/5] drm/exynos: mixer: also allow ARGB1555 and ARGB4444 Tobias Jakobi

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.