Direct3D 11 Devices 之 Using Direct3D 11 feature data to supplement Direct3D feature levels

本文只是對官方文檔做出簡單的翻譯 原文地址:Using Direct3D 11 feature data to supplement Direct3D feature levels

瞭解如何檢查設備對可選功能的支持,包括在Windows的最新版本中添加的功能。

Direct3D feature levels 指示定義良好的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設備支持feature level 11.1,則SAD4ShaderInstructions 和 ExtendedDoublesShaderInstructions會自動支持 D3D11_FEATURE_DATA_D3D11_OPTIONS指示的所有可選功能。

運行時始終將以下成員分組設置相同。也就是說,分組中的所有值一起爲TRUE 或 FALSE

  • 丟棄APISeenByDriver和FlagsForUpdateAndCopySeenByDriver
  • ClearView,CopyWithOverlap,ConstantBufferPartialUpdate,ConstantBufferOffsetting和MapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRV和MultisampleRTVWithForcedSampleCountOne

feature level 11.2選項D3D11_FEATURE_D3D11_OPTIONS1):此字段指示的可選功能是獨立的,必須單獨檢查。

Windows RT 8.1和Windows Phone 8.1設備上的功能支持

Windows RT平板設備可以支持各種功能級別和可選功能,經過優化以降低功耗,並使用集成的圖形而不是獨立的GPU。用於ARM設備的Windows應用商店應用必須支持feature level  9.1。適用於Windows RT的DirectX應用程序應利用可選功能,這些功能可在可用時節省電源和週期(例如,簡單的實例化)。

Windows Phone 8移動設備支持具有特定可選功能的feature level  9.3。請參閱Direct3D feature level 9_3 for Windows Phone 8

 

Direct3D 11的可選功能是什麼?

本文的其餘部分描述了Direct3D 11.2中可用的可選功能。按添加的時間順序排列功能,以便您瞭解Direct3D 11的不同版本中的功能。

功能級別10的可選計算着色器支持

以下功能始終可用於feature level  10的設備:

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS: 如果爲TRUE,則設備支持計算着色器。這包括對原始和結構化緩衝區的支持。

feature level  10_0或10_1設備支持此功能時,不能保證該設備支持計算着色器4.1。如果 ID3D11Device::CreateComputeShader 引發計算着色器4.1程序異常,則應用應準備好使用計算着色器4.0。

功能級別9的可選功能

從Windows 8開始,爲feature level  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開始爲feature level  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。

對於feature level 9的設備,頂點着色器的最低精度可能不同於像素着色器。頂點着色器的精度在AllOtherShaderStagesMinPrecision字段中指示。

D3D11_FEATURE_DATA_DOUBLESfeature level 11的設備可以在shader model 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 :: DiscardAPIsSeenByDriver:您可以在開發過程中監視此成員,以排除硬件驅動程序上的舊驅動程序,否則,DiscardView 和 DiscardResource可能會有所幫助。

D3D11_FEATURE_DATA_MARKER_SUPPORT:  如果硬件和驅動程序支持GPU配置文件的數據標記,則支持此功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章