Do we need to worry about 32-bit address space considerations here along the lines of MAX_PERSISTENT_MAPPED_BYTES in wined3d?
Testing as in the attached patch [1] suggests that no.
This does seem unfortunate in the sense that it's somewhat counter to the whole "explicit API" concept; you'd hope that in an API like Direct3D 12 calling Unmap() actually unmapped things.
Yep!
Resident Evil 2 accesses a resource immediately after unmapping it.
And presumably that's the last mapped resource on the heap, like in this test, or the heap would already stay mapped, right?
Yes. It's a committed resource, so the only resource on its heap. I don't recall but I believe I tried to duplicate the conditions (so it is also a readback resource).
[1] [scratch.diff](/uploads/5fbb2d2ab1f28140be7f726f6ee650ef/scratch.diff)