util/hexdump: Squeeze repeated patterns instead of zero-ed chunks
What does this MR do and why?
Our u_hexdump() squeezes 16-byte chunks filled of zeros, where the unix hexdump squeezes repeated 16-byte chunks. Turns out panfrost/panvk dumps can be pretty big when when VM dump is requested (PANVK_DEBUG/PAN_MESA_DEBUG=dump) and memory regions are filled with repeated non-zero patterns (like a Z16_UNORM buffer cleared to 1.0, AKA 0xffff).
Avoiding the repetition of such non-zero patterns in dumps significantly reduces the size of the dumps. It also clears any confusion for people used to the original hexdump semantics where a star means the previous line is repeated.
/cc @alyssa given asahi is the only other user of u_hexdump() AFAICT.