Tout comme pour les extensions OpenGL/Vulkan, le programme doit d'abord vérifier si la carte graphique dispose du support des nouvelles fonctionnalités avant de les utiliser. Si c'est le cas (et que le programme utilise les nouvelles fonctionnalités), le rendu pourra être plus détaillé ou le programme sera plus rapide. Aussi, on peut facilement imaginer que les nouvelles fonctionnalités feront partie des fonctionnalités obligatoires de la prochaine version majeure de DirectX. Aussi, si la carte graphique supporte les fonctionnalités apportées avec DirectX 12_2, alors il est assuré qu'elle supporte les fonctionnalités de DirectX 12 et de la première mise à jour DirectX 12_1.
Pour détecter si une carte offre le support de cette nouvelle version, vous pouvez utiliser le code suivant :
Code c : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | D3D12_FEATURE_DATA_FEATURE_LEVELS cap{}; cap.NumFeatureLevels = 1; D3D_FEATURE_LEVEL requested = D3D_FEATURE_LEVEL_12_2; // D3D_FEATURE_LEVEL_12_2 = 0xc200 cap.pFeatureLevelsRequested = &requested; if (SUCCEEDED(device->CheckFeatureSupport( D3D12_FEATURE_FEATURE_LEVELS, &cap, sizeof(cap))) && cap.MaxSupportedFeatureLevel == requested) { // cette carte supporte DirectX 12_2 } |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 | ComPtr<ID3D12Device> device; D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_12_2; HRESULT hr = D3D12CreateDevice(nullptr, featureLevel, IID_PPV_ARGS(&m_spDevice)); if (SUCCEEDED(hr)) { // feature level is supported by default adapter } |
- le modèle de shader 6.5 ;
- le lancer de rayon (Tier 1.1) ;
- le shading à taux de rafraîchissement variable (Tier 2) ;
- les shader de modèle (Tier 1) ;
- le retour d’échantillonneur (Tier 0.9) ;
- la liaison de ressources (Tier 3) ;
- le rendu en tuiles (Tier 3) ;
- la rasterization conservative (Tier 3) ;
- la signature racine (Tier 1.1) ;
- la limitation des tests de profondeur ;
- MaxGPUVirtualAddressBitsPerResource et MaxGPUVirtualAddressBitsPerProcess sont au minimum à 40 ;
- WriteBufferImmediateSupportFlags propose les modes Direct, Compute et Bundle.
De plus, les valeurs suivantes sont à vrai :
- WaveOps ;
- OutputMergerLogicOp ;
- VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation ;
- CopyQueueTimestampQueriesSupported ;
- CastingFullyTypedFormatSupported ;
- Int64ShaderOps.
Les fonctionnalités de cette nouvelle version sont disponibles depuis la mise à jour de mai de Windows 10 et DirectX 12_2 est disponible à partir de la version 20170 du SDK (actuellement, en version 19041). Il faut donc passer par le programme Insider pour y accéder dès maintenant.
Source
Annonce sur le blog pour les développeurs de Microsoft.
Plus de détails ici.