D3D11_FEATURE_DATA_D3D11_OPTIONS 結構 (d3d11.h)
說明目前圖形驅動程式中的 Direct3D 11.1 功能選項。
注意
Direct3D 11.1 執行時間支援此結構,可在 Windows 8 和更新版本的作業系統上使用。
語法
typedef struct D3D11_FEATURE_DATA_D3D11_OPTIONS {
BOOL OutputMergerLogicOp;
BOOL UAVOnlyRenderingForcedSampleCount;
BOOL DiscardAPIsSeenByDriver;
BOOL FlagsForUpdateAndCopySeenByDriver;
BOOL ClearView;
BOOL CopyWithOverlap;
BOOL ConstantBufferPartialUpdate;
BOOL ConstantBufferOffsetting;
BOOL MapNoOverwriteOnDynamicConstantBuffer;
BOOL MapNoOverwriteOnDynamicBufferSRV;
BOOL MultisampleRTVWithForcedSampleCountOne;
BOOL SAD4ShaderInstructions;
BOOL ExtendedDoublesShaderInstructions;
BOOL ExtendedResourceSharing;
} D3D11_FEATURE_DATA_D3D11_OPTIONS;
成員
OutputMergerLogicOp
指定邏輯作業是否可在混合狀態中使用。 如果邏輯作業可在混合狀態中使用,則執行時間會將此成員設定為 TRUE ,否則為 FALSE 。 此功能層級9.1、9.2 和 9.3 的成員為FALSE。 此功能層級 10、10.1 和 11 是選擇性的成員。 此功能層級 11.1 的這個成員為 TRUE 。
UAVOnlyRenderingForcedSampleCount
指定驅動程式是否可以轉譯, (RTV) 或深度樣板檢視 (DSV) ,以及只有未排序的存取檢視 () 系結。 如果驅動程式可以轉譯沒有 RTV 或 DSV,且只有系結的 UAV,則執行時間會將此成員設定為 TRUE ,否則為 FALSE 。 如果為 TRUE,您可以在轉譯時將 D3D11_RASTERIZER_DESC1的ForcedSampleCount成員設定為 1、4 或 8,而沒有 RTV 或 DSV 且只有系結的 UAV。 對於 功能層級 11.1,此成員一律為 TRUE ,您也可以將 ForcedSampleCount 設定為 16,以及 1、4 或 8。 ForcedSampleCount的預設值為 0,這表示與值設定為 1 相同。 您一律可以將 ForcedSampleCount 設定為 0 或 1,讓僅限 UAV 轉譯與設定此成員的方式無關。
DiscardAPIsSeenByDriver
指定驅動程式是否支援 ID3D11DeviceCoNtext1::D iscardView 和 ID3D11DeviceCoNtext1::D iscardResource 方法。 如果驅動程式支援這些方法,執行時間會將這個成員設定為 TRUE ,否則為 FALSE 。 設定此成員的方式不會指出驅動程式是否實際使用這些方法;也就是說,如果這些方法對硬體而言不實用,驅動程式可能會忽略這些方法。 如果為 FALSE,執行時間不會將這些方法公開給驅動程式,因為驅動程式不支援它們。 您可以在開發期間監視此成員,以排除這些方法可能有所説明的硬體上的舊版驅動程式。 您不需要根據這個成員為 TRUE 或 FALSE來撰寫個別的程式碼路徑;您可以視需要呼叫這些方法。
FlagsForUpdateAndCopySeenByDriver
指定驅動程式是否支援 由 ID3D11DeviceCoNtext1::CopySubresourceRegion1 和ID3D11DeviceCoNtext1::UpdateSubresource1 方法公開的複製和更新的新語意。 如果驅動程式支援新的語意進行複製和更新,執行時間會將這個成員設定為 TRUE 。 執行時間只會針對舊版驅動程式將此成員設定為 FALSE 。 執行時間會處理此成員,類似于 DiscardAPIsSeenByDriver 成員。
ClearView
指定驅動程式是否支援 ID3D11DeviceCoNtext1::ClearView 方法。 如果驅動程式支援這個方法,執行時間會將這個成員設定為 TRUE ,否則為 FALSE 。 如果為 FALSE,執行時間不會向驅動程式公開這個方法,因為驅動程式不支援它。
CopyWithOverlap
指定您是否可以使用重迭的來源和目的地矩形呼叫 ID3D11DeviceCoNtext1::CopySubresourceRegion1 。 如果您可以使用重迭的來源和目的地矩形呼叫CopySubresourceRegion1,則執行時間會將這個成員設定為TRUE,否則為FALSE。 如果為 FALSE,執行時間不會向驅動程式公開這個方法,因為驅動程式不支援它。
ConstantBufferPartialUpdate
指定驅動程式是否支援常數緩衝區的部分更新。 如果驅動程式支援常數緩衝區的部分更新,執行時間會將這個成員設定為 TRUE ,否則為 FALSE 。 如果為 FALSE,則執行時間不會將此作業公開給驅動程式,因為驅動程式不支援它。
ConstantBufferOffsetting
指定驅動程式是否支援在著色器之常數緩衝區中設定位移的新語意。 如果驅動程式支援當您呼叫ID3D11DeviceCoNtext1::VSSetConstantBuffers1方法和 FALSE 之類的新方法時,執行時間會將這個成員設定為TRUE。否則為FALSE。 如果為 FALSE,則執行時間不會將此作業公開給驅動程式,因為驅動程式不支援它。
MapNoOverwriteOnDynamicConstantBuffer
指定您是否可以在動態常數緩衝區 (上呼叫 ID3D11DeviceCoNtext::Map 與 D3D11_MAP_WRITE_NO_OVERWRITE ,也就是驅動程式是否支援此作業) 。 如果驅動程式支援此作業,執行時間會將此成員設定為 TRUE ,否則為 FALSE 。 如果為 FALSE,則執行時間會因為驅動程式不支援作業而失敗。
MapNoOverwriteOnDynamicBufferSRV
指定您是否可以在動態緩衝區 SRV (上呼叫 ID3D11DeviceCoNtext::Map 與 D3D11_MAP_WRITE_NO_OVERWRITE ,也就是驅動程式是否支援此作業) 。 如果驅動程式支援此作業,執行時間會將此成員設定為 TRUE ,否則為 FALSE 。 如果為 FALSE,則執行時間會因為驅動程式不支援作業而失敗。
MultisampleRTVWithForcedSampleCountOne
指定當您使用 RTV 系結轉譯時,驅動程式是否支援多重取樣轉譯。 如果為 TRUE,您可以使用多重取樣 RTV 系結,將D3D11_RASTERIZER_DESC1的ForcedSampleCount成員設定為 1。 驅動程式可以在 功能層級 10 和更新版本上支援此選項。 如果 為 FALSE,轉譯器狀態建立將會失敗,因為驅動程式是舊版或功能層級太低。
SAD4ShaderInstructions
指定硬體和驅動程式是否支援著色器中的 msad4 內建函式。 如果硬體和驅動程式支援呼叫著色器中的msad4內建函式,執行時間會將此成員設定為TRUE。 如果為 FALSE,則驅動程式為舊版或硬體不支援 選項;執行時間會針對使用 msad4的著色器建立失敗。
ExtendedDoublesShaderInstructions
指定硬體和驅動程式是否支援著色器中的 fma 內建函式和其他擴充雙精度浮點數指令 (DDIV 和 DR) CP 。 fma內建函式會發出擴充雙精度浮點數 DFMA指令。 如果硬體和驅動程式支援著色器 (著色器模型 5和更新版本的擴充雙精度浮點數指令,執行時間會將這個成員設定為TRUE) 。 此選項的支援也表示支援基本雙精確度著色器指令。 您可以使用 D3D11_FEATURE_DOUBLES 值來查詢支援雙精確度著色器。 如果為 FALSE,則硬體和驅動程式不支援 選項;執行時間會針對使用擴充雙精度浮點數指令的著色器建立失敗。
ExtendedResourceSharing
指定硬體和驅動程式是否支援 共用 Texture2D 資源類型和格式。 如果硬體和驅動程式支援擴充 Texture2D 資源分享,執行時間會將此成員設定為 TRUE 。
備註
如果 Microsoft Direct3D 裝置支援功能層級11.1 (D3D_FEATURE_LEVEL_11_1) ,當您呼叫ID3D11Device::CheckFeatureSupport與D3D11_FEATURE_D3D11_OPTIONS時,CheckFeatureSupport會傳回指標給所有成員設為TRUE的D3D11_FEATURE_DATA_D3D11_OPTIONS指標,但SAD4ShaderInstructions和ExtendedDoublesShaderInstructions除外成員,硬體和驅動程式選擇性支援,因此可以是TRUE或FALSE。
功能層級 11.1 提供下列其他功能:
- 每個著色器階段的 UAV 都有 64 個 UAV 系結插槽,而不是 8 個。
- 與目標無關的點陣化,可讓您將D3D11_RASTERIZER_DESC1的ForcedSampleCount成員設定為 1、4、8 或 16,並使用單一樣本轉譯為 RTV。
- 僅限 UAV 轉譯,且D3D11_RASTERIZER_DESC1的 ForcedSampleCount成員設定為最多 16 (最多 8 個功能層級11) 。
- DiscardAPIsSeenByDriver 和 FlagsForUpdateAndCopySeenByDriver
- ClearView、 CopyWithOverlap、 ConstantBufferPartialUpdate、 ConstantBufferOffsetting和 MapNoOverwriteOnDynamicConstantBuffer
- MapNoOverwriteOnDynamicBufferSRV 和 MultisampleRTVWithForcedSampleCountOne
規格需求
最低支援的用戶端 | 適用于 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | 適用于 Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
標頭 | d3d11.h |