Re: [PATCH] drm/rockchip: Require the YTR modifier for AFBC
From: Daniel Stone <hidden>
Date: 2021-02-25 12:46:34
Also in:
dri-devel
Hi Sandy, On Thu, 25 Feb 2021 at 02:17, Huang Jiachai [off-list ref] wrote:
RK3399 and px30 can support YTR afbc format[RGB only], there is an hidden control bit to control this.
Great, thanks for providing this information!
quoted hunk ↗ jump to hunk
Hi Alyssa, Can you add the following patch to test on your platform? thanks.diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.cb/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 99bdb5a2a185..0780ad46230a 100644--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c@@ -105,7 +105,7 @@ #define AFBC_FMT_U8U8U8U8 0x5 #define AFBC_FMT_U8U8U8 0x4 -#define AFBC_TILE_16x16 BIT(4) +#define AFBC_FMT_YTR BIT(4) /* * The coefficients of the following matrix are all fixed points.@@ -952,7 +952,9 @@ static void vop_plane_atomic_update(struct drm_plane*plane, if (rockchip_afbc(fb->modifier)) { int afbc_format = vop_convert_afbc_format(fb->format->format); - VOP_AFBC_SET(vop, format, afbc_format | AFBC_TILE_16x16); + if (fb->modifier & AFBC_FORMAT_MOD_YTR) + afbc_format |= AFBC_FMT_YTR; + VOP_AFBC_SET(vop, format, afbc_format); VOP_AFBC_SET(vop, hreg_block_split, 0); VOP_AFBC_SET(vop, win_sel, VOP_WIN_TO_INDEX(vop_win)); VOP_AFBC_SET(vop, hdr_ptr, dma_addr);diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.hb/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index 4a2099cb582e..48e131b88c23 100644--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h@@ -20,6 +20,7 @@ #define ROCKCHIP_AFBC_MOD \ DRM_FORMAT_MOD_ARM_AFBC( \ AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 | AFBC_FORMAT_MOD_SPARSE \ + | AFBC_FORMAT_MOD_YTR \ )
Looks good - this will help us confirm. I think the complete patch though would advertise both YTR and non-YTR modifiers: per Arm's recommendation, it sounds like [AX]RGB8888 formats should only advertise the non-YTR variant, and [AX]BGR8888 should advertise both variants. Does that make sense? Cheers, Daniel _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip