aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2019-09-12 18:42:21 -0500
committerMarge Bot <[email protected]>2020-05-13 23:36:44 +0000
commit38e68db778439c34ebb876273fcf9139764abc80 (patch)
treee4db1be90aaf90baa320bd2b4a801a1be6d4449c /src
parentadbcef37d2d1f838ef24a4ab1f4332cc87b5fdad (diff)
util/vma: Add a debug print helper
Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5019>
Diffstat (limited to 'src')
-rw-r--r--src/util/vma.c20
-rw-r--r--src/util/vma.h4
2 files changed, 24 insertions, 0 deletions
diff --git a/src/util/vma.c b/src/util/vma.c
index f17ec0c08f1..dddc3fe187c 100644
--- a/src/util/vma.c
+++ b/src/util/vma.c
@@ -22,6 +22,7 @@
*/
#include <stdlib.h>
+#include <inttypes.h>
#include "util/u_math.h"
#include "util/vma.h"
@@ -304,3 +305,22 @@ util_vma_heap_free(struct util_vma_heap *heap,
util_vma_heap_validate(heap);
}
+
+void
+util_vma_heap_print(struct util_vma_heap *heap, FILE *fp,
+ const char *tab, uint64_t total_size)
+{
+ fprintf(fp, "%sutil_vma_heap:\n", tab);
+
+ uint64_t total_free = 0;
+ util_vma_foreach_hole(hole, heap) {
+ fprintf(fp, "%s hole: offset = %"PRIu64" (0x%"PRIx64", "
+ "size = %"PRIu64" (0x%"PRIx64")\n",
+ tab, hole->offset, hole->offset, hole->size, hole->size);
+ total_free += hole->size;
+ }
+ assert(total_free <= total_size);
+ fprintf(fp, "%s%"PRIu64"B (0x%"PRIx64") free (%.2f%% full)\n",
+ tab, total_free, total_free,
+ ((double)(total_size - total_free) / (double)total_size) * 100);
+}
diff --git a/src/util/vma.h b/src/util/vma.h
index 58b4f8bf941..9bc058a2c58 100644
--- a/src/util/vma.h
+++ b/src/util/vma.h
@@ -25,6 +25,7 @@
#define _UTIL_VMA_H
#include <stdint.h>
+#include <stdio.h>
#include "list.h"
@@ -55,6 +56,9 @@ bool util_vma_heap_alloc_addr(struct util_vma_heap *heap,
void util_vma_heap_free(struct util_vma_heap *heap,
uint64_t offset, uint64_t size);
+void util_vma_heap_print(struct util_vma_heap *heap, FILE *fp,
+ const char *tab, uint64_t total_size);
+
#ifdef __cplusplus
} /* extern C */
#endif