mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-12-15 19:09:46 +00:00
64 lines
2.3 KiB
Diff
64 lines
2.3 KiB
Diff
From f2a3b64aec5e23c89f5ae5a5121a4226b8ad2ee9 Mon Sep 17 00:00:00 2001
|
|
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
|
Date: Wed, 19 Feb 2020 20:59:27 +0100
|
|
Subject: [PATCH 09/23] drm/sun4i: de2/de3: call csc setup also for UI layer
|
|
|
|
Currently, only VI layer calls CSC setup function. This comes from DE2
|
|
limitation, which doesn't have CSC unit for UI layers. However, DE3 has
|
|
separate CSC units for each layer. This allows display pipeline to make
|
|
output signal in different color spaces. To support both use cases, add
|
|
a call to CSC setup function also in UI layer code. For DE2, this will
|
|
be a no-op, but it will allow DE3 to output signal in multiple formats.
|
|
|
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
|
|
---
|
|
drivers/gpu/drm/sun4i/sun8i_csc.c | 8 +++++---
|
|
drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 6 ++++++
|
|
2 files changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
index 0dcbc0866ae8..68d955c63b05 100644
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_csc.c
|
|
@@ -209,8 +209,10 @@ void sun8i_csc_set_ccsc(struct sun8i_mixer *mixer, int layer,
|
|
return;
|
|
}
|
|
|
|
- base = ccsc_base[mixer->cfg->ccsc][layer];
|
|
+ if (layer < mixer->cfg->vi_num) {
|
|
+ base = ccsc_base[mixer->cfg->ccsc][layer];
|
|
|
|
- sun8i_csc_setup(mixer->engine.regs, base,
|
|
- fmt_type, encoding, range);
|
|
+ sun8i_csc_setup(mixer->engine.regs, base,
|
|
+ fmt_type, encoding, range);
|
|
+ }
|
|
}
|
|
diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
index ca75ca0835a6..884abe3cf773 100644
|
|
--- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
|
|
@@ -20,6 +20,7 @@
|
|
#include <drm/drm_gem_dma_helper.h>
|
|
#include <drm/drm_probe_helper.h>
|
|
|
|
+#include "sun8i_csc.h"
|
|
#include "sun8i_mixer.h"
|
|
#include "sun8i_ui_layer.h"
|
|
#include "sun8i_ui_scaler.h"
|
|
@@ -184,6 +185,11 @@ static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel,
|
|
SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay),
|
|
SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK, val);
|
|
|
|
+ /* Note: encoding and range arguments are ignored for RGB */
|
|
+ sun8i_csc_set_ccsc(mixer, channel, FORMAT_TYPE_RGB,
|
|
+ DRM_COLOR_YCBCR_BT601,
|
|
+ DRM_COLOR_YCBCR_FULL_RANGE);
|
|
+
|
|
return 0;
|
|
}
|
|
|
|
--
|
|
2.42.0
|
|
|