Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed jego wydaniem komercyjnym. Firma Microsoft nie udziela żadnych gwarancji, wyraźnych ani domniemanych, w odniesieniu do podanych tutaj informacji.
W tym artykule opisano zmiany wprowadzone w programie IddCx 1.11. Na systemie Windows 10 w wersji 1803 lub nowszej można uruchomić pojedynczy plik wykonywalny sterownika pośredniego wyświetlania (IDD) zbudowany w oparciu o IddCx 1.11, wykorzystując weryfikacje w czasie wykonywania, aby sprawdzić, czy zmiany DDI w IddCx 1.11 są dostępne w tym systemie. Aby uzyskać więcej informacji, zobacz Tworzenie sterownika WDF dla wielu wersji systemu Windows.
Zmiany IddCx 1.11 należą do następujących kategorii:
- Zaktualizuj wersję IddCxGetVersion (console i remote). Aby uzyskać pełną listę informacji o wersji dotyczącej IddCx, zobacz Wersje IddCx.
- Dodawanie możliwości wykonywania zapytań dotyczących obsługi funkcji systemu operacyjnego.
- Dodano obsługę korzystania z interfejsu API D3D12.
- Dodaj nowy, atomowy odczyt/zapis I2C DDI.
- Dodano obsługę tylko deskryptorów DisplayID.
- Dodaj obsługę aktualizacji licznika ponownego kodowania pulpitu statycznego.
Aktualizacja wersji IddCxGetVersion
Wartość zwracana przez IddCxGetVersion została zaktualizowana, aby wynosiła 0x1B00.
Obsługa funkcji systemu operacyjnego zapytań
Sterowniki mają teraz możliwość określenia, czy określona funkcja IddCx 1.11 jest dostępna w podstawowym systemie operacyjnym, wywołując IddCxCheckOsFeatureSupport. Wiele wersji systemu operacyjnego może zgłaszać obsługę IddCx 1.11 za pomocą IddCxGetVersion, ale prawdopodobnie dostępne będą tylko niektóre funkcje.
Ważna
IddCxCheckOsFeatureSupport MUST zostać wywołana przed utworzeniem jakichkolwiek adapterów, to znaczy przed jakimikolwiek wywołaniami funkcji IddCxAdapterInitAsync.
Obsługa D3D12
Sterowniki IddCx 1.11, które obsługują D3D12, mogą skojarzyć obiekt ID3D12Device z elementem swapchain i odbierać obiekty ID3D12Resource przy użyciu wywołań do iddCxSwapChainReleaseAndAcquireBuffer2. Omówienie powiązanych zmian znajduje się w poniższych sekcjach.
Kojarzenie urządzenia D3D12 z łańcuchem wymiany
Jeśli sterownik chce otrzymać ramki D3D12, należy podać obiekt ID3D12Device w wywołaniu iddCxSwapChainSetDevice2.
Odbieranie ramek D3D12
Po tym jak sterownik wywoła IddCxSwapChainSetDevice2 i dostarczy obiekt ID3D12Device, IDARG_OUT_RELEASEANDACQUIREBUFFER2 przekazany do wywołań IddCxSwapChainReleaseAndAcquireBuffer2 będzie miał ustawioną flagę IDDCX_METADATA2_VALID_FLAGS_D3D12SURFACE, a następnie sterownik powinien używać IDARG_OUT_RELEASEANDACQUIREBUFFER2.MetaData.pD3d12Surface w celu uzyskania dostępu do danych pikselowych.
Synchronizowanie dostępu do powierzchni D3D12
Znaczącą zmianą, gdy sterownik używa D3D12, jest model synchronizacji, który kontroluje dostęp do powierzchni łańcucha wymiany, aby uniknąć problemów, takich jak blokady i uzyskiwanie dostępu do nieaktualnych danych pikseli. Ze względu na bardziej szczegółową kontrolę oferowaną przez D3D12, sterowniki muszą jawnie poinformować system operacyjny, która kolejka poleceń będzie korzystać z powierzchni jako danych wejściowych.
Więcej szczegółów na temat obowiązków kierowcy w odniesieniu do synchronizacji podano w uwagach do dodatku IDDCX_METADATA2.
Obsługa atomowych operacji I2C
Sterownik 1.11 obsługujący protokół I2C, zapewniając EVT_IDD_CX_MONITOR_I2C_RECEIVE i EVT_IDD_CX_MONITOR_I2C_TRANSMIT identyfikatory DDI, również musi zapewnić EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE. Nowe DDI wykonuje operację I2C w jednym wywołaniu, aby pomóc sterownikom w unikaniu przeplatania się ich własnych operacji I2C z wywołaniami systemu operacyjnego.
Uwaga / Notatka
Sterowniki, które zapewniają nowy identyfikator DDI, nie powinny zakładać, że istniejące identyfikatory DDI nie będą już używane.
Obsługa deskryptora identyfikatora displayID tylko
Dodano nowy typ deskryptora IDDCX_MONITOR_DESCRIPTION_TYPE_DISPLAYID do wyliczenia IDDCX_MONITOR_DESCRIPTION_TYPE używanego w argumentach przekazanych do klasy IddCxMonitorCreate i IddCxMonitorCreate2. Należy go użyć, gdy podany deskryptor zawiera tylko deskryptor DisplayID i nie ma żadnych bloków identyfikatora EDID.
Aktualizowanie liczby przekodowań pulpitu statycznego
Obecnie liczba ponownych transkodowań statycznego desktopu jest określana przy tworzeniu adaptera. Nowa funkcja DDI pozwala teraz na aktualizację tej wartości w łańcuchu buforów po utworzeniu adaptera.
Obsługa poziomu 1,11 sterownika w dół
Jeśli sterownik 1.11 ma być uruchamiany w starszych wersjach systemu Windows, należy wykonać kroki, aby zapewnić zgodność.
- Sterownik musi ustawić rozmiar struktury IDD_CX_CLIENT_CONFIG przy użyciu makra IDD_CX_CLIENT_CONFIG_INIT .
- Sterownik nie może ustawić żadnych nowych flag dodanych do IDDCX_ADAPTER_FLAGS.
- Sterownik nie może wypróbować ani wywołać żadnych nowych funkcji udostępnianych przez system operacyjny, ponieważ nie są dostępne. IDD_IS_FUNCTION_AVAILABLE można użyć do sprawdzenia.
- Nie można eksportować żadnych nowych funkcji. Sterowniki mogą używać makra IDD_IS_FIELD_AVAILABLE, aby sprawdzić, czy funkcja zwrotna EvtIddXxx powinna zostać zapisana w strukturze IDD_CX_CLIENT_CONFIG.
- Nawet jeśli system operacyjny zwraca 0x1B00 z wywołania iddCxGetVersion, sterownik musi wysłać zapytanie o określoną obsługę funkcji przez wywołanie iddCxCheckOsFeatureSupport.
W poniższym przykładzie pokazano, jak można użyć IDD_IS_FIELD_AVAILABLE :
if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxMonitorI2CTransmitAndReceive))
{
IddCxClientConfig.EvtIddCxMonitorI2CTransmitAndReceive = MonitorI2CTransmitAndReceive;
}
Aby uzyskać więcej informacji, zobacz Building IddCx 1.4 drivers (Tworzenie sterowników IddCx 1.4).
Które funkcje są używane
| Funkcja IddCx 1.11 | Nowe wywołania systemu operacyjnego dla adapterów 1.11 | Poprzedni odpowiednik |
|---|---|---|
| Niepodzielna I2C | EVT_IDD_CX_MONITOR_I2C_TRANSMIT_AND_RECEIVE | EVT_IDD_CX_MONITOR_I2C_TRANSMIT i EVT_IDD_CX_MONITOR_I2C_RECEIVE |
| Funkcja IddCx 1.11 | Nowe funkcje, które sterownik musi wywołać | Poprzedni odpowiednik |
|---|---|---|
| D3D12 | IddCxSwapChainSetDevice2 | IddCxSwapChainSetDevice |
| Aktualizowanie liczby przekodowań | IddCxSwapChainUpdateStaticDesktopReencodeFrameCount | N/A |
Poprzednie wersje
Aby uzyskać informacje o zmianach we wcześniejszych wersjach iddCx, zobacz następujące artykuły: