So I'm looking for a new graphics card in the 200-250 quid range and thought I'd check the forums while I watched the stock on the main site... some of these threads are a ridiculous.
I currently write software that uses D3D12 as a part of my living (AMA on root sigs, descriptor tables etc. if you like), not cryengine mods or unity/unreal with D3D12 support, but actually work with the API directly.
Futuremark didn't mess up.
In D3D12 you build command lists on the GPU and submit them to command queues for execution. There is no vendor specific way to submit command lists. There is no AMD async path and/or Nvidia Async path. You execute your graphics lists on a direct queue, and typically submit any compute command lists on a compute queue. Then if the hardware supports some form of async you'll get a lower frametime than submitting everything only to the direct queue.
It is true that you can and sometimes should tailor your render path to different hardware to improve performance in D3D12. That's also been true in D3D11. There are things you can do that unfairly cripple one vendor's performance while the other handles it fine. Some hardware prefers shared data in a constant buffer, while other GPUs work faster if you put that data in a 1D buffer. Some lose half their export rate if you render to certain buffer formats, and others
**** the bed if you pass more than 64 bytes between shader stages, or pass a non-multiple of 16 bytes.
I already stated there's no alternative method to submit compute commands that favours one vendor in D3D12. But you could conceivably change the commands themselves depending on the detected hardware. Maybe one vendor prefers a larger or smaller threadgroup size, or whatever. That's a separate render path isn't it? So what are you now measuring in your benchmark, the performance of different hardware or the performance of different threadgroup sizes? You can't fault Futuremark for making the hardware/drivers the only variables in a hardware benchmark.
I hope you guys get past this whole "that's not real async" thing. Go look around beyond3d and see what known developers think of it -
https://forum.beyond3d.com/threads/no-dx12-software-is-suitable-for-benchmarking-spawn.58013/page-17
All I wanted was to read some discussion about the 480 vs 1060 to help me decide, I didn't expect to see so many pages on AMDs very specific meaning of asynchronous or how mistaken futuremark are.