Freigeben über


How To: Check for Driver Support

In diesem Thema wird erläutert, wie Sie ermitteln, ob Multithreading-Features (einschließlich Ressourcenerstellung und Befehlslisten) für die Hardwarebeschleunigung unterstützt werden.

Es wird empfohlen, dass Anwendungen nach der Unterstützung von Grafikhardware für Multithreading suchen. Wenn die Treiber- und Grafikhardware die Erstellung von Multithreadobjekten nicht unterstützt, kann die Leistung auf die folgende Weise eingeschränkt werden:

  • Das Gleichzeitige Erstellen mehrerer Objekte (auch unterschiedlicher Typen) kann begrenzt sein.
  • Das Erstellen eines Objekts beim Rendern von Grafikbefehlen mithilfe eines unmittelbaren Kontexts ist möglicherweise eingeschränkt. Wenn z. B. die Hardware multithreading nicht unterstützt, sollte eine Anwendung das Erstellen eines Hintergrundthreads für ein Objekt vermeiden, das sehr lange Zeit zum Erstellen benötigt. Ein Erstellungsvorgang, der sehr lange dauert, kann das sofortige Rendern des Kontexts blockieren und das Risiko einer visuellen Framerate erhöhen.

Die Laufzeit unterstützt Multithreading- und Befehlslisten unabhängig von Treiber- und Hardwareunterstützung; Wenn keine Treiber- und Hardwareunterstützung für Multithreads oder Befehlslisten vorhanden ist, emuliert die Laufzeit die Funktionalität. Weitere Informationen zum Multithreading finden Sie unter Einführung in Multithreading in Direct3D 11.

So überprüfen Sie die Treiberunterstützung für Multithreading:

  1. Initialisieren Sie ein ID3D11Device-Schnittstellenobjekt. Standardmäßig ist Multithreading aktiviert.
  2. Call ID3D11Device::CheckFeatureSupport. Übergeben Sie den D3D11_FEATURE_THREADING Wert an den Featureparameter, übergeben Sie die D3D11_FEATURE_DATA_THREADING Struktur an den Parameter "pFeatureSupportData", und übergeben Sie die Größe der D3D11_FEATURE_DATA_THREADING Struktur an den Parameter FeatureSupportDataSize.
  3. Wenn die ID3D11Device::CheckFeatureSupport-Methode erfolgreich ist, wird die D3D11_FEATURE_DATA_THREADING Struktur, die Sie im vorherigen Schritt übergeben haben, mit Informationen zur Unterstützung von Multithreading initialisiert.
    • Wenn DriverConcurrentCreates TRUE ist, kann ein Treiber mehrere Ressourcen gleichzeitig (gleichzeitig) in verschiedenen Threads erstellen.

      Wenn DriverCommandLists WAHR ist, unterstützt der Treiber Befehlslisten. Das heißt, Renderingbefehle, die von einem unmittelbaren Kontext ausgegeben werden, können gleichzeitig mit der Objekterstellung in separaten Threads mit geringem Risiko einer Framerate-Stutter verbunden sein.

    • Wenn DriverConcurrentCreates FALSE ist, unterstützt ein Treiber keine gleichzeitige Erstellung, was bedeutet, dass die Mögliche Anzahl der Parallelität extrem begrenzt ist. Die Grafikhardware kann keine Objekte unterschiedlicher Typen gleichzeitig in verschiedenen Threads erstellen. Darüber hinaus kann die Grafikhardware keinen unmittelbaren Kontext verwenden, um Renderbefehle auszugeben, während die Grafikhardware versucht, eine Ressource in einem anderen Thread zu erstellen.

Verwenden von Direct3D 11

Multithreading