延後內容簡介

本節僅適用于 Windows 7 和更新版本,以及 Windows Server 2008 R2 和更新版本的 Windows 作業系統。

應用程式會使用延後的內容來建立命令清單。 如果使用者模式顯示驅動程式指出它透過 D3D11DDI_THREADING_CAPS 結構的D3D11DDICAPS_COMMANDLISTS_BUILD_2旗標支援命令清單,它也必須支援建立及操作延後的內容。 如需驅動程式如何指出執行緒功能的詳細資訊,請參閱 支援執行緒、命令清單和 3D 管線。 延後的內容與立即內容不同,因為延後內容記錄的命令無法執行,直到應用程式藉由執行產生的命令清單明確要求執行命令為止。 為了建立和使用延後的內容,Direct3D 第 11 版會提供下列新的 DDI 函式。 這些函式是建立裝置/立即內容組合所需的資訊子集。

CalcPrivateDeferredCoNtextSizeCreateDeferredCoNtext函式的語意類似于其他類似的 DDI 函式。

Direct3D 執行時間會針對驅動程式的 CreateDeferredCoNtext 函式的每個呼叫傳入新的驅動程式控制碼和核心層控制碼,以建立每個延後的內容。 每個延後內容的管線狀態必須相當於立即內容在執行清除狀態作業之後所擁有的管線狀態。 驅動程式必須填入D3D11DDI_DEVICEFUNCS結構的成員D3D11DDIARG_CREATEDEFERREDCONTEXT結構之 p11CoNtextFuncs成員會以其函式資料表中的函式子集指向;執行時間會使用每個對應的延後內容D3D10DDI_HDEVICE處理值,D3D11DDIARG_CREATEDEFERREDCONTEXT的hDrvCoNtext成員使用此函式資料表指定的值。

驅動程式必須繼續提供以 pfnCreatepfnOpenpfnDestroy 開頭的函式,以供延遲的內容使用。 這些函式會與延後內容的其餘部分共用相同的執行緒語意,並用來開啟和關閉內容本機 DDI 控制碼,如使用 Context-Local DDI 控制碼中所述。 以 pfnCalcPrivatepfnCheck 開頭的函式不會用於延後的內容;因此,當建立延遲的內容時,驅動程式可以將這些函式的 D3D11DDI_DEVICEFUNCS 成員設定為 Null 。 大部分的其餘裝置功能都會用於延後的內容支援。 不過,驅動程式不會利用其 QueryGetData 函 式。 不過,驅動程式會利用其 ResourceMapResourceUnmap 函式。 驅動程式僅支援 Direct3D 第 11 版資源限制的 ResourceIsStagingBusy 函式和新 DDI 函式,方法是使用即時內容控制碼。 如需未用於延後內容之函式的完整清單,請參閱 排除延遲內容的 DDI 函式。

驅動程式會利用記憶體區塊中提供的核心層回呼函式, 而 p11UMCallbacksD3D11DDIARG_CREATEDEFERREDCONTEXT 的成員指向該函式。 這些核心層回呼函式會為每個延遲的內容提供重新整理狀態 DDI。 不過,最重要的是,新增了Direct3D 10 變更中所述的pfnPerformAmortizedProcessingCb回呼函式。

驅動程式不應該預期 pfnDisableDeferredStagingResourceDestruction 回呼函式 ,其中 pfnDisableDeferredStagingResourceDestruction 成員 D3D11DDI_CORELAYER_DEVICECALLBACKS 指向有效。 驅動程式應該在裝置/即時內容的CreateDevice (D3D10) 函式內呼叫 pfnDisableDeferredStagingResourceDestruction;之後,驅動程式絕對不應該使用新的 Direct3D 版本 11 DDI 語意呼叫pfnDisableDeferredStagingResourceDestruction

驅動程式的 RecycleCreateDeferredCoNtext 函式必須清除延遲內容的管線狀態,類似于驅動程式 的 CreateDeferredCoNtext 如何清除延遲內容的管線狀態。 在執行時間呼叫驅動程式的AbandonCommandList、CreateCommandListRecycleCreateCommandList之後,執行時間可以搭配驅動程式的DestroyDevice (D3D10) RecycleCreateDeferredCoNtext函式使用延後的內容控制碼。 如需 RecycleCreateDeferredCoNtext的詳細資訊,請參閱 小型命令清單的優化