[igt-dev] [PATCH i-g-t v21 12/35] lib/intel_bufops: Change size from 32->64 bit
From: Zbigniew Kempczyński <hidden>
Date: 2021-03-01 16:14:29
Subsystem:
library code, the rest · Maintainers:
Andrew Morton, Linus Torvalds
1. Buffer size from 32 -> 64 bit was changed to be consistent with drm code. 2. Remember buffer creation size to avoid recalculation. Signed-off-by: Zbigniew Kempczyński <redacted> Cc: Dominik Grzegorzek <redacted> Cc: Chris Wilson <redacted> --- lib/intel_bufops.c | 17 ++++++++--------- lib/intel_bufops.h | 7 +++++-- tests/i915/api_intel_bb.c | 6 +++--- 3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
index a50035e40..eb5ac4dad 100644
--- a/lib/intel_bufops.c
+++ b/lib/intel_bufops.c@@ -711,7 +711,7 @@ static void __intel_buf_init(struct buf_ops *bops, uint32_t req_tiling, uint32_t compression) { uint32_t tiling = req_tiling; - uint32_t size; + uint64_t size; uint32_t devid; int tile_width; int align_h = 1;
@@ -776,6 +776,9 @@ static void __intel_buf_init(struct buf_ops *bops, size = buf->surface[0].stride * ALIGN(height, align_h); } + /* Store real bo size to avoid mistakes in calculating it again */ + buf->size = size; + if (handle) buf->handle = handle; else
@@ -1001,8 +1004,8 @@ void intel_buf_flush_and_unmap(struct intel_buf *buf) void intel_buf_print(const struct intel_buf *buf) { igt_info("[name: %s]\n", buf->name); - igt_info("[%u]: w: %u, h: %u, stride: %u, size: %u, bo-size: %u, " - "bpp: %u, tiling: %u, compress: %u\n", + igt_info("[%u]: w: %u, h: %u, stride: %u, size: %" PRIx64 + ", bo-size: %" PRIx64 ", bpp: %u, tiling: %u, compress: %u\n", buf->handle, intel_buf_width(buf), intel_buf_height(buf), buf->surface[0].stride, buf->surface[0].size, intel_buf_bo_size(buf), buf->bpp,
@@ -1208,13 +1211,9 @@ static void idempotency_selftest(struct buf_ops *bops, uint32_t tiling) buf_ops_set_software_tiling(bops, tiling, false); } -uint32_t intel_buf_bo_size(const struct intel_buf *buf) +uint64_t intel_buf_bo_size(const struct intel_buf *buf) { - int offset = CCS_OFFSET(buf) ?: buf->surface[0].size; - int ccs_size = - buf->compression ? CCS_SIZE(buf->bops->intel_gen, buf) : 0; - - return offset + ccs_size; + return buf->size; } static struct buf_ops *__buf_ops_create(int fd, bool check_idempotency)
diff --git a/lib/intel_bufops.h b/lib/intel_bufops.h
index 8debe7f22..5619fc6fa 100644
--- a/lib/intel_bufops.h
+++ b/lib/intel_bufops.h@@ -9,10 +9,13 @@ struct buf_ops; #define INTEL_BUF_INVALID_ADDRESS (-1ull) #define INTEL_BUF_NAME_MAXSIZE 32 +#define INVALID_ADDR(x) ((x) == INTEL_BUF_INVALID_ADDRESS) + struct intel_buf { struct buf_ops *bops; bool is_owner; uint32_t handle; + uint64_t size; uint32_t tiling; uint32_t bpp; uint32_t compression;
@@ -23,7 +26,7 @@ struct intel_buf { struct { uint32_t offset; uint32_t stride; - uint32_t size; + uint64_t size; } surface[2]; struct { uint32_t offset;
@@ -88,7 +91,7 @@ intel_buf_ccs_height(int gen, const struct intel_buf *buf) return DIV_ROUND_UP(intel_buf_height(buf), 512) * 32; } -uint32_t intel_buf_bo_size(const struct intel_buf *buf); +uint64_t intel_buf_bo_size(const struct intel_buf *buf); struct buf_ops *buf_ops_create(int fd); struct buf_ops *buf_ops_create_with_selftest(int fd);
diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c
index cc1d1be6e..14bfeadb3 100644
--- a/tests/i915/api_intel_bb.c
+++ b/tests/i915/api_intel_bb.c@@ -123,9 +123,9 @@ static void print_buf(struct intel_buf *buf, const char *name) ptr = gem_mmap__device_coherent(i915, buf->handle, 0, buf->surface[0].size, PROT_READ); - igt_debug("[%s] Buf handle: %d, size: %d, v: 0x%02x, presumed_addr: %p\n", + igt_debug("[%s] Buf handle: %d, size: %" PRIx64 ", v: 0x%02x, presumed_addr: %p\n", name, buf->handle, buf->surface[0].size, ptr[0], - from_user_pointer(buf->addr.offset)); + from_user_pointer(buf->addr.offset)); munmap(ptr, buf->surface[0].size); }
@@ -677,7 +677,7 @@ static int dump_base64(const char *name, struct intel_buf *buf) if (ret != Z_OK) { igt_warn("error compressing, ret: %d\n", ret); } else { - igt_info("compressed %u -> %lu\n", + igt_info("compressed %" PRIx64 " -> %lu\n", buf->surface[0].size, outsize); igt_info("--- %s ---\n", name);
--
2.26.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev