支援多個處理器

多處理器電腦上的使用者模式顯示驅動程式可讓 Microsoft Direct3D 執行時間處理多個處理器優化,或者驅動程式可以執行自己的多處理器優化。

執行時間處理Multiple-Processor優化

Direct3D 執行時間處理的多重處理器優化只會在支援 LockAsyncUnlockAsyncRename 函式的驅動程式上啟用。 這些函式可讓多處理器優化與經常鎖定動態資源的應用程式搭配運作。 LockAsyncUnlockAsync函式以及GetQueryData函式必須重新進入公開 DDI 版本的0x0000000B或更新版本的驅動程式。 驅動程式會在呼叫驅動程式的 OpenAdapter函式時,傳回D3D10DDIARG_OPENADAPTER結構的DriverVersion成員中的 DDI 版本值。 當執行時間以重新進入的方式呼叫驅動程式函式時,一個執行緒可以在該函式內執行,而另一個參考相同顯示裝置的執行緒會在另一個驅動程式函式內執行。

在某些情況下,Direct3D 執行時間會使用多處理器優化,將工作卸載至個別處理器並改善電腦效能。 啟用多重處理器優化時,Direct3D 執行時間與使用者模式顯示驅動程式之間會新增額外的軟體層。 此軟體層會攔截 Direct3D 執行時間對使用者模式顯示驅動程式函式所做的所有呼叫。

軟體層會將命令排入背景工作執行緒以非同步方式處理的批次中,而不是直接呼叫使用者模式顯示驅動程式。 不過,軟體層無法批次處理對使用者模式顯示驅動程式函式所做的所有呼叫。 特別是,軟體層無法批次呼叫傳回信息 (函式,例如 CreateResource) 。 當軟體層必須呼叫這其中一種類型的驅動程式函式時,它會透過背景工作執行緒排清所有已排入佇列的命令,然後軟體層會在主要應用程式執行緒上呼叫驅動程式函式。

驅動程式處理Multiple-Processor優化

如果驅動程式將執行自己的多處理器優化,它不得實作 LockAsyncUnlockAsyncRename 函式。 在此情況下,驅動程式必須呼叫 pfnSetAsyncCallbacksCb 函式來通知執行時間,執行時間是否會啟動或停止從背景工作執行緒接收對執行時間回呼函式的呼叫。

如果驅動程式執行自己的多處理器優化,它應該遵循 Direct3D 執行時間判斷啟用多重處理器優化時所使用的相同原則。 此原則可讓您在所有進程之間公平共用系統資源。 特別是,在下列情況下,驅動程式應該停用多個處理器優化:

  • 應用程式會以視窗模式執行。

  • 電腦只包含一個處理器 (或處理器核心) ;驅動程式應該停用具有超執行緒之單一處理器電腦上的優化。

  • 應用程式要求未啟用多個處理器優化,或應用程式使用軟體頂點處理;此資訊會傳遞至驅動程式的 CreateDevice 函式。

如果廠商想要在這些情況中啟用多個處理器優化,他們應該先連絡 Microsoft。