共用方式為


Direct3D 轉譯效能改善

Windows Display Driver Model (WDDM) 1.3 和更新版本的驅動程式可以支援 Microsoft Direct3D 轉譯效能改善,讓 Direct3D 9 硬體更妥善地使用硬體命令緩衝區和計數器,並將系統記憶體的有效複本複製到子資源。 這些功能會反映 Direct3D 第 10 版硬體可用的一些功能,從 Windows 8.1 開始是新的功能。

您也可以使用新的 Direct3D 11.1 資源修剪和對應預設效能改善。 下列行為變更一節將概述對應預設案例。

轉譯效能參考

本參考章節說明使用者模式設備驅動器介面 (DIS) 。

使用者模式驅動程式所實作的 Direct3D 轉譯效能函式

本節包含 Windows 顯示驅動程式模型 (WDDM) 1.3 和更新版本使用者模式顯示驅動程式實作的函式,以支援 Microsoft Direct3D 轉譯效能改善。

PFND3DDDI_FLUSH1PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTERPFND3DDDI_UPDATESUBRESOURCEUP

Direct3D 轉譯效能結構和列舉

這些使用者模式結構和列舉支持轉譯效能改善,而且會針對 Windows 8.1 進行新的或更新。 所有都適用於 Direct3D 層級 9 驅動程式,但 D3D11_1_DDI_FLUSH_FLAGS除外。

從 WDDM 1.3 開始的 DDI 實作需求

從WDDM 1.3 開始,若要實作使用者模式驅動程式,需要或選擇性下列函式。

函式群組 Description

WDDM 1.3 之前的選擇性 Direct3D 9 函式。 現在需要:

從 WDDM 1.3 開始提供的 Direct3D 9 函式。 驅動程式必須實作所有這些函式,或全部都未實作:

實作上述 WDDM 1.3 和更新版本的選擇性函式時,這些函式會有相關聯的行為變更:

呼叫 GetCaps 時適用這些案例:

  • 如果 設定D3DDDICAPS_GETD3DQUERYDATA ,驅動程式可以選擇性地報告時間戳的支援,這表示 Direct3D 運行時間不會遮罩支援。
  • 如果已設定 D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT ,驅動程式可以回報實例的選擇性硬體支援。

這些 Direct3D 11 函式具有相關聯的行為變更:

呼叫資源建立、對應和取消對應函式的行為變更

針對WDDM 1.3和更新版本驅動程式所實作的這些函式,Direct3D 運行時間會為對應預設案例提供一組受限的輸入值。 這些受限制的值僅適用於支援功能層級 11.1 和更新版本的驅動程式。

CreateResource (D3D11) 函式

這些輸入 D3D11DDIARG_CREATERESOURCE 結構成員受到限制:

member 描述

ResourceDimensionUsage

這些行為變更僅適用於 Direct3D 運行時間針對 ResourceDimension 提供類型D3D10DDIRESOURCE_BUFFER,以及 Usage 的類型D3D10_DDI_USAGE_DEFAULT

BindFlags

Direct3D 運行時間只會設定 D3D10_DDI_BIND_SHADER_RESOURCED3D11_DDI_BIND_UNORDERED_ACCESS 值。

MapFlags

如果符合此處所列的所有其他成員需求,運行時間可以設定 D3D10_DDI_MAP_READD3D10_DDI_MAP_WRITED3D10_DDI_MAP_READWRITE 值。 驅動程式必須支持這些值。 D3D10_DDI_MAP_WRITE_DISCARDD3D10_DDI_MAP_WRITE_NOOVERWRITE的值無效。

MiscFlags

運行時間只會設定 D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWSD3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED 值。

格式

運行時間只會設定 DXGI_FORMAT_UNKNOWN 值。

SampleDesc

運行時間會設定 DXGI_SAMPLE_DESC將成員計數 為 1,並將 Quality 成員計算為零。

MipLevels

運行時間會將值設定為 1。

ArraySize

運行時間會將值設定為 1。

pPrimaryDesc

運行時間會將值設定為 NULL

ResourceMap函式

ResourceMap 的這些輸入參數受到限制:

參數 Description

hResource

MapFlags 的非零值在建立呼叫 CreateResource (D3D11) 時,Direct3D 運行時間只會設定D3D10DDIRESOURCE_BUFFER資源。

運行時間只會設定 DXGI_FORMAT_UNKNOWN 值。

子資源

運行時間只會將值設定為 0。

DDIMap

如果符合這裡列出的所有其他成員需求,運行時間可以設定D3D10_DDI_MAP_READD3D10_DDI_MAP_WRITED3D10_DDI_MAP_READWRITE值,比對 CreateResource (D3D11 建立呼叫中所設定的 MapFlags 值) 。

標誌

雖然運行時間的輸入值不受限制,但驅動程式必須能夠支援 D3D10_DDI_MAP_FLAG_DONOTWAIT 值。

pMappedSubResource

雖然運行時間的輸入值不受限制,但驅動程式必須將有效的 CPU 可快取指標指派給 D3D10DDI_MAPPED_SUBRESOURCEpData 成員和必須設定 RowPitchDepthPitch ,以符合緩衝區的大小和 pData 中提供的數據。

ResourceUnmap函式

ResourceUnmap 的這些輸入參數受到限制:

參數 Description

hDevice

雖然 Direct3D 執行時間的輸入值不受限制,但符合來自原始 ResourceMap 呼叫之 hDevice 值的值。

hResource

建立 CreateResource (D3D11 ) 時,運行時間只會設定 MapFlags 的非零值時,才會設定D3D10DDIRESOURCE_BUFFER資源。

子資源

運行時間只會將值設定為 0。