All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-07-28 13:48 ` Maxime Ripard
  0 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-07-28 13:48 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

Unlike what we previously thought, only the per-pixel alpha is broken on
the lowest plane and the per-plane alpha isn't. Remove the check on the
alpha property being set on the lowest plane to reject a mode.

Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/sun4i/sun4i_backend.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
index 072ea113e6be..6d0f0526515f 100644
--- a/drivers/gpu/drm/sun4i/sun4i_backend.c
+++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
@@ -589,7 +589,6 @@ static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
 
 	/* We can't have an alpha plane at the lowest position */
 	if (!backend->quirks->supports_lowest_plane_alpha &&
-	    (plane_states[0]->fb->format->has_alpha ||
 	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
 		return -EINVAL;
 
-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-07-28 13:48 ` Maxime Ripard
  0 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-07-28 13:48 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

Unlike what we previously thought, only the per-pixel alpha is broken on
the lowest plane and the per-plane alpha isn't. Remove the check on the
alpha property being set on the lowest plane to reject a mode.

Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/sun4i/sun4i_backend.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
index 072ea113e6be..6d0f0526515f 100644
--- a/drivers/gpu/drm/sun4i/sun4i_backend.c
+++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
@@ -589,7 +589,6 @@ static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
 
 	/* We can't have an alpha plane at the lowest position */
 	if (!backend->quirks->supports_lowest_plane_alpha &&
-	    (plane_states[0]->fb->format->has_alpha ||
 	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
 		return -EINVAL;
 
-- 
2.26.2

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

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

* [PATCH 2/2] drm/sun4i: backend: Disable alpha on the lowest plane on the A20
  2020-07-28 13:48 ` Maxime Ripard
@ 2020-07-28 13:48   ` Maxime Ripard
  -1 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-07-28 13:48 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

Unlike we previously thought, the per-pixel alpha is just as broken on the
A20 as it is on the A10. Remove the quirk that says we can use it.

Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/sun4i/sun4i_backend.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
index 6d0f0526515f..24574bef28f9 100644
--- a/drivers/gpu/drm/sun4i/sun4i_backend.c
+++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
@@ -994,7 +994,6 @@ static const struct sun4i_backend_quirks sun6i_backend_quirks = {
 
 static const struct sun4i_backend_quirks sun7i_backend_quirks = {
 	.needs_output_muxing = true,
-	.supports_lowest_plane_alpha = true,
 };
 
 static const struct sun4i_backend_quirks sun8i_a33_backend_quirks = {
-- 
2.26.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 2/2] drm/sun4i: backend: Disable alpha on the lowest plane on the A20
@ 2020-07-28 13:48   ` Maxime Ripard
  0 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-07-28 13:48 UTC (permalink / raw)
  To: Chen-Yu Tsai, Maxime Ripard
  Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

Unlike we previously thought, the per-pixel alpha is just as broken on the
A20 as it is on the A10. Remove the quirk that says we can use it.

Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/sun4i/sun4i_backend.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c
index 6d0f0526515f..24574bef28f9 100644
--- a/drivers/gpu/drm/sun4i/sun4i_backend.c
+++ b/drivers/gpu/drm/sun4i/sun4i_backend.c
@@ -994,7 +994,6 @@ static const struct sun4i_backend_quirks sun6i_backend_quirks = {
 
 static const struct sun4i_backend_quirks sun7i_backend_quirks = {
 	.needs_output_muxing = true,
-	.supports_lowest_plane_alpha = true,
 };
 
 static const struct sun4i_backend_quirks sun8i_a33_backend_quirks = {
-- 
2.26.2

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

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
  2020-07-28 13:48 ` Maxime Ripard
  (?)
@ 2020-07-29  2:25   ` kernel test robot
  -1 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-07-29  2:25 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Paul Kocialkowski, kbuild-all, dri-devel, linux-arm-kernel

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

Hi Maxime,

I love your patch! Yet something to improve:

[auto build test ERROR on sunxi/sunxi/for-next]
[also build test ERROR on soc/for-next xlnx/master linus/master v5.8-rc7 next-20200728]
[cannot apply to mripard/sunxi/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-sun4i-backend-Support-alpha-property-on-lowest-plane/20200729-033432
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        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
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/sun4i/sun4i_backend.c: In function 'sun4i_backend_atomic_check':
>> drivers/gpu/drm/sun4i/sun4i_backend.c:592:57: error: expected statement before ')' token
     592 |      (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
         |                                                         ^

vim +592 drivers/gpu/drm/sun4i/sun4i_backend.c

dd63250c55bf26 Maxime Ripard     2018-01-22  484  
96180dde23b799 Maxime Ripard     2018-01-22  485  static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
96180dde23b799 Maxime Ripard     2018-01-22  486  				      struct drm_crtc_state *crtc_state)
96180dde23b799 Maxime Ripard     2018-01-22  487  {
8f1f25534fff09 Maxime Ripard     2018-02-16  488  	struct drm_plane_state *plane_states[SUN4I_BACKEND_NUM_LAYERS] = { 0 };
dcf496a6a60873 Paul Kocialkowski 2018-07-19  489  	struct sun4i_backend *backend = engine_to_sun4i_backend(engine);
96180dde23b799 Maxime Ripard     2018-01-22  490  	struct drm_atomic_state *state = crtc_state->state;
96180dde23b799 Maxime Ripard     2018-01-22  491  	struct drm_device *drm = state->dev;
96180dde23b799 Maxime Ripard     2018-01-22  492  	struct drm_plane *plane;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  493  	unsigned int num_planes = 0;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  494  	unsigned int num_alpha_planes = 0;
96180dde23b799 Maxime Ripard     2018-01-22  495  	unsigned int num_frontend_planes = 0;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  496  	unsigned int num_alpha_planes_max = 1;
32463556a634f3 Maxime Ripard     2018-03-01  497  	unsigned int num_yuv_planes = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  498  	unsigned int current_pipe = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  499  	unsigned int i;
96180dde23b799 Maxime Ripard     2018-01-22  500  
96180dde23b799 Maxime Ripard     2018-01-22  501  	DRM_DEBUG_DRIVER("Starting checking our planes\n");
96180dde23b799 Maxime Ripard     2018-01-22  502  
96180dde23b799 Maxime Ripard     2018-01-22  503  	if (!crtc_state->planes_changed)
96180dde23b799 Maxime Ripard     2018-01-22  504  		return 0;
96180dde23b799 Maxime Ripard     2018-01-22  505  
96180dde23b799 Maxime Ripard     2018-01-22  506  	drm_for_each_plane_mask(plane, drm, crtc_state->plane_mask) {
96180dde23b799 Maxime Ripard     2018-01-22  507  		struct drm_plane_state *plane_state =
96180dde23b799 Maxime Ripard     2018-01-22  508  			drm_atomic_get_plane_state(state, plane);
96180dde23b799 Maxime Ripard     2018-01-22  509  		struct sun4i_layer_state *layer_state =
96180dde23b799 Maxime Ripard     2018-01-22  510  			state_to_sun4i_layer_state(plane_state);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  511  		struct drm_framebuffer *fb = plane_state->fb;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  512  		struct drm_format_name_buf format_name;
96180dde23b799 Maxime Ripard     2018-01-22  513  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  514  		if (!sun4i_backend_plane_is_supported(plane_state,
ab6985108a53d5 Paul Kocialkowski 2018-11-23  515  						      &layer_state->uses_frontend))
ab6985108a53d5 Paul Kocialkowski 2018-11-23  516  			return -EINVAL;
ab6985108a53d5 Paul Kocialkowski 2018-11-23  517  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  518  		if (layer_state->uses_frontend) {
96180dde23b799 Maxime Ripard     2018-01-22  519  			DRM_DEBUG_DRIVER("Using the frontend for plane %d\n",
96180dde23b799 Maxime Ripard     2018-01-22  520  					 plane->index);
96180dde23b799 Maxime Ripard     2018-01-22  521  			num_frontend_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  522  		} else {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  523  			if (fb->format->is_yuv) {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  524  				DRM_DEBUG_DRIVER("Plane FB format is YUV\n");
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  525  				num_yuv_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  526  			}
96180dde23b799 Maxime Ripard     2018-01-22  527  		}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  528  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  529  		DRM_DEBUG_DRIVER("Plane FB format is %s\n",
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  530  				 drm_get_format_name(fb->format->format,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  531  						     &format_name));
d99008aab9f57d Maxime Ripard     2018-04-11  532  		if (fb->format->has_alpha || (plane_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  533  			num_alpha_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  534  
8f1f25534fff09 Maxime Ripard     2018-02-16  535  		DRM_DEBUG_DRIVER("Plane zpos is %d\n",
8f1f25534fff09 Maxime Ripard     2018-02-16  536  				 plane_state->normalized_zpos);
8f1f25534fff09 Maxime Ripard     2018-02-16  537  
8f1f25534fff09 Maxime Ripard     2018-02-16  538  		/* Sort our planes by Zpos */
8f1f25534fff09 Maxime Ripard     2018-02-16  539  		plane_states[plane_state->normalized_zpos] = plane_state;
8f1f25534fff09 Maxime Ripard     2018-02-16  540  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  541  		num_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  542  	}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  543  
8f1f25534fff09 Maxime Ripard     2018-02-16  544  	/* All our planes were disabled, bail out */
8f1f25534fff09 Maxime Ripard     2018-02-16  545  	if (!num_planes)
8f1f25534fff09 Maxime Ripard     2018-02-16  546  		return 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  547  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  548  	/*
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  549  	 * The hardware is a bit unusual here.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  550  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  551  	 * Even though it supports 4 layers, it does the composition
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  552  	 * in two separate steps.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  553  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  554  	 * The first one is assigning a layer to one of its two
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  555  	 * pipes. If more that 1 layer is assigned to the same pipe,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  556  	 * and if pixels overlaps, the pipe will take the pixel from
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  557  	 * the layer with the highest priority.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  558  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  559  	 * The second step is the actual alpha blending, that takes
dcf496a6a60873 Paul Kocialkowski 2018-07-19  560  	 * the two pipes as input, and uses the potential alpha
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  561  	 * component to do the transparency between the two.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  562  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  563  	 * This two-step scenario makes us unable to guarantee a
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  564  	 * robust alpha blending between the 4 layers in all
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  565  	 * situations, since this means that we need to have one layer
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  566  	 * with alpha at the lowest position of our two pipes.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  567  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  568  	 * However, we cannot even do that on every platform, since
dcf496a6a60873 Paul Kocialkowski 2018-07-19  569  	 * the hardware has a bug where the lowest plane of the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  570  	 * pipe (pipe 0, priority 0), if it has any alpha, will
dcf496a6a60873 Paul Kocialkowski 2018-07-19  571  	 * discard the pixel data entirely and just display the pixels
dcf496a6a60873 Paul Kocialkowski 2018-07-19  572  	 * in the background color (black by default).
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  573  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  574  	 * This means that on the affected platforms, we effectively
dcf496a6a60873 Paul Kocialkowski 2018-07-19  575  	 * have only three valid configurations with alpha, all of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  576  	 * them with the alpha being on pipe1 with the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  577  	 * position, which can be 1, 2 or 3 depending on the number of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  578  	 * planes and their zpos.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  579  	 */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  580  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  581  	/* For platforms that are not affected by the issue described above. */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  582  	if (backend->quirks->supports_lowest_plane_alpha)
dcf496a6a60873 Paul Kocialkowski 2018-07-19  583  		num_alpha_planes_max++;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  584  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  585  	if (num_alpha_planes > num_alpha_planes_max) {
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  586  		DRM_DEBUG_DRIVER("Too many planes with alpha, rejecting...\n");
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  587  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  588  	}
96180dde23b799 Maxime Ripard     2018-01-22  589  
8f1f25534fff09 Maxime Ripard     2018-02-16  590  	/* We can't have an alpha plane at the lowest position */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  591  	if (!backend->quirks->supports_lowest_plane_alpha &&
dcf496a6a60873 Paul Kocialkowski 2018-07-19 @592  	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
8f1f25534fff09 Maxime Ripard     2018-02-16  593  		return -EINVAL;
8f1f25534fff09 Maxime Ripard     2018-02-16  594  
8f1f25534fff09 Maxime Ripard     2018-02-16  595  	for (i = 1; i < num_planes; i++) {
8f1f25534fff09 Maxime Ripard     2018-02-16  596  		struct drm_plane_state *p_state = plane_states[i];
8f1f25534fff09 Maxime Ripard     2018-02-16  597  		struct drm_framebuffer *fb = p_state->fb;
8f1f25534fff09 Maxime Ripard     2018-02-16  598  		struct sun4i_layer_state *s_state = state_to_sun4i_layer_state(p_state);
8f1f25534fff09 Maxime Ripard     2018-02-16  599  
8f1f25534fff09 Maxime Ripard     2018-02-16  600  		/*
8f1f25534fff09 Maxime Ripard     2018-02-16  601  		 * The only alpha position is the lowest plane of the
8f1f25534fff09 Maxime Ripard     2018-02-16  602  		 * second pipe.
8f1f25534fff09 Maxime Ripard     2018-02-16  603  		 */
d99008aab9f57d Maxime Ripard     2018-04-11  604  		if (fb->format->has_alpha || (p_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
8f1f25534fff09 Maxime Ripard     2018-02-16  605  			current_pipe++;
8f1f25534fff09 Maxime Ripard     2018-02-16  606  
8f1f25534fff09 Maxime Ripard     2018-02-16  607  		s_state->pipe = current_pipe;
8f1f25534fff09 Maxime Ripard     2018-02-16  608  	}
8f1f25534fff09 Maxime Ripard     2018-02-16  609  
32463556a634f3 Maxime Ripard     2018-03-01  610  	/* We can only have a single YUV plane at a time */
32463556a634f3 Maxime Ripard     2018-03-01  611  	if (num_yuv_planes > SUN4I_BACKEND_NUM_YUV_PLANES) {
32463556a634f3 Maxime Ripard     2018-03-01  612  		DRM_DEBUG_DRIVER("Too many planes with YUV, rejecting...\n");
32463556a634f3 Maxime Ripard     2018-03-01  613  		return -EINVAL;
32463556a634f3 Maxime Ripard     2018-03-01  614  	}
32463556a634f3 Maxime Ripard     2018-03-01  615  
96180dde23b799 Maxime Ripard     2018-01-22  616  	if (num_frontend_planes > SUN4I_BACKEND_NUM_FRONTEND_LAYERS) {
96180dde23b799 Maxime Ripard     2018-01-22  617  		DRM_DEBUG_DRIVER("Too many planes going through the frontend, rejecting\n");
96180dde23b799 Maxime Ripard     2018-01-22  618  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  619  	}
96180dde23b799 Maxime Ripard     2018-01-22  620  
32463556a634f3 Maxime Ripard     2018-03-01  621  	DRM_DEBUG_DRIVER("State valid with %u planes, %u alpha, %u video, %u YUV\n",
32463556a634f3 Maxime Ripard     2018-03-01  622  			 num_planes, num_alpha_planes, num_frontend_planes,
32463556a634f3 Maxime Ripard     2018-03-01  623  			 num_yuv_planes);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  624  
96180dde23b799 Maxime Ripard     2018-01-22  625  	return 0;
96180dde23b799 Maxime Ripard     2018-01-22  626  }
96180dde23b799 Maxime Ripard     2018-01-22  627  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

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

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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-07-29  2:25   ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-07-29  2:25 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Paul Kocialkowski, kbuild-all, dri-devel, linux-arm-kernel

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

Hi Maxime,

I love your patch! Yet something to improve:

[auto build test ERROR on sunxi/sunxi/for-next]
[also build test ERROR on soc/for-next xlnx/master linus/master v5.8-rc7 next-20200728]
[cannot apply to mripard/sunxi/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-sun4i-backend-Support-alpha-property-on-lowest-plane/20200729-033432
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        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
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/sun4i/sun4i_backend.c: In function 'sun4i_backend_atomic_check':
>> drivers/gpu/drm/sun4i/sun4i_backend.c:592:57: error: expected statement before ')' token
     592 |      (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
         |                                                         ^

vim +592 drivers/gpu/drm/sun4i/sun4i_backend.c

dd63250c55bf26 Maxime Ripard     2018-01-22  484  
96180dde23b799 Maxime Ripard     2018-01-22  485  static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
96180dde23b799 Maxime Ripard     2018-01-22  486  				      struct drm_crtc_state *crtc_state)
96180dde23b799 Maxime Ripard     2018-01-22  487  {
8f1f25534fff09 Maxime Ripard     2018-02-16  488  	struct drm_plane_state *plane_states[SUN4I_BACKEND_NUM_LAYERS] = { 0 };
dcf496a6a60873 Paul Kocialkowski 2018-07-19  489  	struct sun4i_backend *backend = engine_to_sun4i_backend(engine);
96180dde23b799 Maxime Ripard     2018-01-22  490  	struct drm_atomic_state *state = crtc_state->state;
96180dde23b799 Maxime Ripard     2018-01-22  491  	struct drm_device *drm = state->dev;
96180dde23b799 Maxime Ripard     2018-01-22  492  	struct drm_plane *plane;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  493  	unsigned int num_planes = 0;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  494  	unsigned int num_alpha_planes = 0;
96180dde23b799 Maxime Ripard     2018-01-22  495  	unsigned int num_frontend_planes = 0;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  496  	unsigned int num_alpha_planes_max = 1;
32463556a634f3 Maxime Ripard     2018-03-01  497  	unsigned int num_yuv_planes = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  498  	unsigned int current_pipe = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  499  	unsigned int i;
96180dde23b799 Maxime Ripard     2018-01-22  500  
96180dde23b799 Maxime Ripard     2018-01-22  501  	DRM_DEBUG_DRIVER("Starting checking our planes\n");
96180dde23b799 Maxime Ripard     2018-01-22  502  
96180dde23b799 Maxime Ripard     2018-01-22  503  	if (!crtc_state->planes_changed)
96180dde23b799 Maxime Ripard     2018-01-22  504  		return 0;
96180dde23b799 Maxime Ripard     2018-01-22  505  
96180dde23b799 Maxime Ripard     2018-01-22  506  	drm_for_each_plane_mask(plane, drm, crtc_state->plane_mask) {
96180dde23b799 Maxime Ripard     2018-01-22  507  		struct drm_plane_state *plane_state =
96180dde23b799 Maxime Ripard     2018-01-22  508  			drm_atomic_get_plane_state(state, plane);
96180dde23b799 Maxime Ripard     2018-01-22  509  		struct sun4i_layer_state *layer_state =
96180dde23b799 Maxime Ripard     2018-01-22  510  			state_to_sun4i_layer_state(plane_state);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  511  		struct drm_framebuffer *fb = plane_state->fb;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  512  		struct drm_format_name_buf format_name;
96180dde23b799 Maxime Ripard     2018-01-22  513  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  514  		if (!sun4i_backend_plane_is_supported(plane_state,
ab6985108a53d5 Paul Kocialkowski 2018-11-23  515  						      &layer_state->uses_frontend))
ab6985108a53d5 Paul Kocialkowski 2018-11-23  516  			return -EINVAL;
ab6985108a53d5 Paul Kocialkowski 2018-11-23  517  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  518  		if (layer_state->uses_frontend) {
96180dde23b799 Maxime Ripard     2018-01-22  519  			DRM_DEBUG_DRIVER("Using the frontend for plane %d\n",
96180dde23b799 Maxime Ripard     2018-01-22  520  					 plane->index);
96180dde23b799 Maxime Ripard     2018-01-22  521  			num_frontend_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  522  		} else {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  523  			if (fb->format->is_yuv) {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  524  				DRM_DEBUG_DRIVER("Plane FB format is YUV\n");
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  525  				num_yuv_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  526  			}
96180dde23b799 Maxime Ripard     2018-01-22  527  		}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  528  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  529  		DRM_DEBUG_DRIVER("Plane FB format is %s\n",
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  530  				 drm_get_format_name(fb->format->format,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  531  						     &format_name));
d99008aab9f57d Maxime Ripard     2018-04-11  532  		if (fb->format->has_alpha || (plane_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  533  			num_alpha_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  534  
8f1f25534fff09 Maxime Ripard     2018-02-16  535  		DRM_DEBUG_DRIVER("Plane zpos is %d\n",
8f1f25534fff09 Maxime Ripard     2018-02-16  536  				 plane_state->normalized_zpos);
8f1f25534fff09 Maxime Ripard     2018-02-16  537  
8f1f25534fff09 Maxime Ripard     2018-02-16  538  		/* Sort our planes by Zpos */
8f1f25534fff09 Maxime Ripard     2018-02-16  539  		plane_states[plane_state->normalized_zpos] = plane_state;
8f1f25534fff09 Maxime Ripard     2018-02-16  540  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  541  		num_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  542  	}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  543  
8f1f25534fff09 Maxime Ripard     2018-02-16  544  	/* All our planes were disabled, bail out */
8f1f25534fff09 Maxime Ripard     2018-02-16  545  	if (!num_planes)
8f1f25534fff09 Maxime Ripard     2018-02-16  546  		return 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  547  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  548  	/*
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  549  	 * The hardware is a bit unusual here.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  550  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  551  	 * Even though it supports 4 layers, it does the composition
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  552  	 * in two separate steps.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  553  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  554  	 * The first one is assigning a layer to one of its two
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  555  	 * pipes. If more that 1 layer is assigned to the same pipe,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  556  	 * and if pixels overlaps, the pipe will take the pixel from
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  557  	 * the layer with the highest priority.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  558  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  559  	 * The second step is the actual alpha blending, that takes
dcf496a6a60873 Paul Kocialkowski 2018-07-19  560  	 * the two pipes as input, and uses the potential alpha
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  561  	 * component to do the transparency between the two.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  562  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  563  	 * This two-step scenario makes us unable to guarantee a
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  564  	 * robust alpha blending between the 4 layers in all
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  565  	 * situations, since this means that we need to have one layer
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  566  	 * with alpha at the lowest position of our two pipes.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  567  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  568  	 * However, we cannot even do that on every platform, since
dcf496a6a60873 Paul Kocialkowski 2018-07-19  569  	 * the hardware has a bug where the lowest plane of the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  570  	 * pipe (pipe 0, priority 0), if it has any alpha, will
dcf496a6a60873 Paul Kocialkowski 2018-07-19  571  	 * discard the pixel data entirely and just display the pixels
dcf496a6a60873 Paul Kocialkowski 2018-07-19  572  	 * in the background color (black by default).
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  573  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  574  	 * This means that on the affected platforms, we effectively
dcf496a6a60873 Paul Kocialkowski 2018-07-19  575  	 * have only three valid configurations with alpha, all of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  576  	 * them with the alpha being on pipe1 with the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  577  	 * position, which can be 1, 2 or 3 depending on the number of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  578  	 * planes and their zpos.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  579  	 */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  580  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  581  	/* For platforms that are not affected by the issue described above. */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  582  	if (backend->quirks->supports_lowest_plane_alpha)
dcf496a6a60873 Paul Kocialkowski 2018-07-19  583  		num_alpha_planes_max++;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  584  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  585  	if (num_alpha_planes > num_alpha_planes_max) {
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  586  		DRM_DEBUG_DRIVER("Too many planes with alpha, rejecting...\n");
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  587  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  588  	}
96180dde23b799 Maxime Ripard     2018-01-22  589  
8f1f25534fff09 Maxime Ripard     2018-02-16  590  	/* We can't have an alpha plane at the lowest position */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  591  	if (!backend->quirks->supports_lowest_plane_alpha &&
dcf496a6a60873 Paul Kocialkowski 2018-07-19 @592  	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
8f1f25534fff09 Maxime Ripard     2018-02-16  593  		return -EINVAL;
8f1f25534fff09 Maxime Ripard     2018-02-16  594  
8f1f25534fff09 Maxime Ripard     2018-02-16  595  	for (i = 1; i < num_planes; i++) {
8f1f25534fff09 Maxime Ripard     2018-02-16  596  		struct drm_plane_state *p_state = plane_states[i];
8f1f25534fff09 Maxime Ripard     2018-02-16  597  		struct drm_framebuffer *fb = p_state->fb;
8f1f25534fff09 Maxime Ripard     2018-02-16  598  		struct sun4i_layer_state *s_state = state_to_sun4i_layer_state(p_state);
8f1f25534fff09 Maxime Ripard     2018-02-16  599  
8f1f25534fff09 Maxime Ripard     2018-02-16  600  		/*
8f1f25534fff09 Maxime Ripard     2018-02-16  601  		 * The only alpha position is the lowest plane of the
8f1f25534fff09 Maxime Ripard     2018-02-16  602  		 * second pipe.
8f1f25534fff09 Maxime Ripard     2018-02-16  603  		 */
d99008aab9f57d Maxime Ripard     2018-04-11  604  		if (fb->format->has_alpha || (p_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
8f1f25534fff09 Maxime Ripard     2018-02-16  605  			current_pipe++;
8f1f25534fff09 Maxime Ripard     2018-02-16  606  
8f1f25534fff09 Maxime Ripard     2018-02-16  607  		s_state->pipe = current_pipe;
8f1f25534fff09 Maxime Ripard     2018-02-16  608  	}
8f1f25534fff09 Maxime Ripard     2018-02-16  609  
32463556a634f3 Maxime Ripard     2018-03-01  610  	/* We can only have a single YUV plane at a time */
32463556a634f3 Maxime Ripard     2018-03-01  611  	if (num_yuv_planes > SUN4I_BACKEND_NUM_YUV_PLANES) {
32463556a634f3 Maxime Ripard     2018-03-01  612  		DRM_DEBUG_DRIVER("Too many planes with YUV, rejecting...\n");
32463556a634f3 Maxime Ripard     2018-03-01  613  		return -EINVAL;
32463556a634f3 Maxime Ripard     2018-03-01  614  	}
32463556a634f3 Maxime Ripard     2018-03-01  615  
96180dde23b799 Maxime Ripard     2018-01-22  616  	if (num_frontend_planes > SUN4I_BACKEND_NUM_FRONTEND_LAYERS) {
96180dde23b799 Maxime Ripard     2018-01-22  617  		DRM_DEBUG_DRIVER("Too many planes going through the frontend, rejecting\n");
96180dde23b799 Maxime Ripard     2018-01-22  618  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  619  	}
96180dde23b799 Maxime Ripard     2018-01-22  620  
32463556a634f3 Maxime Ripard     2018-03-01  621  	DRM_DEBUG_DRIVER("State valid with %u planes, %u alpha, %u video, %u YUV\n",
32463556a634f3 Maxime Ripard     2018-03-01  622  			 num_planes, num_alpha_planes, num_frontend_planes,
32463556a634f3 Maxime Ripard     2018-03-01  623  			 num_yuv_planes);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  624  
96180dde23b799 Maxime Ripard     2018-01-22  625  	return 0;
96180dde23b799 Maxime Ripard     2018-01-22  626  }
96180dde23b799 Maxime Ripard     2018-01-22  627  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 52662 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] 13+ messages in thread

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-07-29  2:25   ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-07-29  2:25 UTC (permalink / raw)
  To: kbuild-all

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

Hi Maxime,

I love your patch! Yet something to improve:

[auto build test ERROR on sunxi/sunxi/for-next]
[also build test ERROR on soc/for-next xlnx/master linus/master v5.8-rc7 next-20200728]
[cannot apply to mripard/sunxi/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-sun4i-backend-Support-alpha-property-on-lowest-plane/20200729-033432
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        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
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/sun4i/sun4i_backend.c: In function 'sun4i_backend_atomic_check':
>> drivers/gpu/drm/sun4i/sun4i_backend.c:592:57: error: expected statement before ')' token
     592 |      (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
         |                                                         ^

vim +592 drivers/gpu/drm/sun4i/sun4i_backend.c

dd63250c55bf26 Maxime Ripard     2018-01-22  484  
96180dde23b799 Maxime Ripard     2018-01-22  485  static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
96180dde23b799 Maxime Ripard     2018-01-22  486  				      struct drm_crtc_state *crtc_state)
96180dde23b799 Maxime Ripard     2018-01-22  487  {
8f1f25534fff09 Maxime Ripard     2018-02-16  488  	struct drm_plane_state *plane_states[SUN4I_BACKEND_NUM_LAYERS] = { 0 };
dcf496a6a60873 Paul Kocialkowski 2018-07-19  489  	struct sun4i_backend *backend = engine_to_sun4i_backend(engine);
96180dde23b799 Maxime Ripard     2018-01-22  490  	struct drm_atomic_state *state = crtc_state->state;
96180dde23b799 Maxime Ripard     2018-01-22  491  	struct drm_device *drm = state->dev;
96180dde23b799 Maxime Ripard     2018-01-22  492  	struct drm_plane *plane;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  493  	unsigned int num_planes = 0;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  494  	unsigned int num_alpha_planes = 0;
96180dde23b799 Maxime Ripard     2018-01-22  495  	unsigned int num_frontend_planes = 0;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  496  	unsigned int num_alpha_planes_max = 1;
32463556a634f3 Maxime Ripard     2018-03-01  497  	unsigned int num_yuv_planes = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  498  	unsigned int current_pipe = 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  499  	unsigned int i;
96180dde23b799 Maxime Ripard     2018-01-22  500  
96180dde23b799 Maxime Ripard     2018-01-22  501  	DRM_DEBUG_DRIVER("Starting checking our planes\n");
96180dde23b799 Maxime Ripard     2018-01-22  502  
96180dde23b799 Maxime Ripard     2018-01-22  503  	if (!crtc_state->planes_changed)
96180dde23b799 Maxime Ripard     2018-01-22  504  		return 0;
96180dde23b799 Maxime Ripard     2018-01-22  505  
96180dde23b799 Maxime Ripard     2018-01-22  506  	drm_for_each_plane_mask(plane, drm, crtc_state->plane_mask) {
96180dde23b799 Maxime Ripard     2018-01-22  507  		struct drm_plane_state *plane_state =
96180dde23b799 Maxime Ripard     2018-01-22  508  			drm_atomic_get_plane_state(state, plane);
96180dde23b799 Maxime Ripard     2018-01-22  509  		struct sun4i_layer_state *layer_state =
96180dde23b799 Maxime Ripard     2018-01-22  510  			state_to_sun4i_layer_state(plane_state);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  511  		struct drm_framebuffer *fb = plane_state->fb;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  512  		struct drm_format_name_buf format_name;
96180dde23b799 Maxime Ripard     2018-01-22  513  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  514  		if (!sun4i_backend_plane_is_supported(plane_state,
ab6985108a53d5 Paul Kocialkowski 2018-11-23  515  						      &layer_state->uses_frontend))
ab6985108a53d5 Paul Kocialkowski 2018-11-23  516  			return -EINVAL;
ab6985108a53d5 Paul Kocialkowski 2018-11-23  517  
ab6985108a53d5 Paul Kocialkowski 2018-11-23  518  		if (layer_state->uses_frontend) {
96180dde23b799 Maxime Ripard     2018-01-22  519  			DRM_DEBUG_DRIVER("Using the frontend for plane %d\n",
96180dde23b799 Maxime Ripard     2018-01-22  520  					 plane->index);
96180dde23b799 Maxime Ripard     2018-01-22  521  			num_frontend_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  522  		} else {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  523  			if (fb->format->is_yuv) {
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  524  				DRM_DEBUG_DRIVER("Plane FB format is YUV\n");
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  525  				num_yuv_planes++;
ae56bfbdad9b19 Paul Kocialkowski 2018-11-23  526  			}
96180dde23b799 Maxime Ripard     2018-01-22  527  		}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  528  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  529  		DRM_DEBUG_DRIVER("Plane FB format is %s\n",
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  530  				 drm_get_format_name(fb->format->format,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  531  						     &format_name));
d99008aab9f57d Maxime Ripard     2018-04-11  532  		if (fb->format->has_alpha || (plane_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  533  			num_alpha_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  534  
8f1f25534fff09 Maxime Ripard     2018-02-16  535  		DRM_DEBUG_DRIVER("Plane zpos is %d\n",
8f1f25534fff09 Maxime Ripard     2018-02-16  536  				 plane_state->normalized_zpos);
8f1f25534fff09 Maxime Ripard     2018-02-16  537  
8f1f25534fff09 Maxime Ripard     2018-02-16  538  		/* Sort our planes by Zpos */
8f1f25534fff09 Maxime Ripard     2018-02-16  539  		plane_states[plane_state->normalized_zpos] = plane_state;
8f1f25534fff09 Maxime Ripard     2018-02-16  540  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  541  		num_planes++;
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  542  	}
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  543  
8f1f25534fff09 Maxime Ripard     2018-02-16  544  	/* All our planes were disabled, bail out */
8f1f25534fff09 Maxime Ripard     2018-02-16  545  	if (!num_planes)
8f1f25534fff09 Maxime Ripard     2018-02-16  546  		return 0;
8f1f25534fff09 Maxime Ripard     2018-02-16  547  
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  548  	/*
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  549  	 * The hardware is a bit unusual here.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  550  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  551  	 * Even though it supports 4 layers, it does the composition
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  552  	 * in two separate steps.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  553  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  554  	 * The first one is assigning a layer to one of its two
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  555  	 * pipes. If more that 1 layer is assigned to the same pipe,
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  556  	 * and if pixels overlaps, the pipe will take the pixel from
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  557  	 * the layer with the highest priority.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  558  	 *
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  559  	 * The second step is the actual alpha blending, that takes
dcf496a6a60873 Paul Kocialkowski 2018-07-19  560  	 * the two pipes as input, and uses the potential alpha
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  561  	 * component to do the transparency between the two.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  562  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  563  	 * This two-step scenario makes us unable to guarantee a
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  564  	 * robust alpha blending between the 4 layers in all
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  565  	 * situations, since this means that we need to have one layer
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  566  	 * with alpha at the lowest position of our two pipes.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  567  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  568  	 * However, we cannot even do that on every platform, since
dcf496a6a60873 Paul Kocialkowski 2018-07-19  569  	 * the hardware has a bug where the lowest plane of the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  570  	 * pipe (pipe 0, priority 0), if it has any alpha, will
dcf496a6a60873 Paul Kocialkowski 2018-07-19  571  	 * discard the pixel data entirely and just display the pixels
dcf496a6a60873 Paul Kocialkowski 2018-07-19  572  	 * in the background color (black by default).
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  573  	 *
dcf496a6a60873 Paul Kocialkowski 2018-07-19  574  	 * This means that on the affected platforms, we effectively
dcf496a6a60873 Paul Kocialkowski 2018-07-19  575  	 * have only three valid configurations with alpha, all of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  576  	 * them with the alpha being on pipe1 with the lowest
dcf496a6a60873 Paul Kocialkowski 2018-07-19  577  	 * position, which can be 1, 2 or 3 depending on the number of
dcf496a6a60873 Paul Kocialkowski 2018-07-19  578  	 * planes and their zpos.
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  579  	 */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  580  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  581  	/* For platforms that are not affected by the issue described above. */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  582  	if (backend->quirks->supports_lowest_plane_alpha)
dcf496a6a60873 Paul Kocialkowski 2018-07-19  583  		num_alpha_planes_max++;
dcf496a6a60873 Paul Kocialkowski 2018-07-19  584  
dcf496a6a60873 Paul Kocialkowski 2018-07-19  585  	if (num_alpha_planes > num_alpha_planes_max) {
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  586  		DRM_DEBUG_DRIVER("Too many planes with alpha, rejecting...\n");
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  587  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  588  	}
96180dde23b799 Maxime Ripard     2018-01-22  589  
8f1f25534fff09 Maxime Ripard     2018-02-16  590  	/* We can't have an alpha plane at the lowest position */
dcf496a6a60873 Paul Kocialkowski 2018-07-19  591  	if (!backend->quirks->supports_lowest_plane_alpha &&
dcf496a6a60873 Paul Kocialkowski 2018-07-19 @592  	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
8f1f25534fff09 Maxime Ripard     2018-02-16  593  		return -EINVAL;
8f1f25534fff09 Maxime Ripard     2018-02-16  594  
8f1f25534fff09 Maxime Ripard     2018-02-16  595  	for (i = 1; i < num_planes; i++) {
8f1f25534fff09 Maxime Ripard     2018-02-16  596  		struct drm_plane_state *p_state = plane_states[i];
8f1f25534fff09 Maxime Ripard     2018-02-16  597  		struct drm_framebuffer *fb = p_state->fb;
8f1f25534fff09 Maxime Ripard     2018-02-16  598  		struct sun4i_layer_state *s_state = state_to_sun4i_layer_state(p_state);
8f1f25534fff09 Maxime Ripard     2018-02-16  599  
8f1f25534fff09 Maxime Ripard     2018-02-16  600  		/*
8f1f25534fff09 Maxime Ripard     2018-02-16  601  		 * The only alpha position is the lowest plane of the
8f1f25534fff09 Maxime Ripard     2018-02-16  602  		 * second pipe.
8f1f25534fff09 Maxime Ripard     2018-02-16  603  		 */
d99008aab9f57d Maxime Ripard     2018-04-11  604  		if (fb->format->has_alpha || (p_state->alpha != DRM_BLEND_ALPHA_OPAQUE))
8f1f25534fff09 Maxime Ripard     2018-02-16  605  			current_pipe++;
8f1f25534fff09 Maxime Ripard     2018-02-16  606  
8f1f25534fff09 Maxime Ripard     2018-02-16  607  		s_state->pipe = current_pipe;
8f1f25534fff09 Maxime Ripard     2018-02-16  608  	}
8f1f25534fff09 Maxime Ripard     2018-02-16  609  
32463556a634f3 Maxime Ripard     2018-03-01  610  	/* We can only have a single YUV plane at a time */
32463556a634f3 Maxime Ripard     2018-03-01  611  	if (num_yuv_planes > SUN4I_BACKEND_NUM_YUV_PLANES) {
32463556a634f3 Maxime Ripard     2018-03-01  612  		DRM_DEBUG_DRIVER("Too many planes with YUV, rejecting...\n");
32463556a634f3 Maxime Ripard     2018-03-01  613  		return -EINVAL;
32463556a634f3 Maxime Ripard     2018-03-01  614  	}
32463556a634f3 Maxime Ripard     2018-03-01  615  
96180dde23b799 Maxime Ripard     2018-01-22  616  	if (num_frontend_planes > SUN4I_BACKEND_NUM_FRONTEND_LAYERS) {
96180dde23b799 Maxime Ripard     2018-01-22  617  		DRM_DEBUG_DRIVER("Too many planes going through the frontend, rejecting\n");
96180dde23b799 Maxime Ripard     2018-01-22  618  		return -EINVAL;
96180dde23b799 Maxime Ripard     2018-01-22  619  	}
96180dde23b799 Maxime Ripard     2018-01-22  620  
32463556a634f3 Maxime Ripard     2018-03-01  621  	DRM_DEBUG_DRIVER("State valid with %u planes, %u alpha, %u video, %u YUV\n",
32463556a634f3 Maxime Ripard     2018-03-01  622  			 num_planes, num_alpha_planes, num_frontend_planes,
32463556a634f3 Maxime Ripard     2018-03-01  623  			 num_yuv_planes);
65f7fa3a3fcbdb Maxime Ripard     2017-06-26  624  
96180dde23b799 Maxime Ripard     2018-01-22  625  	return 0;
96180dde23b799 Maxime Ripard     2018-01-22  626  }
96180dde23b799 Maxime Ripard     2018-01-22  627  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

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

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
  2020-07-28 13:48 ` Maxime Ripard
@ 2020-08-29  6:56   ` Chen-Yu Tsai
  -1 siblings, 0 replies; 13+ messages in thread
From: Chen-Yu Tsai @ 2020-08-29  6:56 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
>
> Unlike what we previously thought, only the per-pixel alpha is broken on
> the lowest plane and the per-plane alpha isn't. Remove the check on the
> alpha property being set on the lowest plane to reject a mode.
>
> Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Reviewed-by: Chen-Yu Tsai <wens@csie.org>

once the build break is fixed.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-08-29  6:56   ` Chen-Yu Tsai
  0 siblings, 0 replies; 13+ messages in thread
From: Chen-Yu Tsai @ 2020-08-29  6:56 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
>
> Unlike what we previously thought, only the per-pixel alpha is broken on
> the lowest plane and the per-plane alpha isn't. Remove the check on the
> alpha property being set on the lowest plane to reject a mode.
>
> Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Reviewed-by: Chen-Yu Tsai <wens@csie.org>

once the build break is fixed.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 2/2] drm/sun4i: backend: Disable alpha on the lowest plane on the A20
  2020-07-28 13:48   ` Maxime Ripard
@ 2020-08-29  6:57     ` Chen-Yu Tsai
  -1 siblings, 0 replies; 13+ messages in thread
From: Chen-Yu Tsai @ 2020-08-29  6:57 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
>
> Unlike we previously thought, the per-pixel alpha is just as broken on the
> A20 as it is on the A10. Remove the quirk that says we can use it.
>
> Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Reviewed-by: Chen-Yu Tsai <wens@csie.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 2/2] drm/sun4i: backend: Disable alpha on the lowest plane on the A20
@ 2020-08-29  6:57     ` Chen-Yu Tsai
  0 siblings, 0 replies; 13+ messages in thread
From: Chen-Yu Tsai @ 2020-08-29  6:57 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel

On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
>
> Unlike we previously thought, the per-pixel alpha is just as broken on the
> A20 as it is on the A10. Remove the quirk that says we can use it.
>
> Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Reviewed-by: Chen-Yu Tsai <wens@csie.org>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
  2020-08-29  6:56   ` Chen-Yu Tsai
@ 2020-09-04  9:13     ` Maxime Ripard
  -1 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-09-04  9:13 UTC (permalink / raw)
  To: Chen-Yu Tsai; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel


[-- Attachment #1.1: Type: text/plain, Size: 750 bytes --]

On Sat, Aug 29, 2020 at 02:56:58PM +0800, Chen-Yu Tsai wrote:
> On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
> >
> > Unlike what we previously thought, only the per-pixel alpha is broken on
> > the lowest plane and the per-plane alpha isn't. Remove the check on the
> > alpha property being set on the lowest plane to reject a mode.
> >
> > Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> > Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> 
> Reviewed-by: Chen-Yu Tsai <wens@csie.org>
> 
> once the build break is fixed.

Applied both patches (and fixed the breakage along the way)

Thanks!
Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane
@ 2020-09-04  9:13     ` Maxime Ripard
  0 siblings, 0 replies; 13+ messages in thread
From: Maxime Ripard @ 2020-09-04  9:13 UTC (permalink / raw)
  To: Chen-Yu Tsai; +Cc: Paul Kocialkowski, linux-arm-kernel, dri-devel


[-- Attachment #1.1: Type: text/plain, Size: 750 bytes --]

On Sat, Aug 29, 2020 at 02:56:58PM +0800, Chen-Yu Tsai wrote:
> On Tue, Jul 28, 2020 at 9:48 PM Maxime Ripard <maxime@cerno.tech> wrote:
> >
> > Unlike what we previously thought, only the per-pixel alpha is broken on
> > the lowest plane and the per-plane alpha isn't. Remove the check on the
> > alpha property being set on the lowest plane to reject a mode.
> >
> > Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> > Fixes: dcf496a6a608 ("drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support")
> > Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> 
> Reviewed-by: Chen-Yu Tsai <wens@csie.org>
> 
> once the build break is fixed.

Applied both patches (and fixed the breakage along the way)

Thanks!
Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: 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] 13+ messages in thread

end of thread, other threads:[~2020-09-05  0:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-28 13:48 [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane Maxime Ripard
2020-07-28 13:48 ` Maxime Ripard
2020-07-28 13:48 ` [PATCH 2/2] drm/sun4i: backend: Disable alpha on the lowest plane on the A20 Maxime Ripard
2020-07-28 13:48   ` Maxime Ripard
2020-08-29  6:57   ` Chen-Yu Tsai
2020-08-29  6:57     ` Chen-Yu Tsai
2020-07-29  2:25 ` [PATCH 1/2] drm/sun4i: backend: Support alpha property on lowest plane kernel test robot
2020-07-29  2:25   ` kernel test robot
2020-07-29  2:25   ` kernel test robot
2020-08-29  6:56 ` Chen-Yu Tsai
2020-08-29  6:56   ` Chen-Yu Tsai
2020-09-04  9:13   ` Maxime Ripard
2020-09-04  9:13     ` Maxime Ripard

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.