共用方式為


使用 Direct3D 11 功能資料來補充 Direct3D 功能層級

瞭解如何檢查裝置對選用功能的支援,包括最新版 Windows 中新增的功能。

Direct3D 功能層級 表示定義完善的 GPU 功能集合,大致對應到不同世代的圖形硬體。 這可大幅簡化檢查硬體效能的工作,也提供各種不同裝置的一致體驗。

若要考慮不同硬體實作的一些差異,包括舊版硬體、行動硬體和現代化硬體 ,某些功能會被視為選擇性。 您可以呼叫 ID3D11Device::CheckFeatureSupport 並提供相關的D3D11_FEATURE_DATA_* 結構來判斷這些功能的支援。 本主題描述各種選擇性 Direct3D 11 功能、其中一些功能如何一起運作,以及如何避免檢查每個單一選擇性功能。

如何檢查選用功能支援

呼叫 ID3D11Device::CheckFeatureSupport,提供結構來代表您想要使用的選擇性功能。 如果方法傳回 S_OK,這表示您使用的是支援選擇性功能的 Direct3D 執行時間版本。 如果傳回 E_INVALIDARG,這表示您在新增選擇性功能之前,位於 Direct3D 11 執行時間的版本中,這表示無法使用選擇性功能,以及相同版本 Direct3D 11 或更新版本中引進的任何其他選擇性功能。

我可以將功能支援檢查所需的工作降到最低嗎?

除了擁有正確的 Direct3D 11 執行時間 (通常與 Windows 版本相關聯,) 圖形驅動程式也必須足以支援選用功能。 如果硬體可以支援,WDDM 規格需要支援選擇性功能。 因此,當圖形驅動程式支援特定 Windows 版本中新增的其中一個選擇性功能時,通常表示圖形驅動程式支援該版本 Windows 中新增的其他功能。 例如,如果設備磁碟機支援功能層級 9 上的陰影,則您知道設備磁碟機至少是 WDDM 1.2。

注意 如果 Microsoft Direct3D 裝置支援 功能層級 11.1, 則除了SAD4ShaderInstructionsExtendedDoublesShaderInstructions以外,會自動支援D3D11_FEATURE_DATA_D3D11_OPTIONS指示的所有選用功能。

執行時間一律會以相同的方式設定下列成員群組。 也就是說,群組中的所有值都是 TRUEFALSE

  • DiscardAPIsSeenByDriverFlagsForUpdateAndCopySeenByDriver
  • ClearViewCopyWithOverlapConstantBufferPartialUpdateConstantBufferOffsettingMapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRVMultisampleRTVWithForcedSampleCountOne

功能層級 11.2 選項 (D3D11_FEATURE_D3D11_OPTIONS1) : 此欄位所指出的選擇性功能是獨立的,必須個別檢查。

Windows RT 8.1 和 Windows Phone 8.1 裝置上的功能支援

Windows RT平板電腦裝置可以支援各種功能等級和選擇性功能、已針對降低耗電量進行優化,並使用整合式圖形,而不是離散 GPU。 適用于 ARM 裝置的 Windows 市集應用程式必須支援功能層級 9.1。 適用于 Windows RT 的 DirectX 應用程式應該利用可節省電源和迴圈的選擇性功能,例如簡單的實例, 它們可供使用時。

Windows Phone 8 個行動裝置支援具有特定選擇性功能的功能層級 9.3。 如需Windows Phone 8,請參閱 Direct3D 功能層級 9_3

什麼是 Direct3D 11 選擇性功能?

本文的其餘部分說明 Direct3D 11.2 中可用的選用功能。 新增功能時會依時間順序加以描述,因此您可以瞭解不同 Direct3D 11 版本中的功能。

功能層級 10 的選擇性計算著色器支援

下列功能一律適用于功能層級 10 裝置:

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS 如果這是 TRUE,則裝置支援計算著色器。 這包括原始和結構化緩衝區的支援。

當功能層級 10_0 或 10_1 裝置支援此功能時,不保證裝置支援計算著色器 4.1。 如果 ID3D11Device::CreateComputeShader 擲回計算著色器 4.1 程式的例外狀況,應用程式應準備好回復為計算著色器 4.0。

功能層級 9 的選擇性功能

從 Windows 8 開始,會針對功能層級 9 新增下列功能:

D3D11_FEATURE_DATA_D3D9_OPTIONS表示支援使用非 2 個材質的電源包裝紋理定址。 如果支援此功能,D3D11_TEXTURE_ADDRESS_MODE_WRAP可以搭配這類紋理使用。

D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT指出著色器模型 4.0 功能層級9_x著色器中比較取樣器的支援。 這用於圖元著色器的深度測試,可支援常見的技術,例如陰影對應和樣板。

已針對從 Windows 8.1 開始的功能層級 9 裝置新增下列功能:

D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT指出 DirectX 9 層級硬體上可能可用的簡單實例功能支援。 簡單實例表示用來定義輸入配置之D3D11_INPUT_ELEMENT_DESC結構的所有InstanceDataStepRate成員都必須等於 1。 支援功能層級 9.3 或更高版本的裝置已經包含實例的完整支援。

著色器程式的選擇性浮點精確度支援

D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT此結構中的欄位表示啟用最小有效位數時的浮點數長度,如果只支援完整 32 位浮點有效位數,則為 0。

對於功能層級 9 裝置,頂點著色器的最小精確度可能會與圖元著色器不同。 頂點著色器的精確度會在 AllOtherShaderStagesMinPrecision 欄位中指出。

D3D11_FEATURE_DATA_DOUBLES功能層級 11 裝置可以在著色器模型 5.0 程式中支援雙精確度計算。 支援著色器內的雙精確度計算表示浮點數可以轉換成計算著色器程式內的雙精確度計算,以提供每個著色器階段內較高精確度計算的優點。 雙精確度數位必須先轉換回浮點數,才能寫入輸出緩衝區。 請注意,不一定支援雙精確度除法。

Direct3D 11.2 的其他功能

Direct3D 11.2 新增了四個新的選擇性功能,可讓 Direct3D 11 裝置支援。 這些功能位於 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構中:

TiledResourcesTier: 表示對並排資源的支援,並指出支援階層層級。

MinMaxFiltering: 表示支援 D3D11_FILTER_MINIMUM_* 和 D3D11_FILTER_MAXIMUM_* 篩選選項,這會比較篩選結果與最小 (或最大) 值。 請參閱 D3D11_FILTER

ClearViewAlsoSupportsDepthOnlyFormats: 表示支援清除深度緩衝區資源檢視。

MapOnDefaultBuffers: 表示支援使用 D3D11_USAGE_DEFAULT 旗標建立 對應轉譯目標緩衝區。

以磚為基礎的轉譯

D3D11_FEATURE_DATA_ARCHITECTURE_INFO指出圖形裝置是否會批次處理轉譯命令,並預設執行以磚為基礎的轉譯。 這可作為圖形引擎優化的提示。

開發和偵錯的選擇性功能

D3D11_FEATURE_DATA_D3D11_OPTIONS::D iscardAPIsSeenByDriver: 您可以在開發期間監視此成員,以排除 DiscardViewDiscardResource 可能有所説明的硬體上的舊版驅動程式。

D3D11_FEATURE_DATA_MARKER_SUPPORT如果硬體和驅動程式支援 GPU 分析的資料標記,則支援此功能。

裝置