Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono sposób określania, czy funkcje wielowątkowości (w tym tworzenie zasobów i funkcja oraz listy poleceń ) są obsługiwane w przypadku przyspieszania sprzętowego.
Zalecamy, aby aplikacje sprawdzały, czy sprzęt graficzny obsługuje wielowątkowość. Jeśli sterownik i sprzęt graficzny nie obsługują tworzenia obiektów wielowątkowych, wydajność może być ograniczona w następujący sposób:
- Tworzenie wielu obiektów (nawet różnych typów) w tym samym czasie może być ograniczone.
- Tworzenie obiektu podczas renderowania poleceń graficznych przy użyciu bezpośredniego kontekstu może być ograniczone. Jeśli na przykład sprzęt nie obsługuje wielowątków, aplikacja powinna unikać tworzenia w wątku w tle obiektu, który wymaga bardzo długiego czasu na utworzenie. Operacja tworzenia, która trwa bardzo długo, może blokować natychmiastowe renderowanie kontekstu i zwiększać ryzyko zacinania się liczby klatek wizualnych.
Środowisko uruchomieniowe obsługuje listy wielowątków i poleceń niezależnie od obsługi sterowników i sprzętu; Jeśli nie ma obsługi sterowników i sprzętu dla list wielowątków lub poleceń, środowisko uruchomieniowe emuluje funkcjonalność. Aby uzyskać więcej informacji na temat wielowątkowości, zobacz Wprowadzenie do wielowątkowości w Direct3D 11.
Aby sprawdzić obsługę sterowników wielowątkowych:
- Zainicjuj obiekt interfejsu ID3D11Device. Domyślnie włączono wielowątkowość.
- Wywołaj ID3D11Device::CheckFeatureSupport. Przekaż wartość D3D11_FEATURE_THREADING do parametru Feature, przekaż strukturę D3D11_FEATURE_DATA_THREADING do parametru pFeatureSupportData oraz przekaż rozmiar struktury D3D11_FEATURE_DATA_THREADING do parametru FeatureSupportDataSize.
- Jeśli ID3D11Device::CheckFeatureSupport metoda powiedzie się, struktura D3D11_FEATURE_DATA_THREADING, przekazana w poprzednim kroku, zostanie zainicjowana z informacjami na temat obsługi wielowątkowości.
Jeśli DriverConcurrentCreates jest TRUE, sterownik może utworzyć więcej niż jeden zasób w tym samym czasie (współbieżnie) w różnych wątkach.
Jeśli DriverCommandLists jest TRUE, sterownik obsługuje listy poleceń. Oznacza to, że polecenia renderingu wydane przez ciągły kontekst mogą zachodzić równocześnie z tworzeniem obiektów w oddzielnych wątkach, co wiąże się z niskim ryzykiem przycięć w animacji.
Jeśli DriverConcurrentCreates jest FALSE, sterownik nie obsługuje współbieżnego tworzenia, co oznacza, że możliwości współbieżności są ekstremalnie ograniczone. Sprzęt graficzny nie może jednocześnie tworzyć obiektów różnych typów w różnych wątkach. Ponadto sprzęt graficzny nie może używać bezpośredniego kontekstu do wydawania poleceń renderowania, podczas gdy sprzęt graficzny próbuje utworzyć zasób w innym wątku.
Tematy pokrewne
-
Jak używać Direct3D 11