Since our last update to the DX12 Do’s & Don’ts we have learned and seen a lot more DX12 games and found that we can be more specific about our advice to developers.

As DX12 is still a hardware abstraction, admittedly at a lower level than DX11, the driver still needs to map the DX12 API to the underlying hardware, as not all DX12 API usage patterns run great on all hardware. It is therefore necessary to cater for the strength and weaknesses of different hardware vendors.

We have further discovered that there are certain intricacies to using CBV, UAV, SRV descriptors on Tier 1 and Tier 2 that are not obvious.

Also, we have seen the use of SetStablePowerState(), overly conservative barriers and too many/too small command lists standing in the way of great DX12 performance.

Another big topic that we discuss with developers a lot is video memory over-commitment and resource residency.

We have therefore updated the following sections of the DX12 Do’s & Don’t’s:

  • Engine Architecture/Structure
  • Work Submission – Command Lists & Bundles
  • Root Signatures
  • Resources
  • Barriers, Fences & Hazards
  • MGPU
  • SetStablePowerState
  • NVidia DirectX12 Hardware Features table

Please enjoy the updated the DX12 Do’s & Don’ts