[PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver

Ariel D'Alessandro posted 1 patch 1 month, 3 weeks ago
drivers/gpu/drm/mediatek/mtk_plane.c | 24 +-----------------------
1 file changed, 1 insertion(+), 23 deletions(-)
[PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by Ariel D'Alessandro 1 month, 3 weeks ago
Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
driver") added AFBC support to Mediatek DRM and enabled the
32x8/split/sparse modifier.

However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is used by
default since Mesa v25.0.

Kernel trace reports vblank timeouts constantly, and the render is garbled:

```
[CRTC:62:crtc-0] vblank wait timed out
WARNING: CPU: 7 PID: 70 at drivers/gpu/drm/drm_atomic_helper.c:1835 drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
[...]
Hardware name: MediaTek Genio-700 EVK (DT)
Workqueue: events_unbound commit_work
pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
lr : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
sp : ffff80008337bca0
x29: ffff80008337bcd0 x28: 0000000000000061 x27: 0000000000000000
x26: 0000000000000001 x25: 0000000000000000 x24: ffff0000c9dcc000
x23: 0000000000000001 x22: 0000000000000000 x21: ffff0000c66f2f80
x20: ffff0000c0d7d880 x19: 0000000000000000 x18: 000000000000000a
x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
x14: 0000000000000000 x13: 74756f2064656d69 x12: 742074696177206b
x11: 0000000000000058 x10: 0000000000000018 x9 : ffff800082396a70
x8 : 0000000000057fa8 x7 : 0000000000000cce x6 : ffff8000823eea70
x5 : ffff0001fef5f408 x4 : ffff80017ccee000 x3 : ffff0000c12cb480
x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c12cb480
Call trace:
 drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c (P)
 drm_atomic_helper_commit_tail_rpm+0x64/0x80
 commit_tail+0xa4/0x1a4
 commit_work+0x14/0x20
 process_one_work+0x150/0x290
 worker_thread+0x2d0/0x3ec
 kthread+0x12c/0x210
 ret_from_fork+0x10/0x20
---[ end trace 0000000000000000 ]---
```

Until this gets fixed upstream, disable AFBC support on this platform, as
it's currently broken with upstream Mesa.

Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
---
 drivers/gpu/drm/mediatek/mtk_plane.c | 24 +-----------------------
 1 file changed, 1 insertion(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c b/drivers/gpu/drm/mediatek/mtk_plane.c
index 02349bd440017..788b52c1d10c5 100644
--- a/drivers/gpu/drm/mediatek/mtk_plane.c
+++ b/drivers/gpu/drm/mediatek/mtk_plane.c
@@ -21,9 +21,6 @@
 
 static const u64 modifiers[] = {
 	DRM_FORMAT_MOD_LINEAR,
-	DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
-				AFBC_FORMAT_MOD_SPLIT |
-				AFBC_FORMAT_MOD_SPARSE),
 	DRM_FORMAT_MOD_INVALID,
 };
 
@@ -71,26 +68,7 @@ static bool mtk_plane_format_mod_supported(struct drm_plane *plane,
 					   uint32_t format,
 					   uint64_t modifier)
 {
-	if (modifier == DRM_FORMAT_MOD_LINEAR)
-		return true;
-
-	if (modifier != DRM_FORMAT_MOD_ARM_AFBC(
-				AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
-				AFBC_FORMAT_MOD_SPLIT |
-				AFBC_FORMAT_MOD_SPARSE))
-		return false;
-
-	if (format != DRM_FORMAT_XRGB8888 &&
-	    format != DRM_FORMAT_ARGB8888 &&
-	    format != DRM_FORMAT_BGRX8888 &&
-	    format != DRM_FORMAT_BGRA8888 &&
-	    format != DRM_FORMAT_ABGR8888 &&
-	    format != DRM_FORMAT_XBGR8888 &&
-	    format != DRM_FORMAT_RGB888 &&
-	    format != DRM_FORMAT_BGR888)
-		return false;
-
-	return true;
+	return modifier == DRM_FORMAT_MOD_LINEAR;
 }
 
 static void mtk_plane_destroy_state(struct drm_plane *plane,
Re: [PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by Chun-Kuang Hu 1 month, 2 weeks ago
Ariel D'Alessandro <ariel.dalessandro@collabora.com> 於 2025年10月24日 週五 下午8:28寫道:
>
> Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
> driver") added AFBC support to Mediatek DRM and enabled the
> 32x8/split/sparse modifier.
>
> However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
> platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is used by
> default since Mesa v25.0.
>
> Kernel trace reports vblank timeouts constantly, and the render is garbled:
>
> ```
> [CRTC:62:crtc-0] vblank wait timed out
> WARNING: CPU: 7 PID: 70 at drivers/gpu/drm/drm_atomic_helper.c:1835 drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> [...]
> Hardware name: MediaTek Genio-700 EVK (DT)
> Workqueue: events_unbound commit_work
> pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> pc : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> lr : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> sp : ffff80008337bca0
> x29: ffff80008337bcd0 x28: 0000000000000061 x27: 0000000000000000
> x26: 0000000000000001 x25: 0000000000000000 x24: ffff0000c9dcc000
> x23: 0000000000000001 x22: 0000000000000000 x21: ffff0000c66f2f80
> x20: ffff0000c0d7d880 x19: 0000000000000000 x18: 000000000000000a
> x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
> x14: 0000000000000000 x13: 74756f2064656d69 x12: 742074696177206b
> x11: 0000000000000058 x10: 0000000000000018 x9 : ffff800082396a70
> x8 : 0000000000057fa8 x7 : 0000000000000cce x6 : ffff8000823eea70
> x5 : ffff0001fef5f408 x4 : ffff80017ccee000 x3 : ffff0000c12cb480
> x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c12cb480
> Call trace:
>  drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c (P)
>  drm_atomic_helper_commit_tail_rpm+0x64/0x80
>  commit_tail+0xa4/0x1a4
>  commit_work+0x14/0x20
>  process_one_work+0x150/0x290
>  worker_thread+0x2d0/0x3ec
>  kthread+0x12c/0x210
>  ret_from_fork+0x10/0x20
> ---[ end trace 0000000000000000 ]---
> ```
>
> Until this gets fixed upstream, disable AFBC support on this platform, as
> it's currently broken with upstream Mesa.

Applied to mediatek-drm-fixes [1], thanks.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/log/?h=mediatek-drm-fixes

Regards,
Chun-Kuang.

>
> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> ---
Re: [PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by Macpaul Lin (林智斌) 1 month, 3 weeks ago
On Fri, 2025-10-24 at 17:27 -0300, Ariel D'Alessandro wrote:
> 
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> 
> 
> Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
> driver") added AFBC support to Mediatek DRM and enabled the
> 32x8/split/sparse modifier.
> 
> However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
> platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is
> used by
> default since Mesa v25.0.
> 
> Kernel trace reports vblank timeouts constantly, and the render is
> garbled:
> 
> ```
> [CRTC:62:crtc-0] vblank wait timed out
> WARNING: CPU: 7 PID: 70 at drivers/gpu/drm/drm_atomic_helper.c:1835
> drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> [...]
> Hardware name: MediaTek Genio-700 EVK (DT)
> Workqueue: events_unbound commit_work
> pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> pc : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> lr : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> sp : ffff80008337bca0
> x29: ffff80008337bcd0 x28: 0000000000000061 x27: 0000000000000000
> x26: 0000000000000001 x25: 0000000000000000 x24: ffff0000c9dcc000
> x23: 0000000000000001 x22: 0000000000000000 x21: ffff0000c66f2f80
> x20: ffff0000c0d7d880 x19: 0000000000000000 x18: 000000000000000a
> x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
> x14: 0000000000000000 x13: 74756f2064656d69 x12: 742074696177206b
> x11: 0000000000000058 x10: 0000000000000018 x9 : ffff800082396a70
> x8 : 0000000000057fa8 x7 : 0000000000000cce x6 : ffff8000823eea70
> x5 : ffff0001fef5f408 x4 : ffff80017ccee000 x3 : ffff0000c12cb480
> x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c12cb480
> Call trace:
>  drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c (P)
>  drm_atomic_helper_commit_tail_rpm+0x64/0x80
>  commit_tail+0xa4/0x1a4
>  commit_work+0x14/0x20
>  process_one_work+0x150/0x290
>  worker_thread+0x2d0/0x3ec
>  kthread+0x12c/0x210
>  ret_from_fork+0x10/0x20
> ---[ end trace 0000000000000000 ]---
> ```
> 
> Until this gets fixed upstream, disable AFBC support on this
> platform, as
> it's currently broken with upstream Mesa.
> 
> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> ---
>  drivers/gpu/drm/mediatek/mtk_plane.c | 24 +-----------------------
>  1 file changed, 1 insertion(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c
> b/drivers/gpu/drm/mediatek/mtk_plane.c
> index 02349bd440017..788b52c1d10c5 100644
> --- a/drivers/gpu/drm/mediatek/mtk_plane.c
> +++ b/drivers/gpu/drm/mediatek/mtk_plane.c
> @@ -21,9 +21,6 @@
> 
>  static const u64 modifiers[] = {
>         DRM_FORMAT_MOD_LINEAR,
> -       DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> -                               AFBC_FORMAT_MOD_SPLIT |
> -                               AFBC_FORMAT_MOD_SPARSE),
>         DRM_FORMAT_MOD_INVALID,
>  };
> 
> @@ -71,26 +68,7 @@ static bool mtk_plane_format_mod_supported(struct
> drm_plane *plane,
>                                            uint32_t format,
>                                            uint64_t modifier)
>  {
> -       if (modifier == DRM_FORMAT_MOD_LINEAR)
> -               return true;
> -
> -       if (modifier != DRM_FORMAT_MOD_ARM_AFBC(
> -                               AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> -                               AFBC_FORMAT_MOD_SPLIT |
> -                               AFBC_FORMAT_MOD_SPARSE))
> -               return false;
> -
> -       if (format != DRM_FORMAT_XRGB8888 &&
> -           format != DRM_FORMAT_ARGB8888 &&
> -           format != DRM_FORMAT_BGRX8888 &&
> -           format != DRM_FORMAT_BGRA8888 &&
> -           format != DRM_FORMAT_ABGR8888 &&
> -           format != DRM_FORMAT_XBGR8888 &&
> -           format != DRM_FORMAT_RGB888 &&
> -           format != DRM_FORMAT_BGR888)
> -               return false;
> -
> -       return true;
> +       return modifier == DRM_FORMAT_MOD_LINEAR;
>  }
> 
>  static void mtk_plane_destroy_state(struct drm_plane *plane,
> 

Great! Thanks for this patch.
I've tested this patch against k6.17.5 on mt8395-genio-1200-evk board,
and it is working.
I've also tested this patch with 'modetest -M mediatek -s
34@59:1200x1290' is working as well.

I'm not sure if it is possible to add a "Fixes:" tag to this patch?
Maybe add this patch with 'Cc: stable@vger.kernel.org #6.17' at least?
Some Linux distros are currently using 6.17 for testing.

Reviewed-by: Macpaul Lin <macpaul.lin@mediatek.com>

Regards,
Macpaul Lin

Re: [PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by CK Hu (胡俊光) 1 month, 3 weeks ago
Hi, Justin:

AFBC just improve DRAM bandwidth performance, so I decide to backport this disable patch.
Once fixup patch exist, then backport fixup patch.

Regards,
CK

On Tue, 2025-10-28 at 10:48 +0000, Macpaul Lin (林智斌) wrote:
> 
> On Fri, 2025-10-24 at 17:27 -0300, Ariel D'Alessandro wrote:
> > 
> > External email : Please do not click links or open attachments until
> > you have verified the sender or the content.
> > 
> > 
> > Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
> > driver") added AFBC support to Mediatek DRM and enabled the
> > 32x8/split/sparse modifier.
> > 
> > However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
> > platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is
> > used by
> > default since Mesa v25.0.
> > 
> > Kernel trace reports vblank timeouts constantly, and the render is
> > garbled:
> > 
> > ```
> > [CRTC:62:crtc-0] vblank wait timed out
> > WARNING: CPU: 7 PID: 70 at drivers/gpu/drm/drm_atomic_helper.c:1835
> > drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> > [...]
> > Hardware name: MediaTek Genio-700 EVK (DT)
> > Workqueue: events_unbound commit_work
> > pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> > pc : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> > lr : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> > sp : ffff80008337bca0
> > x29: ffff80008337bcd0 x28: 0000000000000061 x27: 0000000000000000
> > x26: 0000000000000001 x25: 0000000000000000 x24: ffff0000c9dcc000
> > x23: 0000000000000001 x22: 0000000000000000 x21: ffff0000c66f2f80
> > x20: ffff0000c0d7d880 x19: 0000000000000000 x18: 000000000000000a
> > x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
> > x14: 0000000000000000 x13: 74756f2064656d69 x12: 742074696177206b
> > x11: 0000000000000058 x10: 0000000000000018 x9 : ffff800082396a70
> > x8 : 0000000000057fa8 x7 : 0000000000000cce x6 : ffff8000823eea70
> > x5 : ffff0001fef5f408 x4 : ffff80017ccee000 x3 : ffff0000c12cb480
> > x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c12cb480
> > Call trace:
> >  drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c (P)
> >  drm_atomic_helper_commit_tail_rpm+0x64/0x80
> >  commit_tail+0xa4/0x1a4
> >  commit_work+0x14/0x20
> >  process_one_work+0x150/0x290
> >  worker_thread+0x2d0/0x3ec
> >  kthread+0x12c/0x210
> >  ret_from_fork+0x10/0x20
> > ---[ end trace 0000000000000000 ]---
> > ```
> > 
> > Until this gets fixed upstream, disable AFBC support on this
> > platform, as
> > it's currently broken with upstream Mesa.
> > 
> > Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> > ---
> >  drivers/gpu/drm/mediatek/mtk_plane.c | 24 +-----------------------
> >  1 file changed, 1 insertion(+), 23 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c
> > b/drivers/gpu/drm/mediatek/mtk_plane.c
> > index 02349bd440017..788b52c1d10c5 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_plane.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_plane.c
> > @@ -21,9 +21,6 @@
> > 
> >  static const u64 modifiers[] = {
> >         DRM_FORMAT_MOD_LINEAR,
> > -       DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> > -                               AFBC_FORMAT_MOD_SPLIT |
> > -                               AFBC_FORMAT_MOD_SPARSE),
> >         DRM_FORMAT_MOD_INVALID,
> >  };
> > 
> > @@ -71,26 +68,7 @@ static bool mtk_plane_format_mod_supported(struct
> > drm_plane *plane,
> >                                            uint32_t format,
> >                                            uint64_t modifier)
> >  {
> > -       if (modifier == DRM_FORMAT_MOD_LINEAR)
> > -               return true;
> > -
> > -       if (modifier != DRM_FORMAT_MOD_ARM_AFBC(
> > -                               AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> > -                               AFBC_FORMAT_MOD_SPLIT |
> > -                               AFBC_FORMAT_MOD_SPARSE))
> > -               return false;
> > -
> > -       if (format != DRM_FORMAT_XRGB8888 &&
> > -           format != DRM_FORMAT_ARGB8888 &&
> > -           format != DRM_FORMAT_BGRX8888 &&
> > -           format != DRM_FORMAT_BGRA8888 &&
> > -           format != DRM_FORMAT_ABGR8888 &&
> > -           format != DRM_FORMAT_XBGR8888 &&
> > -           format != DRM_FORMAT_RGB888 &&
> > -           format != DRM_FORMAT_BGR888)
> > -               return false;
> > -
> > -       return true;
> > +       return modifier == DRM_FORMAT_MOD_LINEAR;
> >  }
> > 
> >  static void mtk_plane_destroy_state(struct drm_plane *plane,
> > 
> 
> Great! Thanks for this patch.
> I've tested this patch against k6.17.5 on mt8395-genio-1200-evk board,
> and it is working.
> I've also tested this patch with 'modetest -M mediatek -s
> 34@59:1200x1290' is working as well.
> 
> I'm not sure if it is possible to add a "Fixes:" tag to this patch?
> Maybe add this patch with 'Cc: stable@vger.kernel.org #6.17' at least?
> Some Linux distros are currently using 6.17 for testing.
> 
> Reviewed-by: Macpaul Lin <macpaul.lin@mediatek.com>
> 
> Regards,
> Macpaul Lin
> 
> 
> ************* MEDIATEK Confidentiality Notice
>  ********************
> The information contained in this e-mail message (including any 
> attachments) may be confidential, proprietary, privileged, or otherwise
> exempt from disclosure under applicable laws. It is intended to be 
> conveyed only to the designated recipient(s). Any use, dissemination, 
> distribution, printing, retaining or copying of this e-mail (including its 
> attachments) by unintended recipient(s) is strictly prohibited and may 
> be unlawful. If you are not an intended recipient of this e-mail, or believe
>  
> that you have received this e-mail in error, please notify the sender 
> immediately (by replying to this e-mail), delete any and all copies of 
> this e-mail (including any attachments) from your system, and do not
> disclose the content of this e-mail to any other person. Thank you!

Re: [PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by CK Hu (胡俊光) 1 month, 3 weeks ago
On Fri, 2025-10-24 at 17:27 -0300, Ariel D'Alessandro wrote:
> External email : Please do not click links or open attachments until you have verified the sender or the content.
> 
> 
> Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
> driver") added AFBC support to Mediatek DRM and enabled the
> 32x8/split/sparse modifier.
> 
> However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
> platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is used by
> default since Mesa v25.0.
> 
> Kernel trace reports vblank timeouts constantly, and the render is garbled:
> 
> ```
> [CRTC:62:crtc-0] vblank wait timed out
> WARNING: CPU: 7 PID: 70 at drivers/gpu/drm/drm_atomic_helper.c:1835 drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> [...]
> Hardware name: MediaTek Genio-700 EVK (DT)
> Workqueue: events_unbound commit_work
> pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> pc : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> lr : drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c
> sp : ffff80008337bca0
> x29: ffff80008337bcd0 x28: 0000000000000061 x27: 0000000000000000
> x26: 0000000000000001 x25: 0000000000000000 x24: ffff0000c9dcc000
> x23: 0000000000000001 x22: 0000000000000000 x21: ffff0000c66f2f80
> x20: ffff0000c0d7d880 x19: 0000000000000000 x18: 000000000000000a
> x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000000
> x14: 0000000000000000 x13: 74756f2064656d69 x12: 742074696177206b
> x11: 0000000000000058 x10: 0000000000000018 x9 : ffff800082396a70
> x8 : 0000000000057fa8 x7 : 0000000000000cce x6 : ffff8000823eea70
> x5 : ffff0001fef5f408 x4 : ffff80017ccee000 x3 : ffff0000c12cb480
> x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c12cb480
> Call trace:
>  drm_atomic_helper_wait_for_vblanks.part.0+0x24c/0x27c (P)
>  drm_atomic_helper_commit_tail_rpm+0x64/0x80
>  commit_tail+0xa4/0x1a4
>  commit_work+0x14/0x20
>  process_one_work+0x150/0x290
>  worker_thread+0x2d0/0x3ec
>  kthread+0x12c/0x210
>  ret_from_fork+0x10/0x20
> ---[ end trace 0000000000000000 ]---
> ```
> 
> Until this gets fixed upstream, disable AFBC support on this platform, as
> it's currently broken with upstream Mesa.

Reviewed-by: CK Hu <ck.hu@mediatek.com>

> 
> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> ---
>  drivers/gpu/drm/mediatek/mtk_plane.c | 24 +-----------------------
>  1 file changed, 1 insertion(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c b/drivers/gpu/drm/mediatek/mtk_plane.c
> index 02349bd440017..788b52c1d10c5 100644
> --- a/drivers/gpu/drm/mediatek/mtk_plane.c
> +++ b/drivers/gpu/drm/mediatek/mtk_plane.c
> @@ -21,9 +21,6 @@
> 
>  static const u64 modifiers[] = {
>         DRM_FORMAT_MOD_LINEAR,
> -       DRM_FORMAT_MOD_ARM_AFBC(AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> -                               AFBC_FORMAT_MOD_SPLIT |
> -                               AFBC_FORMAT_MOD_SPARSE),
>         DRM_FORMAT_MOD_INVALID,
>  };
> 
> @@ -71,26 +68,7 @@ static bool mtk_plane_format_mod_supported(struct drm_plane *plane,
>                                            uint32_t format,
>                                            uint64_t modifier)
>  {
> -       if (modifier == DRM_FORMAT_MOD_LINEAR)
> -               return true;
> -
> -       if (modifier != DRM_FORMAT_MOD_ARM_AFBC(
> -                               AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 |
> -                               AFBC_FORMAT_MOD_SPLIT |
> -                               AFBC_FORMAT_MOD_SPARSE))
> -               return false;
> -
> -       if (format != DRM_FORMAT_XRGB8888 &&
> -           format != DRM_FORMAT_ARGB8888 &&
> -           format != DRM_FORMAT_BGRX8888 &&
> -           format != DRM_FORMAT_BGRA8888 &&
> -           format != DRM_FORMAT_ABGR8888 &&
> -           format != DRM_FORMAT_XBGR8888 &&
> -           format != DRM_FORMAT_RGB888 &&
> -           format != DRM_FORMAT_BGR888)
> -               return false;
> -
> -       return true;
> +       return modifier == DRM_FORMAT_MOD_LINEAR;
>  }
> 
>  static void mtk_plane_destroy_state(struct drm_plane *plane,

Re: [PATCH] drm/mediatek: Disable AFBC support on Mediatek DRM driver
Posted by Daniel Stone 1 month, 3 weeks ago
On Fri, 24 Oct 2025 at 21:28, Ariel D'Alessandro
<ariel.dalessandro@collabora.com> wrote:
> Commit c410fa9b07c32 ("drm/mediatek: Add AFBC support to Mediatek DRM
> driver") added AFBC support to Mediatek DRM and enabled the
> 32x8/split/sparse modifier.
>
> However, this is currently broken on Mediatek MT8188 (Genio 700 EVK
> platform); tested using upstream Kernel and Mesa (v25.2.1), AFBC is used by
> default since Mesa v25.0.
>
> Kernel trace reports vblank timeouts constantly, and the render is garbled:

Reviewed-by: Daniel Stone <daniels@collabora.com>

This is definitely the right thing to do until we can figure out why
the DRM driver doesn't like the GPU's images, and how we can get it
fixed in either DRM or Mesa.

Cheers,
Daniel