summaryrefslogtreecommitdiff
path: root/src/asahi
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2021-07-10 11:04:45 -0400
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>2021-07-10 11:04:45 -0400
commit9b6ca87672be842a21dfe33863c93a57b981f4e3 (patch)
tree2cb547898331a21ddf2b59ae4ca2c80311429629 /src/asahi
parentea7892a74c873021d1c8d5d26d6b6af879a94c7c (diff)
asahi/decode: Only dump mapped allocations
This matches the hardware's view of memory and helps catch spurious reads. (One symptom of messing this up -- besides broken rendering -- is a kernel warning about a "bogus texture handle 0".) Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11815>
Diffstat (limited to 'src/asahi')
-rw-r--r--src/asahi/lib/decode.c8
-rw-r--r--src/asahi/lib/decode.h2
2 files changed, 7 insertions, 3 deletions
diff --git a/src/asahi/lib/decode.c b/src/asahi/lib/decode.c
index 4813ba990e1..4abad19470c 100644
--- a/src/asahi/lib/decode.c
+++ b/src/asahi/lib/decode.c
@@ -426,12 +426,16 @@ agxdecode_cmdstream(unsigned cmdbuf_handle, unsigned map_handle, bool verbose)
}
void
-agxdecode_dump_mappings(void)
+agxdecode_dump_mappings(unsigned map_handle)
{
agxdecode_dump_file_open();
+ struct agx_bo *map = agxdecode_find_handle(map_handle, AGX_ALLOC_MEMMAP);
+ assert(map != NULL && "nonexistant mapping");
+ agxdecode_validate_map(map->ptr.cpu);
+
for (unsigned i = 0; i < mmap_count; ++i) {
- if (!mmap_array[i].ptr.cpu || !mmap_array[i].size)
+ if (!mmap_array[i].ptr.cpu || !mmap_array[i].size || !mmap_array[i].mapped)
continue;
assert(mmap_array[i].type < AGX_NUM_ALLOC);
diff --git a/src/asahi/lib/decode.h b/src/asahi/lib/decode.h
index 836bbfc3a0f..72197fb2d41 100644
--- a/src/asahi/lib/decode.h
+++ b/src/asahi/lib/decode.h
@@ -38,7 +38,7 @@ void agxdecode_dump_file_open(void);
void agxdecode_track_alloc(struct agx_bo *alloc);
-void agxdecode_dump_mappings(void);
+void agxdecode_dump_mappings(unsigned map_index);
void agxdecode_track_free(struct agx_bo *bo);