All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
@ 2018-01-12 16:33 ` Ayan Halder
  0 siblings, 0 replies; 6+ messages in thread
From: Ayan Halder @ 2018-01-12 16:33 UTC (permalink / raw)
  To: liviu.dudau, brian.starkey, malidp, airlied, dri-devel, linux-kernel
  Cc: nd, Ayan Halder

Mali dp needs to disable pixel alpha blending (use layer alpha blending) to
display color formats that do not contain alpha bits per pixel

Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
---
 drivers/gpu/drm/arm/malidp_planes.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
index e741979..4d7d564 100644
--- a/drivers/gpu/drm/arm/malidp_planes.c
+++ b/drivers/gpu/drm/arm/malidp_planes.c
@@ -35,6 +35,9 @@
 #define   LAYER_COMP_MASK		(0x3 << 12)
 #define   LAYER_COMP_PIXEL		(0x3 << 12)
 #define   LAYER_COMP_PLANE		(0x2 << 12)
+#define   LAYER_ALPHA_OFFSET	(16)
+#define   LAYER_ALPHA_MASK		(0xff)
+#define	  LAYER_ALPHA(x)		(((x) & LAYER_ALPHA_MASK) << LAYER_ALPHA_OFFSET)
 #define MALIDP_LAYER_COMPOSE		0x008
 #define MALIDP_LAYER_SIZE		0x00c
 #define   LAYER_H_VAL(x)		(((x) & 0x1fff) << 0)
@@ -268,6 +271,7 @@ static void malidp_de_plane_update(struct drm_plane *plane,
 	struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
 	u32 src_w, src_h, dest_w, dest_h, val;
 	int i;
+	u8 alpha_bits = plane->state->fb->format->alpha;
 
 	mp = to_malidp_plane(plane);
 
@@ -319,12 +323,25 @@ static void malidp_de_plane_update(struct drm_plane *plane,
 	if (plane->state->rotation & DRM_MODE_REFLECT_Y)
 		val |= LAYER_V_FLIP;
 
-	/*
-	 * always enable pixel alpha blending until we have a way to change
-	 * blend modes
-	 */
 	val &= ~LAYER_COMP_MASK;
-	val |= LAYER_COMP_PIXEL;
+	if (alpha_bits > 0) {
+
+		/*
+		 * always enable pixel alpha blending until we have a way to change
+		 * blend modes
+		 */
+		val |= LAYER_COMP_PIXEL;
+	} else {
+
+		/*
+		 * do not enable pixel alpha blending as the color channel does not
+		 * have any alpha information
+		 */
+		val |= LAYER_COMP_PLANE;
+
+		/* Set layer alpha coefficient to 0xff ie fully opaque */
+		val |= LAYER_ALPHA(0xff);
+	}
 
 	val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
 	if (plane->state->crtc) {
-- 
2.7.4

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

* [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
@ 2018-01-12 16:33 ` Ayan Halder
  0 siblings, 0 replies; 6+ messages in thread
From: Ayan Halder @ 2018-01-12 16:33 UTC (permalink / raw)
  To: liviu.dudau, brian.starkey, malidp, airlied, dri-devel, linux-kernel
  Cc: Ayan Halder, nd

Mali dp needs to disable pixel alpha blending (use layer alpha blending) to
display color formats that do not contain alpha bits per pixel

Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
---
 drivers/gpu/drm/arm/malidp_planes.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
index e741979..4d7d564 100644
--- a/drivers/gpu/drm/arm/malidp_planes.c
+++ b/drivers/gpu/drm/arm/malidp_planes.c
@@ -35,6 +35,9 @@
 #define   LAYER_COMP_MASK		(0x3 << 12)
 #define   LAYER_COMP_PIXEL		(0x3 << 12)
 #define   LAYER_COMP_PLANE		(0x2 << 12)
+#define   LAYER_ALPHA_OFFSET	(16)
+#define   LAYER_ALPHA_MASK		(0xff)
+#define	  LAYER_ALPHA(x)		(((x) & LAYER_ALPHA_MASK) << LAYER_ALPHA_OFFSET)
 #define MALIDP_LAYER_COMPOSE		0x008
 #define MALIDP_LAYER_SIZE		0x00c
 #define   LAYER_H_VAL(x)		(((x) & 0x1fff) << 0)
@@ -268,6 +271,7 @@ static void malidp_de_plane_update(struct drm_plane *plane,
 	struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
 	u32 src_w, src_h, dest_w, dest_h, val;
 	int i;
+	u8 alpha_bits = plane->state->fb->format->alpha;
 
 	mp = to_malidp_plane(plane);
 
@@ -319,12 +323,25 @@ static void malidp_de_plane_update(struct drm_plane *plane,
 	if (plane->state->rotation & DRM_MODE_REFLECT_Y)
 		val |= LAYER_V_FLIP;
 
-	/*
-	 * always enable pixel alpha blending until we have a way to change
-	 * blend modes
-	 */
 	val &= ~LAYER_COMP_MASK;
-	val |= LAYER_COMP_PIXEL;
+	if (alpha_bits > 0) {
+
+		/*
+		 * always enable pixel alpha blending until we have a way to change
+		 * blend modes
+		 */
+		val |= LAYER_COMP_PIXEL;
+	} else {
+
+		/*
+		 * do not enable pixel alpha blending as the color channel does not
+		 * have any alpha information
+		 */
+		val |= LAYER_COMP_PLANE;
+
+		/* Set layer alpha coefficient to 0xff ie fully opaque */
+		val |= LAYER_ALPHA(0xff);
+	}
 
 	val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
 	if (plane->state->crtc) {
-- 
2.7.4

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

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

* Re: [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
  2018-01-12 16:33 ` Ayan Halder
@ 2018-01-12 17:06   ` Liviu Dudau
  -1 siblings, 0 replies; 6+ messages in thread
From: Liviu Dudau @ 2018-01-12 17:06 UTC (permalink / raw)
  To: Ayan Halder; +Cc: brian.starkey, malidp, airlied, dri-devel, linux-kernel, nd

Hi Ayan,

On Fri, Jan 12, 2018 at 04:33:07PM +0000, Ayan Halder wrote:
> Mali dp needs to disable pixel alpha blending (use layer alpha blending) to
> display color formats that do not contain alpha bits per pixel

In the future, please mention any dependencies on other patches that are
not part of a series. In this case one needs your other patch, "drm: add
drm_format_alpha_bits".

Anyway, looks good to me.

Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>

Many thanks,
Liviu

> 
> Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
> ---
>  drivers/gpu/drm/arm/malidp_planes.c | 27 ++++++++++++++++++++++-----
>  1 file changed, 22 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
> index e741979..4d7d564 100644
> --- a/drivers/gpu/drm/arm/malidp_planes.c
> +++ b/drivers/gpu/drm/arm/malidp_planes.c
> @@ -35,6 +35,9 @@
>  #define   LAYER_COMP_MASK		(0x3 << 12)
>  #define   LAYER_COMP_PIXEL		(0x3 << 12)
>  #define   LAYER_COMP_PLANE		(0x2 << 12)
> +#define   LAYER_ALPHA_OFFSET	(16)
> +#define   LAYER_ALPHA_MASK		(0xff)
> +#define	  LAYER_ALPHA(x)		(((x) & LAYER_ALPHA_MASK) << LAYER_ALPHA_OFFSET)
>  #define MALIDP_LAYER_COMPOSE		0x008
>  #define MALIDP_LAYER_SIZE		0x00c
>  #define   LAYER_H_VAL(x)		(((x) & 0x1fff) << 0)
> @@ -268,6 +271,7 @@ static void malidp_de_plane_update(struct drm_plane *plane,
>  	struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
>  	u32 src_w, src_h, dest_w, dest_h, val;
>  	int i;
> +	u8 alpha_bits = plane->state->fb->format->alpha;
>  
>  	mp = to_malidp_plane(plane);
>  
> @@ -319,12 +323,25 @@ static void malidp_de_plane_update(struct drm_plane *plane,
>  	if (plane->state->rotation & DRM_MODE_REFLECT_Y)
>  		val |= LAYER_V_FLIP;
>  
> -	/*
> -	 * always enable pixel alpha blending until we have a way to change
> -	 * blend modes
> -	 */
>  	val &= ~LAYER_COMP_MASK;
> -	val |= LAYER_COMP_PIXEL;
> +	if (alpha_bits > 0) {
> +
> +		/*
> +		 * always enable pixel alpha blending until we have a way to change
> +		 * blend modes
> +		 */
> +		val |= LAYER_COMP_PIXEL;
> +	} else {
> +
> +		/*
> +		 * do not enable pixel alpha blending as the color channel does not
> +		 * have any alpha information
> +		 */
> +		val |= LAYER_COMP_PLANE;
> +
> +		/* Set layer alpha coefficient to 0xff ie fully opaque */
> +		val |= LAYER_ALPHA(0xff);
> +	}
>  
>  	val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
>  	if (plane->state->crtc) {
> -- 
> 2.7.4
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

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

* Re: [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
@ 2018-01-12 17:06   ` Liviu Dudau
  0 siblings, 0 replies; 6+ messages in thread
From: Liviu Dudau @ 2018-01-12 17:06 UTC (permalink / raw)
  To: Ayan Halder; +Cc: airlied, linux-kernel, dri-devel, malidp, nd

Hi Ayan,

On Fri, Jan 12, 2018 at 04:33:07PM +0000, Ayan Halder wrote:
> Mali dp needs to disable pixel alpha blending (use layer alpha blending) to
> display color formats that do not contain alpha bits per pixel

In the future, please mention any dependencies on other patches that are
not part of a series. In this case one needs your other patch, "drm: add
drm_format_alpha_bits".

Anyway, looks good to me.

Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>

Many thanks,
Liviu

> 
> Signed-off-by: Ayan Kumar Halder <ayan.halder@arm.com>
> ---
>  drivers/gpu/drm/arm/malidp_planes.c | 27 ++++++++++++++++++++++-----
>  1 file changed, 22 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
> index e741979..4d7d564 100644
> --- a/drivers/gpu/drm/arm/malidp_planes.c
> +++ b/drivers/gpu/drm/arm/malidp_planes.c
> @@ -35,6 +35,9 @@
>  #define   LAYER_COMP_MASK		(0x3 << 12)
>  #define   LAYER_COMP_PIXEL		(0x3 << 12)
>  #define   LAYER_COMP_PLANE		(0x2 << 12)
> +#define   LAYER_ALPHA_OFFSET	(16)
> +#define   LAYER_ALPHA_MASK		(0xff)
> +#define	  LAYER_ALPHA(x)		(((x) & LAYER_ALPHA_MASK) << LAYER_ALPHA_OFFSET)
>  #define MALIDP_LAYER_COMPOSE		0x008
>  #define MALIDP_LAYER_SIZE		0x00c
>  #define   LAYER_H_VAL(x)		(((x) & 0x1fff) << 0)
> @@ -268,6 +271,7 @@ static void malidp_de_plane_update(struct drm_plane *plane,
>  	struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
>  	u32 src_w, src_h, dest_w, dest_h, val;
>  	int i;
> +	u8 alpha_bits = plane->state->fb->format->alpha;
>  
>  	mp = to_malidp_plane(plane);
>  
> @@ -319,12 +323,25 @@ static void malidp_de_plane_update(struct drm_plane *plane,
>  	if (plane->state->rotation & DRM_MODE_REFLECT_Y)
>  		val |= LAYER_V_FLIP;
>  
> -	/*
> -	 * always enable pixel alpha blending until we have a way to change
> -	 * blend modes
> -	 */
>  	val &= ~LAYER_COMP_MASK;
> -	val |= LAYER_COMP_PIXEL;
> +	if (alpha_bits > 0) {
> +
> +		/*
> +		 * always enable pixel alpha blending until we have a way to change
> +		 * blend modes
> +		 */
> +		val |= LAYER_COMP_PIXEL;
> +	} else {
> +
> +		/*
> +		 * do not enable pixel alpha blending as the color channel does not
> +		 * have any alpha information
> +		 */
> +		val |= LAYER_COMP_PLANE;
> +
> +		/* Set layer alpha coefficient to 0xff ie fully opaque */
> +		val |= LAYER_ALPHA(0xff);
> +	}
>  
>  	val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
>  	if (plane->state->crtc) {
> -- 
> 2.7.4
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
  2018-01-12 16:33 ` Ayan Halder
@ 2018-01-15  6:29   ` kbuild test robot
  -1 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2018-01-15  6:29 UTC (permalink / raw)
  To: Ayan Halder
  Cc: kbuild-all, liviu.dudau, brian.starkey, malidp, airlied,
	dri-devel, linux-kernel, Ayan Halder, nd

[-- Attachment #1: Type: text/plain, Size: 4921 bytes --]

Hi Ayan,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.15-rc8 next-20180112]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ayan-Halder/drm-arm-malidp-Disable-pixel-alpha-blending-for-colors-that-do-not-have-alpha/20180115-080603
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/arm/malidp_planes.c: In function 'malidp_de_plane_update':
>> drivers/gpu/drm/arm/malidp_planes.c:275:42: error: 'const struct drm_format_info' has no member named 'alpha'
     u8 alpha_bits = plane->state->fb->format->alpha;
                                             ^~

vim +275 drivers/gpu/drm/arm/malidp_planes.c

   267	
   268	static void malidp_de_plane_update(struct drm_plane *plane,
   269					   struct drm_plane_state *old_state)
   270	{
   271		struct malidp_plane *mp;
   272		struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
   273		u32 src_w, src_h, dest_w, dest_h, val;
   274		int i;
 > 275		u8 alpha_bits = plane->state->fb->format->alpha;
   276	
   277		mp = to_malidp_plane(plane);
   278	
   279		/* convert src values from Q16 fixed point to integer */
   280		src_w = plane->state->src_w >> 16;
   281		src_h = plane->state->src_h >> 16;
   282		dest_w = plane->state->crtc_w;
   283		dest_h = plane->state->crtc_h;
   284	
   285		malidp_hw_write(mp->hwdev, ms->format, mp->layer->base);
   286	
   287		for (i = 0; i < ms->n_planes; i++) {
   288			/* calculate the offset for the layer's plane registers */
   289			u16 ptr = mp->layer->ptr + (i << 4);
   290			dma_addr_t fb_addr = drm_fb_cma_get_gem_addr(plane->state->fb,
   291								     plane->state, i);
   292	
   293			malidp_hw_write(mp->hwdev, lower_32_bits(fb_addr), ptr);
   294			malidp_hw_write(mp->hwdev, upper_32_bits(fb_addr), ptr + 4);
   295		}
   296		malidp_de_set_plane_pitches(mp, ms->n_planes,
   297					    plane->state->fb->pitches);
   298	
   299		malidp_hw_write(mp->hwdev, LAYER_H_VAL(src_w) | LAYER_V_VAL(src_h),
   300				mp->layer->base + MALIDP_LAYER_SIZE);
   301	
   302		malidp_hw_write(mp->hwdev, LAYER_H_VAL(dest_w) | LAYER_V_VAL(dest_h),
   303				mp->layer->base + MALIDP_LAYER_COMP_SIZE);
   304	
   305		malidp_hw_write(mp->hwdev, LAYER_H_VAL(plane->state->crtc_x) |
   306				LAYER_V_VAL(plane->state->crtc_y),
   307				mp->layer->base + MALIDP_LAYER_OFFSET);
   308	
   309		if (mp->layer->id == DE_SMART)
   310			malidp_hw_write(mp->hwdev,
   311					LAYER_H_VAL(src_w) | LAYER_V_VAL(src_h),
   312					mp->layer->base + MALIDP550_LS_R1_IN_SIZE);
   313	
   314		/* first clear the rotation bits */
   315		val = malidp_hw_read(mp->hwdev, mp->layer->base + MALIDP_LAYER_CONTROL);
   316		val &= ~LAYER_ROT_MASK;
   317	
   318		/* setup the rotation and axis flip bits */
   319		if (plane->state->rotation & DRM_MODE_ROTATE_MASK)
   320			val |= ilog2(plane->state->rotation & DRM_MODE_ROTATE_MASK) <<
   321			       LAYER_ROT_OFFSET;
   322		if (plane->state->rotation & DRM_MODE_REFLECT_X)
   323			val |= LAYER_H_FLIP;
   324		if (plane->state->rotation & DRM_MODE_REFLECT_Y)
   325			val |= LAYER_V_FLIP;
   326	
   327		val &= ~LAYER_COMP_MASK;
   328		if (alpha_bits > 0) {
   329	
   330			/*
   331			 * always enable pixel alpha blending until we have a way to change
   332			 * blend modes
   333			 */
   334			val |= LAYER_COMP_PIXEL;
   335		} else {
   336	
   337			/*
   338			 * do not enable pixel alpha blending as the color channel does not
   339			 * have any alpha information
   340			 */
   341			val |= LAYER_COMP_PLANE;
   342	
   343			/* Set layer alpha coefficient to 0xff ie fully opaque */
   344			val |= LAYER_ALPHA(0xff);
   345		}
   346	
   347		val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
   348		if (plane->state->crtc) {
   349			struct malidp_crtc_state *m =
   350				to_malidp_crtc_state(plane->state->crtc->state);
   351	
   352			if (m->scaler_config.scale_enable &&
   353			    m->scaler_config.plane_src_id == mp->layer->id)
   354				val |= LAYER_FLOWCFG(LAYER_FLOWCFG_SCALE_SE);
   355		}
   356	
   357		/* set the 'enable layer' bit */
   358		val |= LAYER_ENABLE;
   359	
   360		malidp_hw_write(mp->hwdev, val,
   361				mp->layer->base + MALIDP_LAYER_CONTROL);
   362	}
   363	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 64692 bytes --]

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

* Re: [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha
@ 2018-01-15  6:29   ` kbuild test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2018-01-15  6:29 UTC (permalink / raw)
  Cc: nd, airlied, liviu.dudau, linux-kernel, dri-devel, malidp,
	kbuild-all, Ayan Halder

[-- Attachment #1: Type: text/plain, Size: 4921 bytes --]

Hi Ayan,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.15-rc8 next-20180112]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ayan-Halder/drm-arm-malidp-Disable-pixel-alpha-blending-for-colors-that-do-not-have-alpha/20180115-080603
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/arm/malidp_planes.c: In function 'malidp_de_plane_update':
>> drivers/gpu/drm/arm/malidp_planes.c:275:42: error: 'const struct drm_format_info' has no member named 'alpha'
     u8 alpha_bits = plane->state->fb->format->alpha;
                                             ^~

vim +275 drivers/gpu/drm/arm/malidp_planes.c

   267	
   268	static void malidp_de_plane_update(struct drm_plane *plane,
   269					   struct drm_plane_state *old_state)
   270	{
   271		struct malidp_plane *mp;
   272		struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
   273		u32 src_w, src_h, dest_w, dest_h, val;
   274		int i;
 > 275		u8 alpha_bits = plane->state->fb->format->alpha;
   276	
   277		mp = to_malidp_plane(plane);
   278	
   279		/* convert src values from Q16 fixed point to integer */
   280		src_w = plane->state->src_w >> 16;
   281		src_h = plane->state->src_h >> 16;
   282		dest_w = plane->state->crtc_w;
   283		dest_h = plane->state->crtc_h;
   284	
   285		malidp_hw_write(mp->hwdev, ms->format, mp->layer->base);
   286	
   287		for (i = 0; i < ms->n_planes; i++) {
   288			/* calculate the offset for the layer's plane registers */
   289			u16 ptr = mp->layer->ptr + (i << 4);
   290			dma_addr_t fb_addr = drm_fb_cma_get_gem_addr(plane->state->fb,
   291								     plane->state, i);
   292	
   293			malidp_hw_write(mp->hwdev, lower_32_bits(fb_addr), ptr);
   294			malidp_hw_write(mp->hwdev, upper_32_bits(fb_addr), ptr + 4);
   295		}
   296		malidp_de_set_plane_pitches(mp, ms->n_planes,
   297					    plane->state->fb->pitches);
   298	
   299		malidp_hw_write(mp->hwdev, LAYER_H_VAL(src_w) | LAYER_V_VAL(src_h),
   300				mp->layer->base + MALIDP_LAYER_SIZE);
   301	
   302		malidp_hw_write(mp->hwdev, LAYER_H_VAL(dest_w) | LAYER_V_VAL(dest_h),
   303				mp->layer->base + MALIDP_LAYER_COMP_SIZE);
   304	
   305		malidp_hw_write(mp->hwdev, LAYER_H_VAL(plane->state->crtc_x) |
   306				LAYER_V_VAL(plane->state->crtc_y),
   307				mp->layer->base + MALIDP_LAYER_OFFSET);
   308	
   309		if (mp->layer->id == DE_SMART)
   310			malidp_hw_write(mp->hwdev,
   311					LAYER_H_VAL(src_w) | LAYER_V_VAL(src_h),
   312					mp->layer->base + MALIDP550_LS_R1_IN_SIZE);
   313	
   314		/* first clear the rotation bits */
   315		val = malidp_hw_read(mp->hwdev, mp->layer->base + MALIDP_LAYER_CONTROL);
   316		val &= ~LAYER_ROT_MASK;
   317	
   318		/* setup the rotation and axis flip bits */
   319		if (plane->state->rotation & DRM_MODE_ROTATE_MASK)
   320			val |= ilog2(plane->state->rotation & DRM_MODE_ROTATE_MASK) <<
   321			       LAYER_ROT_OFFSET;
   322		if (plane->state->rotation & DRM_MODE_REFLECT_X)
   323			val |= LAYER_H_FLIP;
   324		if (plane->state->rotation & DRM_MODE_REFLECT_Y)
   325			val |= LAYER_V_FLIP;
   326	
   327		val &= ~LAYER_COMP_MASK;
   328		if (alpha_bits > 0) {
   329	
   330			/*
   331			 * always enable pixel alpha blending until we have a way to change
   332			 * blend modes
   333			 */
   334			val |= LAYER_COMP_PIXEL;
   335		} else {
   336	
   337			/*
   338			 * do not enable pixel alpha blending as the color channel does not
   339			 * have any alpha information
   340			 */
   341			val |= LAYER_COMP_PLANE;
   342	
   343			/* Set layer alpha coefficient to 0xff ie fully opaque */
   344			val |= LAYER_ALPHA(0xff);
   345		}
   346	
   347		val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
   348		if (plane->state->crtc) {
   349			struct malidp_crtc_state *m =
   350				to_malidp_crtc_state(plane->state->crtc->state);
   351	
   352			if (m->scaler_config.scale_enable &&
   353			    m->scaler_config.plane_src_id == mp->layer->id)
   354				val |= LAYER_FLOWCFG(LAYER_FLOWCFG_SCALE_SE);
   355		}
   356	
   357		/* set the 'enable layer' bit */
   358		val |= LAYER_ENABLE;
   359	
   360		malidp_hw_write(mp->hwdev, val,
   361				mp->layer->base + MALIDP_LAYER_CONTROL);
   362	}
   363	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 64692 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

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

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

end of thread, other threads:[~2018-01-17 13:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-12 16:33 [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha Ayan Halder
2018-01-12 16:33 ` Ayan Halder
2018-01-12 17:06 ` Liviu Dudau
2018-01-12 17:06   ` Liviu Dudau
2018-01-15  6:29 ` kbuild test robot
2018-01-15  6:29   ` kbuild test robot

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.