From: Andy Yan <andyshrk@163.com> To: linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, heiko@sntech.de, jonas@kwiboo.se Cc: s.hauer@pengutronix.de, hjc@rock-chips.com, sebastian.reichel@collabora.com, sjoerd.simons@collabora.com, Andy Yan <andy.yan@rock-chips.com> Subject: [PATCH v3 1/4] drm/rockchip: fix vop format bpp calculation Date: Wed, 18 Oct 2023 17:42:10 +0800 [thread overview] Message-ID: <20231018094210.2475771-1-andyshrk@163.com> (raw) In-Reply-To: <20231018094122.2475668-1-andyshrk@163.com> From: Andy Yan <andy.yan@rock-chips.com> We can't rely on cpp for bpp calculation as the cpp of some formats(DRM_FORMAT_YUV420_8BIT/10BIT, etc) is zero. Signed-off-by: Andy Yan <andy.yan@rock-chips.com> --- (no changes since v1) drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 57c05c6b246c..93b27b03d479 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -282,6 +282,20 @@ static void vop2_win_disable(struct vop2_win *win) vop2_win_write(win, VOP2_WIN_CLUSTER_ENABLE, 0); } +static u32 vop2_get_bpp(const struct drm_format_info *format) +{ + switch (format->format) { + case DRM_FORMAT_YUV420_8BIT: + return 12; + case DRM_FORMAT_YUV420_10BIT: + return 15; + case DRM_FORMAT_VUY101010: + return 30; + default: + return drm_format_info_bpp(format, 0); + } +} + static enum vop2_data_format vop2_convert_format(u32 format) { switch (format) { @@ -482,7 +496,7 @@ static u32 vop2_afbc_transform_offset(struct drm_plane_state *pstate, { struct drm_rect *src = &pstate->src; struct drm_framebuffer *fb = pstate->fb; - u32 bpp = fb->format->cpp[0] * 8; + u32 bpp = vop2_get_bpp(fb->format); u32 vir_width = (fb->pitches[0] << 3) / bpp; u32 width = drm_rect_width(src) >> 16; u32 height = drm_rect_height(src) >> 16; @@ -1080,7 +1094,7 @@ static void vop2_plane_atomic_update(struct drm_plane *plane, struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode; struct vop2 *vop2 = win->vop2; struct drm_framebuffer *fb = pstate->fb; - u32 bpp = fb->format->cpp[0] * 8; + u32 bpp = vop2_get_bpp(fb->format); u32 actual_w, actual_h, dsp_w, dsp_h; u32 act_info, dsp_info; u32 format; -- 2.34.1 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Andy Yan <andyshrk@163.com> To: linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, heiko@sntech.de, jonas@kwiboo.se Cc: Andy Yan <andy.yan@rock-chips.com>, s.hauer@pengutronix.de, sjoerd.simons@collabora.com, hjc@rock-chips.com, sebastian.reichel@collabora.com Subject: [PATCH v3 1/4] drm/rockchip: fix vop format bpp calculation Date: Wed, 18 Oct 2023 17:42:10 +0800 [thread overview] Message-ID: <20231018094210.2475771-1-andyshrk@163.com> (raw) In-Reply-To: <20231018094122.2475668-1-andyshrk@163.com> From: Andy Yan <andy.yan@rock-chips.com> We can't rely on cpp for bpp calculation as the cpp of some formats(DRM_FORMAT_YUV420_8BIT/10BIT, etc) is zero. Signed-off-by: Andy Yan <andy.yan@rock-chips.com> --- (no changes since v1) drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 57c05c6b246c..93b27b03d479 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -282,6 +282,20 @@ static void vop2_win_disable(struct vop2_win *win) vop2_win_write(win, VOP2_WIN_CLUSTER_ENABLE, 0); } +static u32 vop2_get_bpp(const struct drm_format_info *format) +{ + switch (format->format) { + case DRM_FORMAT_YUV420_8BIT: + return 12; + case DRM_FORMAT_YUV420_10BIT: + return 15; + case DRM_FORMAT_VUY101010: + return 30; + default: + return drm_format_info_bpp(format, 0); + } +} + static enum vop2_data_format vop2_convert_format(u32 format) { switch (format) { @@ -482,7 +496,7 @@ static u32 vop2_afbc_transform_offset(struct drm_plane_state *pstate, { struct drm_rect *src = &pstate->src; struct drm_framebuffer *fb = pstate->fb; - u32 bpp = fb->format->cpp[0] * 8; + u32 bpp = vop2_get_bpp(fb->format); u32 vir_width = (fb->pitches[0] << 3) / bpp; u32 width = drm_rect_width(src) >> 16; u32 height = drm_rect_height(src) >> 16; @@ -1080,7 +1094,7 @@ static void vop2_plane_atomic_update(struct drm_plane *plane, struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode; struct vop2 *vop2 = win->vop2; struct drm_framebuffer *fb = pstate->fb; - u32 bpp = fb->format->cpp[0] * 8; + u32 bpp = vop2_get_bpp(fb->format); u32 actual_w, actual_h, dsp_w, dsp_h; u32 act_info, dsp_info; u32 format; -- 2.34.1
next prev parent reply other threads:[~2023-10-18 9:42 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-18 9:41 [PATCH v3 0/4] Add more format for vop2 driver Andy Yan 2023-10-18 9:41 ` Andy Yan 2023-10-18 9:42 ` Andy Yan [this message] 2023-10-18 9:42 ` [PATCH v3 1/4] drm/rockchip: fix vop format bpp calculation Andy Yan 2023-10-18 9:42 ` [PATCH v3 2/4] drm/rockchip: remove the unsupported format of vop2 cluster window Andy Yan 2023-10-18 9:42 ` Andy Yan 2023-10-18 9:43 ` [PATCH v3 3/4] drm/rockchip: Add more format supported by vop2 Andy Yan 2023-10-18 9:43 ` Andy Yan 2023-10-18 9:43 ` [PATCH v3 4/4] drm/rockchip: rename windows format for vop2 Andy Yan 2023-10-18 9:43 ` Andy Yan 2023-10-24 9:48 ` [PATCH v3 0/4] Add more format for vop2 driver Sascha Hauer 2023-10-24 9:48 ` Sascha Hauer 2023-10-24 19:48 ` Heiko Stuebner 2023-10-24 19:48 ` Heiko Stuebner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231018094210.2475771-1-andyshrk@163.com \ --to=andyshrk@163.com \ --cc=andy.yan@rock-chips.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=heiko@sntech.de \ --cc=hjc@rock-chips.com \ --cc=jonas@kwiboo.se \ --cc=linux-rockchip@lists.infradead.org \ --cc=s.hauer@pengutronix.de \ --cc=sebastian.reichel@collabora.com \ --cc=sjoerd.simons@collabora.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.