Vorgehensweise: Überprüfen der Treiberunterstützung

In diesem Thema wird erläutert, wie Sie bestimmen können, ob Multithreading-Funktionen (einschließlich Ressourcen Erstellung und Befehlslisten) für die Hardwarebeschleunigung unterstützt werden.

Es wird empfohlen, dass Anwendungen auf die Unterstützung von Grafikhardware von Multithreading überprüfen. Wenn die Treiber-und Grafikhardware keine Multithread-Objekt Erstellung unterstützt, kann die Leistung auf folgende Weise eingeschränkt werden:

  • Das Erstellen mehrerer Objekte (auch unterschiedlicher Typen) kann gleichzeitig eingeschränkt sein.
  • Das Erstellen eines Objekts, während Grafikbefehle mithilfe eines unmittelbaren Kontexts gerendert werden, ist möglicherweise eingeschränkt. Wenn z. b. das Multithreading von der Hardware nicht unterstützt wird, sollte eine Anwendung ein Objekt, das für die Erstellung sehr lange Zeit benötigt, nicht in einem Hintergrund Thread erstellen. Ein Erstellungs Vorgang, der sehr lange dauert, kann das sofortige Kontext Rendering blockieren und das Risiko einer visuellen Frame Rate erhöhen.

Die Laufzeit unterstützt das Multithreading und Befehlslisten unabhängig von der Unterstützung von Treibern und Hardware. Wenn keine Treiber-und Hardwareunterstützung für Multithreads oder Befehlslisten vorhanden ist, wird die Funktionalität von der Laufzeit emuliert. 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 -Schnittstellen Objekt. Das Multithreading ist standardmäßig aktiviert.
  2. Wenden Sie sich an ID3D11Device:: checkfeaturesupport. Übergeben Sie den D3D11- featurethreading _ _ -Wert an den Featureparameter, übergeben Sie die D3D11 _ Feature _ Data _ Threading -Struktur an den pfeaturesupportdata -Parameter, und übergeben Sie die Größe der _ _ Daten _ Thread Struktur der D3D11-Funktion an den Parameter " featuresupportdatasize ".
  3. Wenn die ID3D11Device:: checkfeaturesupport -Methode erfolgreich ist, wird die D3D11 _ Feature _ Data _ Threading -Struktur, die Sie im vorherigen Schritt übermittelt haben, mit Informationen zur Multithreading-Unterstützung initialisiert.
    • Wenn " driverconcurrentcreate " den Wert " true" hat, kann ein Treiber mehr als eine Ressource gleichzeitig (gleichzeitig) in verschiedenen Threads erstellen.

      Wenn drivercommandlists den Wert true hat, unterstützt der Treiber Befehlslisten. Das heißt, dass renderingbefehle, die von einem unmittelbaren Kontext ausgegeben werden, gleichzeitig mit der Objekt Erstellung in separaten Threads mit geringem Risiko einer Frame Rate Stutter erfolgen können.

    • Wenn " driverconcurrentcreation " den Wert " false" hat, unterstützt ein Treiber keine gleichzeitige Erstellung. Dies bedeutet, dass die Menge der möglichen Parallelität äußerst eingeschränkt ist. Von der Grafikhardware können keine Objekte verschiedener Typen in verschiedenen Threads simuliert werden. 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.

Verwendung von Direct3D 11

Multithreading