mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-24 03:24:55 +08:00
drm/exynos: check a pixel format to a particular window layer
This patch checks if a requested window supports alpha channel or not. In case of s3c64xx, window 0 doesn't support alpha channel so if the request pixel format is ARGB8888 then change it to XRGB8888. Signed-off-by: Inki Dae <inki.dae@samsung.com> Reviewed-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
This commit is contained in:
parent
a4f38a80f6
commit
5cc4621a17
@ -66,11 +66,13 @@ struct fimd_driver_data {
|
|||||||
|
|
||||||
unsigned int has_shadowcon:1;
|
unsigned int has_shadowcon:1;
|
||||||
unsigned int has_clksel:1;
|
unsigned int has_clksel:1;
|
||||||
|
unsigned int has_limited_fmt:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct fimd_driver_data s3c64xx_fimd_driver_data = {
|
static struct fimd_driver_data s3c64xx_fimd_driver_data = {
|
||||||
.timing_base = 0x0,
|
.timing_base = 0x0,
|
||||||
.has_clksel = 1,
|
.has_clksel = 1,
|
||||||
|
.has_limited_fmt = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct fimd_driver_data exynos4_fimd_driver_data = {
|
static struct fimd_driver_data exynos4_fimd_driver_data = {
|
||||||
@ -420,6 +422,15 @@ static void fimd_win_set_pixfmt(struct device *dev, unsigned int win)
|
|||||||
|
|
||||||
val = WINCONx_ENWIN;
|
val = WINCONx_ENWIN;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In case of s3c64xx, window 0 doesn't support alpha channel.
|
||||||
|
* So the request format is ARGB8888 then change it to XRGB8888.
|
||||||
|
*/
|
||||||
|
if (ctx->driver_data->has_limited_fmt && !win) {
|
||||||
|
if (win_data->pixel_format == DRM_FORMAT_ARGB8888)
|
||||||
|
win_data->pixel_format = DRM_FORMAT_XRGB8888;
|
||||||
|
}
|
||||||
|
|
||||||
switch (win_data->pixel_format) {
|
switch (win_data->pixel_format) {
|
||||||
case DRM_FORMAT_C8:
|
case DRM_FORMAT_C8:
|
||||||
val |= WINCON0_BPPMODE_8BPP_PALETTE;
|
val |= WINCON0_BPPMODE_8BPP_PALETTE;
|
||||||
|
Loading…
Reference in New Issue
Block a user