This is actually straightforward for pitched transfer. However, we need to do a double-intersect because for block transfers (single row) the pitch can be assumed to not exist. If we match surface cache for src/dst we need to apply the changes via 2D blit.