drm/tegra: dc: Restore YUV overlay support
authorThierry Reding <treding@nvidia.com>
Mon, 8 Jan 2018 12:40:44 +0000 (13:40 +0100)
committerThierry Reding <treding@nvidia.com>
Mon, 8 Jan 2018 12:44:17 +0000 (13:44 +0100)
Commit ebae8d07435a ("drm/tegra: dc: Implement legacy blending") broke
support for YUV overlays by accident. The reason is that YUV formats are
considered opaque because they have no alpha component, but on the other
hand no corresponding format with an alpha component can be returned. In
the case of YUV formats, the opaque format is the same as the alpha
format, so add the special case to restore YUV overlay support.

Reported-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/plane.c

index 154b4d337d0a8f393258c5061a22c2f5985eeb46..36a06a99369821aed88bbf9701550848b420493e 100644 (file)
@@ -276,6 +276,11 @@ bool tegra_plane_format_has_alpha(unsigned int format)
 
 int tegra_plane_format_get_alpha(unsigned int opaque, unsigned int *alpha)
 {
+       if (tegra_plane_format_is_yuv(opaque, NULL)) {
+               *alpha = opaque;
+               return 0;
+       }
+
        switch (opaque) {
        case WIN_COLOR_DEPTH_B5G5R5X1:
                *alpha = WIN_COLOR_DEPTH_B5G5R5A1;