All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Yacoub <markyacoub@chromium.org>
To: igt-dev@lists.freedesktop.org
Cc: petri.latvala@intel.com, bas@basnieuwenhuizen.nl,
	seanpaul@chromium.org, Mark Yacoub <markyacoub@google.com>
Subject: [igt-dev] [PATCH v2] lib/igt_fb: Support Tile Size for AMD non linear modifiers.
Date: Mon, 21 Jun 2021 13:21:46 -0400	[thread overview]
Message-ID: <20210621172146.4130875-1-markyacoub@chromium.org> (raw)

From: Mark Yacoub <markyacoub@google.com>

Calculate the width and height of the tile on amdgpu when the modifier
is not linear.

v1:
Change width_ret to bytes not pixels.

Cc: bas@basnieuwenhuizen.nl
Cc: daniel.vetter@ffwll.ch
Signed-off-by: Mark Yacoub <markyacoub@chromium.org>
Change-Id: I30849ee1368fc626d1ce2826fb726cd76565a449
---
 lib/igt_fb.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 71b89855..a3926dc9 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -396,6 +396,19 @@ void igt_get_fb_tile_size(int fd, uint64_t modifier, int fb_bpp,
 		vc4_modifier_param = fourcc_mod_broadcom_param(modifier);
 		modifier = fourcc_mod_broadcom_mod(modifier);
 	}
+	// For all non-linear modifiers, AMD uses 64 KiB tiles
+	else if (IS_AMD_FMT_MOD(modifier)) {
+		igt_require_amdgpu(fd);
+		const int bytes_per_pixel = fb_bpp / 8;
+		const int format_log2 = log2(bytes_per_pixel);
+		const int pixel_log2 = log2(64 * 1024) - format_log2;
+		const int width_log2 = (pixel_log2 + 1) / 2;
+		const int height_log2 = pixel_log2 - width_log2;
+
+		*width_ret = bytes_per_pixel << width_log2;
+		*height_ret = 1 << height_log2;
+		return;
+	}
 
 	switch (modifier) {
 	case LOCAL_DRM_FORMAT_MOD_NONE:
-- 
2.32.0.288.g62a8d224e6-goog

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

             reply	other threads:[~2021-06-21 17:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-21 17:21 Mark Yacoub [this message]
2021-06-21 18:02 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_fb: Support Tile Size for AMD non linear modifiers. (rev3) Patchwork
2021-06-21 20:38 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2021-06-22 18:11 ` [igt-dev] [PATCH v2] lib/igt_fb: Support Tile Size for AMD non linear modifiers Rodrigo Siqueira
2021-06-23  6:15   ` Petri Latvala
2021-07-06 12:35     ` Rodrigo Siqueira
2021-06-28  8:29 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_fb: Support Tile Size for AMD non linear modifiers. (rev4) Patchwork
2021-06-28  9:26 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2021-06-28 17:08   ` Mark Yacoub
2021-06-29 16:07     ` Rodrigo Siqueira
2021-06-29 16:55       ` Mark Yacoub
2021-07-01 21:13         ` Arkadiusz Hiler
2021-07-02  0:55           ` Vudum, Lakshminarayana
2021-07-01 22:34 ` [igt-dev] ✓ Fi.CI.IGT: success " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2021-06-21 15:41 [igt-dev] [PATCH v2] lib/igt_fb: Support Tile Size for AMD non linear modifiers Mark Yacoub

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=20210621172146.4130875-1-markyacoub@chromium.org \
    --to=markyacoub@chromium.org \
    --cc=bas@basnieuwenhuizen.nl \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=markyacoub@google.com \
    --cc=petri.latvala@intel.com \
    --cc=seanpaul@chromium.org \
    /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 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.