All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] drm/exynos: don't commit if plane scaling is required
@ 2015-03-19 14:27 Gustavo Padovan
  2015-03-19 14:27 ` [PATCH 2/3] drm/exynos: reset temporary value after write to register Gustavo Padovan
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Gustavo Padovan @ 2015-03-19 14:27 UTC (permalink / raw)
  To: linux-samsung-soc; +Cc: Gustavo Padovan, dri-devel

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

exynos doesn't show scaled planes properly on the screen so
disable the feature and show a message to the user.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/gpu/drm/exynos/exynos_mixer.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 2e3bc57..a95fe84 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -550,6 +550,12 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
 		fmt = ARGB8888;
 	}
 
+	if (win_data->crtc_width != win_data->src_width ||
+	    win_data->crtc_height != win_data->src_height) {
+		DRM_DEBUG_KMS("plane scaling not supported\n");
+		return;
+	}
+
 	/* 2x scaling feature */
 	x_ratio = 0;
 	y_ratio = 0;
-- 
2.1.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH 2/3] drm/exynos: reset temporary value after write to register
  2015-03-19 14:27 [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Gustavo Padovan
@ 2015-03-19 14:27 ` Gustavo Padovan
  2015-04-17  5:49   ` Joonyoung Shim
  2015-03-19 14:27 ` [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format Gustavo Padovan
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Gustavo Padovan @ 2015-03-19 14:27 UTC (permalink / raw)
  To: linux-samsung-soc; +Cc: Gustavo Padovan, dri-devel

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

'val' wasn't clean after its last usage, so we could get garbage value and
send the wrong command to the hw.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/gpu/drm/exynos/exynos_mixer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index a95fe84..7aff88f 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -687,7 +687,7 @@ static void mixer_win_reset(struct mixer_context *ctx)
 	mixer_reg_write(res, MXR_GRAPHIC_CFG(0), val);
 
 	/* Blend layer 1 into layer 0 */
-	val |= MXR_GRP_CFG_BLEND_PRE_MUL;
+	val = MXR_GRP_CFG_BLEND_PRE_MUL;
 	val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
 	mixer_reg_write(res, MXR_GRAPHIC_CFG(1), val);
 
-- 
2.1.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format
  2015-03-19 14:27 [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Gustavo Padovan
  2015-03-19 14:27 ` [PATCH 2/3] drm/exynos: reset temporary value after write to register Gustavo Padovan
@ 2015-03-19 14:27 ` Gustavo Padovan
  2015-04-17  6:16   ` Joonyoung Shim
  2015-03-19 23:11 ` [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Tobias Jakobi
  2015-03-25 23:19 ` Tobias Jakobi
  3 siblings, 1 reply; 10+ messages in thread
From: Gustavo Padovan @ 2015-03-19 14:27 UTC (permalink / raw)
  To: linux-samsung-soc; +Cc: Gustavo Padovan, dri-devel

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Change the switch to use the pixel_format instead of bpp to figure out
if we need to enable or disable the layer blending.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/gpu/drm/exynos/exynos_mixer.c | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 7aff88f..0c54098 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -529,7 +529,7 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
 	unsigned int x_ratio, y_ratio;
 	unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset;
 	dma_addr_t dma_addr;
-	unsigned int fmt;
+	unsigned int fmt, blend;
 	u32 val;
 
 	win_data = &ctx->win_data[win];
@@ -539,15 +539,26 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
 	#define ARGB4444 6
 	#define ARGB8888 7
 
-	switch (win_data->bpp) {
-	case 16:
+	switch (win_data->pixel_format) {
+	case DRM_FORMAT_ARGB4444:
 		fmt = ARGB4444;
+		blend = 1;
 		break;
-	case 32:
+
+	case DRM_FORMAT_ARGB8888:
+		fmt = ARGB8888;
+		blend = 1;
+		break;
+
+	case DRM_FORMAT_XRGB8888:
 		fmt = ARGB8888;
+		blend = 0;
 		break;
+
 	default:
 		fmt = ARGB8888;
+		blend = 0;
+		break;
 	}
 
 	if (win_data->crtc_width != win_data->src_width ||
@@ -586,6 +597,16 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
 	mixer_reg_write(res, MXR_GRAPHIC_SPAN(win),
 			win_data->fb_pitch / (win_data->bpp >> 3));
 
+	if (blend) {
+		val = MXR_GRP_CFG_BLEND_PRE_MUL;
+		val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
+	} else {
+		val = 0;
+	}
+	mixer_reg_writemask(res, MXR_GRAPHIC_CFG(win), val,
+			    MXR_GRP_CFG_BLEND_PRE_MUL
+			    | MXR_GRP_CFG_PIXEL_BLEND_EN);
+
 	/* setup display size */
 	if (ctx->mxr_ver == MXR_VER_128_0_0_184 &&
 		win == MIXER_DEFAULT_WIN) {
-- 
2.1.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 1/3] drm/exynos: don't commit if plane scaling is required
  2015-03-19 14:27 [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Gustavo Padovan
  2015-03-19 14:27 ` [PATCH 2/3] drm/exynos: reset temporary value after write to register Gustavo Padovan
  2015-03-19 14:27 ` [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format Gustavo Padovan
@ 2015-03-19 23:11 ` Tobias Jakobi
  2015-03-25 23:19 ` Tobias Jakobi
  3 siblings, 0 replies; 10+ messages in thread
From: Tobias Jakobi @ 2015-03-19 23:11 UTC (permalink / raw)
  To: Gustavo Padovan, linux-samsung-soc; +Cc: Gustavo Padovan, dri-devel

Hello Gustavo,

Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> exynos doesn't show scaled planes properly on the screen so
> disable the feature and show a message to the user.
do you know if this is a hardware limitation/issue?

With best wishes,
Tobias

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 1/3] drm/exynos: don't commit if plane scaling is required
  2015-03-19 14:27 [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Gustavo Padovan
                   ` (2 preceding siblings ...)
  2015-03-19 23:11 ` [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Tobias Jakobi
@ 2015-03-25 23:19 ` Tobias Jakobi
  3 siblings, 0 replies; 10+ messages in thread
From: Tobias Jakobi @ 2015-03-25 23:19 UTC (permalink / raw)
  To: Gustavo Padovan, linux-samsung-soc
  Cc: dri-devel, inki.dae, jy0922.shim, Gustavo Padovan

Hello,

I've just send an alternate version of this patch, which at least
exposes the 2x scaling feature (which is already alluded to in the code):
https://patchwork.kernel.org/patch/6095901/

@Gustavo: What do you think?

With best wishes,
Tobias


Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> exynos doesn't show scaled planes properly on the screen so
> disable the feature and show a message to the user.
> 
> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> ---
>  drivers/gpu/drm/exynos/exynos_mixer.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 2e3bc57..a95fe84 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -550,6 +550,12 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
>  		fmt = ARGB8888;
>  	}
>  
> +	if (win_data->crtc_width != win_data->src_width ||
> +	    win_data->crtc_height != win_data->src_height) {
> +		DRM_DEBUG_KMS("plane scaling not supported\n");
> +		return;
> +	}
> +
>  	/* 2x scaling feature */
>  	x_ratio = 0;
>  	y_ratio = 0;
> 

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

* Re: [PATCH 2/3] drm/exynos: reset temporary value after write to register
  2015-03-19 14:27 ` [PATCH 2/3] drm/exynos: reset temporary value after write to register Gustavo Padovan
@ 2015-04-17  5:49   ` Joonyoung Shim
  0 siblings, 0 replies; 10+ messages in thread
From: Joonyoung Shim @ 2015-04-17  5:49 UTC (permalink / raw)
  To: Gustavo Padovan, linux-samsung-soc; +Cc: Gustavo Padovan, dri-devel

Hi Gustavo,

On 03/19/2015 11:27 PM, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> 'val' wasn't clean after its last usage, so we could get garbage value and
> send the wrong command to the hw.
> 
> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> ---
>  drivers/gpu/drm/exynos/exynos_mixer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index a95fe84..7aff88f 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -687,7 +687,7 @@ static void mixer_win_reset(struct mixer_context *ctx)
>  	mixer_reg_write(res, MXR_GRAPHIC_CFG(0), val);
>  
>  	/* Blend layer 1 into layer 0 */
> -	val |= MXR_GRP_CFG_BLEND_PRE_MUL;

I know this is not wrong, current code means layer 1 needs above
register setting value of layer 0 as default.

Thanks.

> +	val = MXR_GRP_CFG_BLEND_PRE_MUL;
>  	val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
>  	mixer_reg_write(res, MXR_GRAPHIC_CFG(1), val);
>  
> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format
  2015-03-19 14:27 ` [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format Gustavo Padovan
@ 2015-04-17  6:16   ` Joonyoung Shim
       [not found]     ` <trinity-82a40b8e-a2bb-425f-a1c6-15696573bf32-1429273719156@3capp-gmx-bs40>
  0 siblings, 1 reply; 10+ messages in thread
From: Joonyoung Shim @ 2015-04-17  6:16 UTC (permalink / raw)
  To: Gustavo Padovan, linux-samsung-soc; +Cc: dri-devel, inki.dae, Gustavo Padovan

Hi Gustavo,

On 03/19/2015 11:27 PM, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> Change the switch to use the pixel_format instead of bpp to figure out
> if we need to enable or disable the layer blending.
> 

The default concept is ok about enable or disable of pixel blending
feature by pixel_format, but it will make to possible blending with
background layer. I'm not sure whether it's proper or not.

Thanks.

> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> ---
>  drivers/gpu/drm/exynos/exynos_mixer.c | 29 +++++++++++++++++++++++++----
>  1 file changed, 25 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 7aff88f..0c54098 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -529,7 +529,7 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
>  	unsigned int x_ratio, y_ratio;
>  	unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset;
>  	dma_addr_t dma_addr;
> -	unsigned int fmt;
> +	unsigned int fmt, blend;
>  	u32 val;
>  
>  	win_data = &ctx->win_data[win];
> @@ -539,15 +539,26 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
>  	#define ARGB4444 6
>  	#define ARGB8888 7
>  
> -	switch (win_data->bpp) {
> -	case 16:
> +	switch (win_data->pixel_format) {
> +	case DRM_FORMAT_ARGB4444:
>  		fmt = ARGB4444;
> +		blend = 1;
>  		break;
> -	case 32:
> +
> +	case DRM_FORMAT_ARGB8888:
> +		fmt = ARGB8888;
> +		blend = 1;
> +		break;
> +
> +	case DRM_FORMAT_XRGB8888:
>  		fmt = ARGB8888;
> +		blend = 0;
>  		break;
> +
>  	default:
>  		fmt = ARGB8888;
> +		blend = 0;
> +		break;
>  	}
>  
>  	if (win_data->crtc_width != win_data->src_width ||
> @@ -586,6 +597,16 @@ static void mixer_graph_buffer(struct mixer_context *ctx, int win)
>  	mixer_reg_write(res, MXR_GRAPHIC_SPAN(win),
>  			win_data->fb_pitch / (win_data->bpp >> 3));
>  
> +	if (blend) {
> +		val = MXR_GRP_CFG_BLEND_PRE_MUL;
> +		val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
> +	} else {
> +		val = 0;
> +	}
> +	mixer_reg_writemask(res, MXR_GRAPHIC_CFG(win), val,
> +			    MXR_GRP_CFG_BLEND_PRE_MUL
> +			    | MXR_GRP_CFG_PIXEL_BLEND_EN);
> +
>  	/* setup display size */
>  	if (ctx->mxr_ver == MXR_VER_128_0_0_184 &&
>  		win == MIXER_DEFAULT_WIN) {
> 

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

* Re: Fw: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format
       [not found]     ` <trinity-82a40b8e-a2bb-425f-a1c6-15696573bf32-1429273719156@3capp-gmx-bs40>
@ 2015-04-17 12:31       ` Tobias Jakobi
  2015-04-17 12:55       ` Tobias Jakobi
  1 sibling, 0 replies; 10+ messages in thread
From: Tobias Jakobi @ 2015-04-17 12:31 UTC (permalink / raw)
  To: Tobias Jakobi, gustavo, jy0922.shim, linux-samsung-soc; +Cc: dri-devel

Hello Joonyoung,

> Gesendet: Freitag, 17. April 2015 um 08:16 Uhr
> Von: "Joonyoung Shim" <jy0922.shim@samsung.com>
> An: "Gustavo Padovan" <gustavo@padovan.org>, 
> linux-samsung-soc@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org, inki.dae@samsung.com, "Gustavo
> Padovan" <gustavo.padovan@collabora.co.uk>
> Betreff: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on 
> pixel format
> Hi Gustavo,
> 
> On 03/19/2015 11:27 PM, Gustavo Padovan wrote:
>> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>> 
>> Change the switch to use the pixel_format instead of bpp to figure out
>> if we need to enable or disable the layer blending.
>> 
> 
> The default concept is ok about enable or disable of pixel blending
> feature by pixel_format, but it will make to possible blending with
> background layer. I'm not sure whether it's proper or not.
Wouldn't this be solved by only allowing non-alpha formats for the 
primary plane, or am I confusing the plane ordering?


With best wishes,
Tobias



> 
> Thanks.
> 
>> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>> ---
>> drivers/gpu/drm/exynos/exynos_mixer.c | 29 
>> +++++++++++++++++++++++++----
>> 1 file changed, 25 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c 
>> b/drivers/gpu/drm/exynos/exynos_mixer.c
>> index 7aff88f..0c54098 100644
>> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
>> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
>> @@ -529,7 +529,7 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> unsigned int x_ratio, y_ratio;
>> unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset;
>> dma_addr_t dma_addr;
>> - unsigned int fmt;
>> + unsigned int fmt, blend;
>> u32 val;
>> 
>> win_data = &ctx->win_data[win];
>> @@ -539,15 +539,26 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> #define ARGB4444 6
>> #define ARGB8888 7
>> 
>> - switch (win_data->bpp) {
>> - case 16:
>> + switch (win_data->pixel_format) {
>> + case DRM_FORMAT_ARGB4444:
>> fmt = ARGB4444;
>> + blend = 1;
>> break;
>> - case 32:
>> +
>> + case DRM_FORMAT_ARGB8888:
>> + fmt = ARGB8888;
>> + blend = 1;
>> + break;
>> +
>> + case DRM_FORMAT_XRGB8888:
>> fmt = ARGB8888;
>> + blend = 0;
>> break;
>> +
>> default:
>> fmt = ARGB8888;
>> + blend = 0;
>> + break;
>> }
>> 
>> if (win_data->crtc_width != win_data->src_width ||
>> @@ -586,6 +597,16 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> mixer_reg_write(res, MXR_GRAPHIC_SPAN(win),
>> win_data->fb_pitch / (win_data->bpp >> 3));
>> 
>> + if (blend) {
>> + val = MXR_GRP_CFG_BLEND_PRE_MUL;
>> + val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
>> + } else {
>> + val = 0;
>> + }
>> + mixer_reg_writemask(res, MXR_GRAPHIC_CFG(win), val,
>> + MXR_GRP_CFG_BLEND_PRE_MUL
>> + | MXR_GRP_CFG_PIXEL_BLEND_EN);
>> +
>> /* setup display size */
>> if (ctx->mxr_ver == MXR_VER_128_0_0_184 &&
>> win == MIXER_DEFAULT_WIN) {
>> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe 
> linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: Fw: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format
       [not found]     ` <trinity-82a40b8e-a2bb-425f-a1c6-15696573bf32-1429273719156@3capp-gmx-bs40>
  2015-04-17 12:31       ` Fw: " Tobias Jakobi
@ 2015-04-17 12:55       ` Tobias Jakobi
  2015-04-17 13:07         ` Ville Syrjälä
  1 sibling, 1 reply; 10+ messages in thread
From: Tobias Jakobi @ 2015-04-17 12:55 UTC (permalink / raw)
  To: Tobias Jakobi, gustavo, jy0922.shim, linux-samsung-soc; +Cc: dri-devel

Hello Joonyoung,

I thought about this some more.


> Gesendet: Freitag, 17. April 2015 um 08:16 Uhr
> Von: "Joonyoung Shim" <jy0922.shim@samsung.com>
> An: "Gustavo Padovan" <gustavo@padovan.org>, 
> linux-samsung-soc@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org, inki.dae@samsung.com, "Gustavo
> Padovan" <gustavo.padovan@collabora.co.uk>
> Betreff: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on 
> pixel format
> Hi Gustavo,
> 
> On 03/19/2015 11:27 PM, Gustavo Padovan wrote:
>> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>> 
>> Change the switch to use the pixel_format instead of bpp to figure out
>> if we need to enable or disable the layer blending.
>> 
> 
> The default concept is ok about enable or disable of pixel blending
> feature by pixel_format, but it will make to possible blending with
> background layer. I'm not sure whether it's proper or not.
I think one of the reasons why this is currently causing confusion is 
because the background layer is not exposed to userspace. So an idea 
would be to expose BG as a normal DRM plane, with a background_rgb 
propery.

Then we just need to keep track which planes are enabled.

E.g. if just the primary plane is enabled, then we ignore any alpha 
pixelformat (in the sense that we map it to its non-alpha counterpart). 
If another plane, which is located 'underneath', is enabled, then we 
honor the alpha. This could then be the background plane.


With best wishes,
Tobias



> 
> Thanks.
> 
>> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
>> ---
>> drivers/gpu/drm/exynos/exynos_mixer.c | 29 
>> +++++++++++++++++++++++++----
>> 1 file changed, 25 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c 
>> b/drivers/gpu/drm/exynos/exynos_mixer.c
>> index 7aff88f..0c54098 100644
>> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
>> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
>> @@ -529,7 +529,7 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> unsigned int x_ratio, y_ratio;
>> unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset;
>> dma_addr_t dma_addr;
>> - unsigned int fmt;
>> + unsigned int fmt, blend;
>> u32 val;
>> 
>> win_data = &ctx->win_data[win];
>> @@ -539,15 +539,26 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> #define ARGB4444 6
>> #define ARGB8888 7
>> 
>> - switch (win_data->bpp) {
>> - case 16:
>> + switch (win_data->pixel_format) {
>> + case DRM_FORMAT_ARGB4444:
>> fmt = ARGB4444;
>> + blend = 1;
>> break;
>> - case 32:
>> +
>> + case DRM_FORMAT_ARGB8888:
>> + fmt = ARGB8888;
>> + blend = 1;
>> + break;
>> +
>> + case DRM_FORMAT_XRGB8888:
>> fmt = ARGB8888;
>> + blend = 0;
>> break;
>> +
>> default:
>> fmt = ARGB8888;
>> + blend = 0;
>> + break;
>> }
>> 
>> if (win_data->crtc_width != win_data->src_width ||
>> @@ -586,6 +597,16 @@ static void mixer_graph_buffer(struct 
>> mixer_context *ctx, int win)
>> mixer_reg_write(res, MXR_GRAPHIC_SPAN(win),
>> win_data->fb_pitch / (win_data->bpp >> 3));
>> 
>> + if (blend) {
>> + val = MXR_GRP_CFG_BLEND_PRE_MUL;
>> + val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
>> + } else {
>> + val = 0;
>> + }
>> + mixer_reg_writemask(res, MXR_GRAPHIC_CFG(win), val,
>> + MXR_GRP_CFG_BLEND_PRE_MUL
>> + | MXR_GRP_CFG_PIXEL_BLEND_EN);
>> +
>> /* setup display size */
>> if (ctx->mxr_ver == MXR_VER_128_0_0_184 &&
>> win == MIXER_DEFAULT_WIN) {
>> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe 
> linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: Fw: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format
  2015-04-17 12:55       ` Tobias Jakobi
@ 2015-04-17 13:07         ` Ville Syrjälä
  0 siblings, 0 replies; 10+ messages in thread
From: Ville Syrjälä @ 2015-04-17 13:07 UTC (permalink / raw)
  To: Tobias Jakobi; +Cc: Tobias Jakobi, linux-samsung-soc, dri-devel

On Fri, Apr 17, 2015 at 02:55:57PM +0200, Tobias Jakobi wrote:
> Hello Joonyoung,
> 
> I thought about this some more.
> 
> 
> > Gesendet: Freitag, 17. April 2015 um 08:16 Uhr
> > Von: "Joonyoung Shim" <jy0922.shim@samsung.com>
> > An: "Gustavo Padovan" <gustavo@padovan.org>, 
> > linux-samsung-soc@vger.kernel.org
> > Cc: dri-devel@lists.freedesktop.org, inki.dae@samsung.com, "Gustavo
> > Padovan" <gustavo.padovan@collabora.co.uk>
> > Betreff: Re: [PATCH 3/3] drm/exynos: enable/disable blend based on 
> > pixel format
> > Hi Gustavo,
> > 
> > On 03/19/2015 11:27 PM, Gustavo Padovan wrote:
> >> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> >> 
> >> Change the switch to use the pixel_format instead of bpp to figure out
> >> if we need to enable or disable the layer blending.
> >> 
> > 
> > The default concept is ok about enable or disable of pixel blending
> > feature by pixel_format, but it will make to possible blending with
> > background layer. I'm not sure whether it's proper or not.
> I think one of the reasons why this is currently causing confusion is 
> because the background layer is not exposed to userspace. So an idea 
> would be to expose BG as a normal DRM plane, with a background_rgb 
> propery.

Is it just a color? The plan is to expose that simply as a crtc
property. There have been some patches floating around for intel.
Not sure if those were cc:d to dri-devel properly.

> 
> Then we just need to keep track which planes are enabled.
> 
> E.g. if just the primary plane is enabled, then we ignore any alpha 
> pixelformat (in the sense that we map it to its non-alpha counterpart). 
> If another plane, which is located 'underneath', is enabled, then we 
> honor the alpha. This could then be the background plane.
> 
> 
> With best wishes,
> Tobias
> 
> 
> 
> > 
> > Thanks.
> > 
> >> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> >> ---
> >> drivers/gpu/drm/exynos/exynos_mixer.c | 29 
> >> +++++++++++++++++++++++++----
> >> 1 file changed, 25 insertions(+), 4 deletions(-)
> >> 
> >> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c 
> >> b/drivers/gpu/drm/exynos/exynos_mixer.c
> >> index 7aff88f..0c54098 100644
> >> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> >> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> >> @@ -529,7 +529,7 @@ static void mixer_graph_buffer(struct 
> >> mixer_context *ctx, int win)
> >> unsigned int x_ratio, y_ratio;
> >> unsigned int src_x_offset, src_y_offset, dst_x_offset, dst_y_offset;
> >> dma_addr_t dma_addr;
> >> - unsigned int fmt;
> >> + unsigned int fmt, blend;
> >> u32 val;
> >> 
> >> win_data = &ctx->win_data[win];
> >> @@ -539,15 +539,26 @@ static void mixer_graph_buffer(struct 
> >> mixer_context *ctx, int win)
> >> #define ARGB4444 6
> >> #define ARGB8888 7
> >> 
> >> - switch (win_data->bpp) {
> >> - case 16:
> >> + switch (win_data->pixel_format) {
> >> + case DRM_FORMAT_ARGB4444:
> >> fmt = ARGB4444;
> >> + blend = 1;
> >> break;
> >> - case 32:
> >> +
> >> + case DRM_FORMAT_ARGB8888:
> >> + fmt = ARGB8888;
> >> + blend = 1;
> >> + break;
> >> +
> >> + case DRM_FORMAT_XRGB8888:
> >> fmt = ARGB8888;
> >> + blend = 0;
> >> break;
> >> +
> >> default:
> >> fmt = ARGB8888;
> >> + blend = 0;
> >> + break;
> >> }
> >> 
> >> if (win_data->crtc_width != win_data->src_width ||
> >> @@ -586,6 +597,16 @@ static void mixer_graph_buffer(struct 
> >> mixer_context *ctx, int win)
> >> mixer_reg_write(res, MXR_GRAPHIC_SPAN(win),
> >> win_data->fb_pitch / (win_data->bpp >> 3));
> >> 
> >> + if (blend) {
> >> + val = MXR_GRP_CFG_BLEND_PRE_MUL;
> >> + val |= MXR_GRP_CFG_PIXEL_BLEND_EN;
> >> + } else {
> >> + val = 0;
> >> + }
> >> + mixer_reg_writemask(res, MXR_GRAPHIC_CFG(win), val,
> >> + MXR_GRP_CFG_BLEND_PRE_MUL
> >> + | MXR_GRP_CFG_PIXEL_BLEND_EN);
> >> +
> >> /* setup display size */
> >> if (ctx->mxr_ver == MXR_VER_128_0_0_184 &&
> >> win == MIXER_DEFAULT_WIN) {
> >> 
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe 
> > linux-samsung-soc" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2015-04-17 13:07 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-19 14:27 [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Gustavo Padovan
2015-03-19 14:27 ` [PATCH 2/3] drm/exynos: reset temporary value after write to register Gustavo Padovan
2015-04-17  5:49   ` Joonyoung Shim
2015-03-19 14:27 ` [PATCH 3/3] drm/exynos: enable/disable blend based on pixel format Gustavo Padovan
2015-04-17  6:16   ` Joonyoung Shim
     [not found]     ` <trinity-82a40b8e-a2bb-425f-a1c6-15696573bf32-1429273719156@3capp-gmx-bs40>
2015-04-17 12:31       ` Fw: " Tobias Jakobi
2015-04-17 12:55       ` Tobias Jakobi
2015-04-17 13:07         ` Ville Syrjälä
2015-03-19 23:11 ` [PATCH 1/3] drm/exynos: don't commit if plane scaling is required Tobias Jakobi
2015-03-25 23:19 ` 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.