From: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
To: dri-devel@lists.freedesktop.org
Cc: Ayan Halder <Ayan.Halder@arm.com>,
kernel@collabora.com, David Airlie <airlied@linux.ie>,
Liviu Dudau <liviu.dudau@arm.com>,
linux-rockchip@lists.infradead.org,
James Wang <james.qian.wang@arm.com>,
Mihail Atanassov <mihail.atanassov@arm.com>,
Sean Paul <sean@poorly.run>
Subject: [PATCHv2 3/4] drm/komeda: use afbc helpers
Date: Mon, 4 Nov 2019 23:12:27 +0100 [thread overview]
Message-ID: <20191104221228.3588-4-andrzej.p@collabora.com> (raw)
In-Reply-To: <20191104221228.3588-1-andrzej.p@collabora.com>
There are afbc helpers available.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
---
.../arm/display/komeda/komeda_format_caps.h | 1 -
.../arm/display/komeda/komeda_framebuffer.c | 44 +++++++------------
2 files changed, 17 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_format_caps.h b/drivers/gpu/drm/arm/display/komeda/komeda_format_caps.h
index 32273cf18f7c..607eea80e60c 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_format_caps.h
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_format_caps.h
@@ -33,7 +33,6 @@
#define AFBC_TH_LAYOUT_ALIGNMENT 8
#define AFBC_HEADER_SIZE 16
-#define AFBC_SUPERBLK_ALIGNMENT 128
#define AFBC_SUPERBLK_PIXELS 256
#define AFBC_BODY_START_ALIGNMENT 1024
#define AFBC_TH_BODY_START_ALIGNMENT 4096
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index 1b01a625f40e..e9c87551a5b8 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -4,6 +4,7 @@
* Author: James.Qian.Wang <james.qian.wang@arm.com>
*
*/
+#include <drm/drm_afbc.h>
#include <drm/drm_device.h>
#include <drm/drm_fb_cma_helper.h>
#include <drm/drm_gem.h>
@@ -43,8 +44,7 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb, struct drm_file *file,
struct drm_framebuffer *fb = &kfb->base;
const struct drm_format_info *info = fb->format;
struct drm_gem_object *obj;
- u32 alignment_w = 0, alignment_h = 0, alignment_header, n_blocks, bpp;
- u64 min_size;
+ u32 alignment_w = 0, alignment_h = 0, alignment_header, bpp;
obj = drm_gem_object_lookup(file, mode_cmd->handles[0]);
if (!obj) {
@@ -52,19 +52,15 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb, struct drm_file *file,
return -ENOENT;
}
- switch (fb->modifier & AFBC_FORMAT_MOD_BLOCK_SIZE_MASK) {
- case AFBC_FORMAT_MOD_BLOCK_SIZE_32x8:
- alignment_w = 32;
- alignment_h = 8;
- break;
- case AFBC_FORMAT_MOD_BLOCK_SIZE_16x16:
- alignment_w = 16;
- alignment_h = 16;
- break;
- default:
- WARN(1, "Invalid AFBC_FORMAT_MOD_BLOCK_SIZE: %lld.\n",
- fb->modifier & AFBC_FORMAT_MOD_BLOCK_SIZE_MASK);
- break;
+ if (!drm_afbc_get_superblk_wh(fb->modifier, &alignment_w, &alignment_h))
+ return -EINVAL;
+
+ if ((alignment_w != 16 || alignment_h != 16) &&
+ (alignment_w != 32 || alignment_h != 8)) {
+ DRM_DEBUG_KMS("Unsupported afbc tile w/h [%d/%d]\n",
+ alignment_w, alignment_h);
+
+ return -EINVAL;
}
/* tiled header afbc */
@@ -84,20 +80,14 @@ komeda_fb_afbc_size_check(struct komeda_fb *kfb, struct drm_file *file,
goto check_failed;
}
- n_blocks = (kfb->aligned_w * kfb->aligned_h) / AFBC_SUPERBLK_PIXELS;
- kfb->offset_payload = ALIGN(n_blocks * AFBC_HEADER_SIZE,
- alignment_header);
-
bpp = komeda_get_afbc_format_bpp(info, fb->modifier);
- kfb->afbc_size = kfb->offset_payload + n_blocks *
- ALIGN(bpp * AFBC_SUPERBLK_PIXELS / 8,
- AFBC_SUPERBLK_ALIGNMENT);
- min_size = kfb->afbc_size + fb->offsets[0];
- if (min_size > obj->size) {
- DRM_DEBUG_KMS("afbc size check failed, obj_size: 0x%zx. min_size 0x%llx.\n",
- obj->size, min_size);
+
+ if (!drm_afbc_check_fb_size(mode_cmd->pitches[0], bpp,
+ mode_cmd->width, mode_cmd->height,
+ alignment_w, alignment_h,
+ obj->size, mode_cmd->offsets[0],
+ AFBC_SUPERBLK_ALIGNMENT))
goto check_failed;
- }
fb->obj[0] = obj;
return 0;
--
2.17.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-11-04 22:12 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-11 11:18 [PATCH 0/2] AFBC for Rockchip Andrzej Pietrasiewicz
2019-10-11 11:18 ` [PATCH 1/2] drm/arm: Factor out generic afbc helpers Andrzej Pietrasiewicz
2019-10-21 13:50 ` Ayan Halder
2019-10-21 14:41 ` Mihail Atanassov
2019-11-04 22:12 ` [PATCHv2 0/4] AFBC support for Rockchip Andrzej Pietrasiewicz
2019-11-04 22:12 ` [PATCHv2 1/4] drm/arm: Factor out generic afbc helpers Andrzej Pietrasiewicz
2019-11-05 9:22 ` Daniel Vetter
2019-11-06 12:45 ` Andrzej Pietrasiewicz
2019-11-07 8:27 ` Daniel Vetter
2019-11-05 23:26 ` Daniel Stone
2019-11-05 23:26 ` Daniel Stone
2019-11-06 10:28 ` Liviu Dudau
2019-11-07 17:20 ` Brian Starkey
2019-11-07 17:20 ` Brian Starkey
2019-11-07 17:32 ` Daniel Vetter
2019-11-07 17:32 ` Daniel Vetter
2019-11-07 17:49 ` Brian Starkey
2019-11-07 17:49 ` Brian Starkey
2019-11-07 19:28 ` Daniel Vetter
2019-11-07 19:28 ` Daniel Vetter
2019-11-08 9:46 ` Brian Starkey
2019-11-08 9:46 ` Brian Starkey
2019-11-04 22:12 ` [PATCHv2 2/4] drm/malidp: use " Andrzej Pietrasiewicz
2019-11-06 11:09 ` Liviu Dudau
2019-11-04 22:12 ` Andrzej Pietrasiewicz [this message]
2019-11-08 16:09 ` [PATCHv2 3/4] drm/komeda: " Ayan Halder
2019-11-08 16:09 ` Ayan Halder
2019-11-13 2:01 ` james qian wang (Arm Technology China)
2019-11-13 11:39 ` Daniel Vetter
2019-11-14 1:52 ` james qian wang (Arm Technology China)
2019-11-14 10:12 ` Daniel Vetter
2019-11-18 7:09 ` james qian wang (Arm Technology China)
2019-11-18 9:51 ` Daniel Vetter
[not found] ` <20191118095136.GC23790-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2019-11-19 8:34 ` james qian wang (Arm Technology China)
2019-11-19 8:34 ` james qian wang (Arm Technology China)
2019-11-21 17:22 ` [PATCHv3/RFC 0/4] AFBC rework and support for Rockchip Andrzej Pietrasiewicz
2019-11-21 17:22 ` [PATCHv3/RFC 1/4] drm/arm: Factor out generic afbc helpers Andrzej Pietrasiewicz
2019-11-23 7:13 ` Ezequiel Garcia
2019-11-23 7:13 ` Ezequiel Garcia
2019-11-25 8:55 ` Daniel Vetter
2019-11-26 20:27 ` Andrzej Pietrasiewicz
2019-11-27 9:51 ` Daniel Vetter
2019-11-28 10:47 ` james qian wang (Arm Technology China)
2019-11-21 17:22 ` [PATCHv3/RFC 2/4] drm/malidp: use " Andrzej Pietrasiewicz
2019-11-21 17:22 ` [PATCHv3/RFC 3/4] drm/komeda: Use afbc helper Andrzej Pietrasiewicz
2019-11-21 17:22 ` [PATCHv3/RFC 4/4] drm/rockchip: Add support for afbc Andrzej Pietrasiewicz
2019-11-23 7:21 ` Ezequiel Garcia
2019-11-23 7:21 ` Ezequiel Garcia
2019-11-04 22:12 ` [PATCHv2 " Andrzej Pietrasiewicz
2019-11-05 23:34 ` Daniel Stone
2019-11-05 23:34 ` Daniel Stone
2019-10-11 11:18 ` [PATCH 2/2] " Andrzej Pietrasiewicz
2019-10-11 11:59 ` Daniel Stone
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=20191104221228.3588-4-andrzej.p@collabora.com \
--to=andrzej.p@collabora.com \
--cc=Ayan.Halder@arm.com \
--cc=airlied@linux.ie \
--cc=dri-devel@lists.freedesktop.org \
--cc=james.qian.wang@arm.com \
--cc=kernel@collabora.com \
--cc=linux-rockchip@lists.infradead.org \
--cc=liviu.dudau@arm.com \
--cc=mihail.atanassov@arm.com \
--cc=sean@poorly.run \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox