Friendly reminder to never read from write-combined memory (e.g. upload buffers) because that absolutely kills performance.
Note that you can run into this even if your C++ code is just a bunch of straight writes, if the compiler generates the wrong code. I ran into this with the D3D12_RAYTRACING_INSTANCE_DESC struct, because it contains bitfields, and the compiler generated XOR & AND to memory destination. So that's a read-modify-write operation. Probably relatively harmless on regular memory.