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_FLUSH1: PFND3DDDI_CHECKCOUNTERINFO
PFND3DDDI_CHECKCOUNTER: PFND3DDDI_UPDATESUBRESOURCEUP
Direct3D 轉譯效能結構和列舉
這些使用者模式結構和列舉支持轉譯效能改善,而且會針對 Windows 8.1 進行新的或更新。 所有都適用於 Direct3D 層級 9 驅動程式,但 D3D11_1_DDI_FLUSH_FLAGS除外。
- D3DDDI_FLUSH_FLAGS 新) (
- D3DDDIARG_COPYFLAGS (新的)
- D3DDDIARG_COUNTER_INFO 新) (
- D3DDDIARG_UPDATESUBRESOURCEUP 新) (
- D3DDDICAPS_SIMPLE_INSTANCING_SUPPORT 新) (
- CreateResource2 (WDDM 1.3 和更新版本的 Direct3D 層級 9 驅動程式必須傳回 E_INVALIDARG 錯誤碼,如果 CaptureBuffer 旗標值已設定為)
- 已 新增 ) D3D11_1_DDI_FLUSH_FLAGS (D3DWDDM1_3DDI_TRIM_MEMORY 常數
- D3DDDI_DEVICEFUNCS (pfnFlush1、 pfnCheckCounterInfo、 pfnCheckCounter、 pfnUpdateSubresourceUP 成員新增)
- 已 新增) D3DDDI_POOL (D3DDDIPOOL_STAGINGMEM 常數
- 已 新增 ) D3DDDICAPS_TYPE (D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT 常數
- 備註) 中的 GetCaps (新資訊
從 WDDM 1.3 開始的 DDI 實作需求
從WDDM 1.3 開始,若要實作使用者模式驅動程式,需要或選擇性下列函式。
函式群組 | Description |
---|---|
WDDM 1.3 之前的選擇性 Direct3D 9 函式。 現在需要: |
|
從 WDDM 1.3 開始提供的 Direct3D 9 函式。 驅動程式必須實作所有這些函式,或全部都未實作: |
|
實作上述 WDDM 1.3 和更新版本的選擇性函式時,這些函式會有相關聯的行為變更: |
呼叫 GetCaps 時適用這些案例:
|
這些 Direct3D 11 函式具有相關聯的行為變更: |
|
呼叫資源建立、對應和取消對應函式的行為變更
針對WDDM 1.3和更新版本驅動程式所實作的這些函式,Direct3D 運行時間會為對應預設案例提供一組受限的輸入值。 這些受限制的值僅適用於支援功能層級 11.1 和更新版本的驅動程式。
這些輸入 D3D11DDIARG_CREATERESOURCE 結構成員受到限制:
member | 描述 |
---|---|
ResourceDimension 和 Usage |
這些行為變更僅適用於 Direct3D 運行時間針對 ResourceDimension 提供類型D3D10DDIRESOURCE_BUFFER,以及 Usage 的類型D3D10_DDI_USAGE_DEFAULT。 |
BindFlags |
Direct3D 運行時間只會設定 D3D10_DDI_BIND_SHADER_RESOURCE 和 D3D11_DDI_BIND_UNORDERED_ACCESS 值。 |
MapFlags |
如果符合此處所列的所有其他成員需求,運行時間可以設定 D3D10_DDI_MAP_READ、 D3D10_DDI_MAP_WRITE和 D3D10_DDI_MAP_READWRITE 值。 驅動程式必須支持這些值。 D3D10_DDI_MAP_WRITE_DISCARD和D3D10_DDI_MAP_WRITE_NOOVERWRITE的值無效。 |
MiscFlags |
運行時間只會設定 D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS 和 D3D11_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_READ、D3D10_DDI_MAP_WRITE或D3D10_DDI_MAP_READWRITE值,比對 CreateResource (D3D11 建立呼叫中所設定的 MapFlags 值) 。 |
標誌 |
雖然運行時間的輸入值不受限制,但驅動程式必須能夠支援 D3D10_DDI_MAP_FLAG_DONOTWAIT 值。 |
pMappedSubResource |
雖然運行時間的輸入值不受限制,但驅動程式必須將有效的 CPU 可快取指標指派給 D3D10DDI_MAPPED_SUBRESOURCE。pData 成員和必須設定 RowPitch 和 DepthPitch ,以符合緩衝區的大小和 pData 中提供的數據。 |
ResourceUnmap 的這些輸入參數受到限制:
參數 | Description |
---|---|
hDevice |
雖然 Direct3D 執行時間的輸入值不受限制,但符合來自原始 ResourceMap 呼叫之 hDevice 值的值。 |
hResource |
當建立 CreateResource (D3D11 ) 時,運行時間只會設定 MapFlags 的非零值時,才會設定D3D10DDIRESOURCE_BUFFER資源。 |
子資源 |
運行時間只會將值設定為 0。 |