[igt-dev] [PATCH 1/2] lib: Add stride and size calculation for amdgpu + tiling
Sung Joon Kim
sungkim at amd.com
Wed Dec 16 23:02:22 UTC 2020
For amdgpu, we need to calculate the stride and size of framebuffer correctly during non-linear tiling mode
Signed-off-by: Sung Joon Kim <sungkim at amd.com>
---
lib/igt_fb.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 422a9e06..b99e8d07 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -670,6 +670,11 @@ static uint32_t calc_plane_stride(struct igt_fb *fb, int plane)
* so the easiest way is to align the luma stride to 256.
*/
return ALIGN(min_stride, 256);
+ } else if (fb->modifier != LOCAL_DRM_FORMAT_MOD_NONE && is_amdgpu_device(fb->fd)) {
+ /*
+ * For amdgpu device with tiling mode
+ */
+ return ALIGN(min_stride, 512);
} else if (is_gen12_ccs_cc_plane(fb, plane)) {
/* clear color always fixed to 64 bytes */
return 64;
@@ -710,6 +715,12 @@ static uint64_t calc_plane_size(struct igt_fb *fb, int plane)
size = roundup_power_of_two(size);
return size;
+ } else if (fb->modifier != LOCAL_DRM_FORMAT_MOD_NONE && is_amdgpu_device(fb->fd)) {
+ /*
+ * For amdgpu device with tiling mode
+ */
+ return (uint64_t) fb->strides[plane] *
+ ALIGN(fb->plane_height[plane], 512);
} else if (is_gen12_ccs_plane(fb, plane)) {
/* The AUX CCS surface must be page aligned */
return (uint64_t)fb->strides[plane] *
--
2.25.1
More information about the igt-dev
mailing list