Shared vs unified is merely a driver implementation detail. Regardless, in practice (IIUC) data is still going to be copied if you perform a transfer using a graphics API because the driver has no way of knowing what the host might do with the pointed-to memory after the transfer.
If you make use of host pointers and run on an iGPU no copy will take place.
If you make use of host pointers and run on an iGPU no copy will take place.