如何:檢查驅動程序支援

本主題說明如何判斷硬體加速是否支援多線程功能(包括 資源建立命令清單)。

我們建議應用程式檢查多線程的圖形硬體支援。 如果驅動程式和圖形硬體不支援多線程物件建立,效能可以透過下列方式加以限制:

  • 同時建立多個物件(甚至不同類型)可能會受到限制。
  • 使用 即時內容 轉譯圖形命令時建立物件可能會受到限制。 例如,如果硬體不支援多線程,應用程式應該避免在背景線程上建立需要很長的時間才能建立的物件。 需要很長的時間建立作業可能會封鎖即時內容轉譯,並增加視覺幀速率擷取的風險。

不論驅動程式和硬體支援為何,運行時間都支援多線程和命令清單;如果沒有多線程或命令清單的驅動程式和硬體支援,運行時間將會模擬此功能。 如需多線程的詳細資訊,請參閱 Direct3D 11 中的多線程簡介。

若要檢查驅動程式是否支援多線程:

  1. 初始化ID3D11Device介面物件。 默認會啟用多線程。
  2. 呼叫 ID3D11Device::CheckFeatureSupportD3D11_FEATURE_THREADING值傳遞至 Feature 參數、將D3D11_FEATURE_DATA_THREADING結構傳遞pFeatureSupportData 參數,並將D3D11_FEATURE_DATA_THREADING結構的大小傳遞至 FeatureSupportDataSize 參數。
  3. 如果ID3D11Device::CheckFeatureSupport 方法成功,您在上一個步驟中傳遞的D3D11_FEATURE_DATA_THREADING結構將會使用多線程支持的相關信息來初始化。
    • 如果 DriverConcurrentCreatesTRUE,驅動程式可以在不同的線程上同時建立一個以上的資源。

      如果 DriverCommandListsTRUE,驅動程式支援命令清單。 也就是說,立即內容所發出的轉譯命令可以同時在個別線程上建立物件,且有幀速率擷取的低風險。

    • 如果 DriverConcurrentCreatesFALSE,則驅動程式不支援並行建立,這表示可能的並行存取數量極有限。 圖形硬體無法同時在不同的線程上建立不同類型的物件。 此外,圖形硬體無法在圖形硬體嘗試在另一個線程上建立資源時,立即使用內容發出轉譯命令。

如何使用 Direct3D 11

多執行緒