本主題說明如何判斷硬體加速是否支援多線程功能(包括 資源建立 和 命令清單)。
我們建議應用程式檢查多線程的圖形硬體支援。 如果驅動程式和圖形硬體不支援多線程物件建立,效能可以透過下列方式加以限制:
- 同時建立多個物件(甚至不同類型)可能會受到限制。
- 使用 即時內容 轉譯圖形命令時建立物件可能會受到限制。 例如,如果硬體不支援多線程,應用程式應該避免在背景線程上建立需要很長的時間才能建立的物件。 耗時很久的建立作業可能會阻塞立即上下文渲染,並增加視覺幀速率卡頓的風險。
不論驅動程式和硬體支援為何,運行時間都支援多線程和命令清單;如果沒有多線程或命令清單的驅動程式和硬體支援,運行時間將會模擬此功能。 如需多線程的詳細資訊,請參閱 Direct3D 11 中的多線程簡介。
若要檢查驅動程式是否支援多線程:
- 初始化ID3D11Device介面物件。 默認會啟用多線程。
- 呼叫
ID3D11Device::CheckFeatureSupport 。 將D3D11_FEATURE_THREADING值傳遞至Feature參數、將D3D11_FEATURE_DATA_THREADING結構傳遞至pFeatureSupportData參數,並將D3D11_FEATURE_DATA_THREADING結構的大小傳遞至FeatureSupportDataSize參數。 - 如果ID3D11Device::CheckFeatureSupport 方法成功,您在上一個步驟中傳遞的D3D11_FEATURE_DATA_THREADING結構將會使用多線程支持的相關信息來初始化。
如果 DriverConcurrentCreates 為 TRUE,驅動程式可以在不同的線程上同時建立一個以上的資源。
如果 DriverCommandLists 為 TRUE,驅動程式支援命令清單。 也就是說,直接上下文發出的渲染命令可以與物件在各個線程上創建同時進行,幀率卡頓的風險很低。
如果 DriverConcurrentCreates 為 FALSE,則驅動程式不支援並行建立,這表示可能的並行存取數量極有限。 圖形硬體無法同時在不同的線程上建立不同類型的物件。 此外,當圖形硬體嘗試在另一個線程上建立資源時,圖形硬體無法使用即時上下文發出轉譯命令。
相關主題