Dela via


Så här gör du: Kontrollera drivrutinsstöd

Det här avsnittet visar hur du avgör om flertrådsfunktioner (inklusive resursskapande och kommandolistor) stöds för maskinvaruacceleration.

Vi rekommenderar att program söker efter stöd för grafikmaskinvara för multitrådning. Om drivrutinen och grafikmaskinvaran inte stöder skapande av flertrådade objekt kan prestandan begränsas på följande sätt:

  • Att skapa flera objekt (även av olika typer) samtidigt kan vara begränsat.
  • Det kan vara begränsat att skapa ett objekt när grafikkommandon återges med hjälp av en omedelbar kontext. Om maskinvara till exempel inte stöder multitrådning bör ett program undvika att skapa ett objekt i en bakgrundstråd som kräver mycket lång tid att skapa. En skapandeåtgärd som tar mycket lång tid kan blockera omedelbar kontextrendering och öka risken för ett visuellt bildrutehastighetsstutter.

Körningen stöder flertråds- och kommandolistor oavsett drivrutins- och maskinvarustöd. Om det inte finns något drivrutins- och maskinvarustöd för flertråds- eller kommandolistor emulerar körningen funktionerna. Mer information om multitrådning finns i Introduktion till multitrådning i Direct3D 11.

Om du vill söka efter drivrutinsstöd för multitrådning:

  1. Initiera ett ID3D11Device-gränssnittsobjekt. Som standard är multitrådning aktiverat.
  2. Anropa ID3D11Enhet::CheckFeatureSupport. Skicka D3D11_FEATURE_THREADING-värdet till parametern Feature, skicka D3D11_FEATURE_DATA_THREADING-strukturen till parametern pFeatureSupportData och skicka storleken på D3D11_FEATURE_DATA_THREADING-strukturen till parametern FeatureSupportDataSize.
  3. Om metoden ID3D11Device::CheckFeatureSupport lyckas, kommer den D3D11_FEATURE_DATA_THREADING-struktur som du skickade i föregående steg att initieras med information om stöd för multitrådning.
    • Om DriverConcurrentCreates är TRUEkan en drivrutin skapa fler än en resurs samtidigt (samtidigt) i olika trådar.

      Om DriverCommandLists är TRUEstöder drivrutinen kommandolistor. Det innebär att återgivningskommandon utfärdade av en "immediate context" kan samverka med skapandet av objekt på separata trådar samtidigt, med låg risk för störningar i bildfrekvensen.

    • Om DriverConcurrentCreates är FALSEstöder inte en drivrutin samtidig skapande, vilket innebär att mängden samtidighet som är möjlig är extremt begränsad. Grafikmaskinvaran kan inte skapa objekt av olika typer på olika trådar samtidigt. Dessutom kan grafikmaskinvaran inte använda en omedelbar kontext för att utfärda återgivningskommandon medan grafikmaskinvaran försöker skapa en resurs i en annan tråd.

Använda Direct3D 11

multitrådning