diff options
author | Alyssa Rosenzweig <alyssa@rosenzweig.io> | 2021-07-10 11:04:45 -0400 |
---|---|---|
committer | Alyssa Rosenzweig <alyssa@rosenzweig.io> | 2021-07-10 11:04:45 -0400 |
commit | 9b6ca87672be842a21dfe33863c93a57b981f4e3 (patch) | |
tree | 2cb547898331a21ddf2b59ae4ca2c80311429629 /src/asahi | |
parent | ea7892a74c873021d1c8d5d26d6b6af879a94c7c (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.c | 8 | ||||
-rw-r--r-- | src/asahi/lib/decode.h | 2 |
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); |