You only write once, for DX,that's the whole point of DX in the first place.
That was the point of DX. DX1 till DX11.
I agree with that point. You want to hide underlying complexity. Underlying details. Underlying diversity. To make the engine's programmer's job easier.
But I think they let go of that idea with DX12.
Because on consoles, you could increase performance if you could do stuff that you can't do with an abstract API. Stuff that makes use of certain knowledge about the details under the API. In DX1-DX11 you could not access the stuff underneath the API.
But with DX12 you can. They added a bunch of stuff to the API. Stuff that you'd normally want to hide under an API. This lets the programmers to use the hardware more efficient. But at a cost. And that cost is that you need to program/design/adjust your engine for different families of hardware.
What you say may hold true for the multicard setups ,where you can make different cards work together,but even there they said that they will sort cards into tiers,so devs will only have to programm once for every different pairing of tiers,there will be only 3 so not too much.
I think you are correct that some cards are very similar to each other. But I think different generations from different vendors are different enough that you might need to have separate code paths for each of those groups of cards.
Maybe something like: Maxwell GPUs, Kepler, GCN1.0, GCN1.1, GCN1.2, Intel iGPUs, anything older. That's already 7 different code-paths you might need in your engine. That's gonna be a lot of extra work. And probably very complex work. Because I would guess that quite a few engine-developers know the DX API very well, but have less knowledge about what is underneath.
That's why I wrote that I think the large engines will have good support for DX12 (Unreal, CryEngine, Frostbite, maybe Unity). And maybe some engines from very large developers, with big budgets (Blizzard, RockStar). Or developers that focus on high-end graphics (CDPR, 4AGames). But for the rest ? They will probably just use the generic DX12 codepath. Which means they will benefit a lot less of all the new performance features of DX12.
A company like From Software can't even get their UI or mouse- and keyboard-input right on PC. Do you think they will bother with optimizing their game for DX12 ? Hell no.