diff options
-rw-r--r-- | lib/intel_bufops.c | 17 | ||||
-rw-r--r-- | lib/intel_bufops.h | 7 | ||||
-rw-r--r-- | 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 a50035e4..eb5ac4da 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 8debe7f2..5619fc6f 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 9115d3f8..1c960891 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); |