DXGI1_2_DDI_BASE_FUNCTIONS Struktur (dxgiddi.h)
Enthält Zeiger auf Funktionen, die ein Windows Display Driver Model (WDDM) 1.2 und höherer Benutzermodusanzeigetreiber implementieren kann, um Aufgaben auf niedriger Ebene auszuführen, z. B. das Darstellen von gerenderten Frames auf einer Ausgabe, das Steuern von Gamma, das Abrufen von Benachrichtigungen zu gemeinsam genutzten und GDI-kompatiblen Oberflächen (Windows Graphics Device Interface, GDI) und das Verwalten eines Vollbildübergangs.
Syntax
typedef struct DXGI1_2_DDI_BASE_FUNCTIONS {
HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
HRESULT()(void *) * pfnGetMultiplaneOverlayFilterRange;
HRESULT()(DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT *) * pfnCheckMultiplaneOverlaySupport;
HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
} DXGI1_2_DDI_BASE_FUNCTIONS;
Angehörige
pfnPresent
Ein Zeiger auf die PresentDXGI--Funktion des Treibers.
pfnGetGammaCaps
Ein Zeiger auf die GetGammaCapsDXGI--Funktion des Treibers.
pfnSetDisplayMode
Ein Zeiger auf die SetDisplayModeDXGI--Funktion des Treibers.
pfnSetResourcePriority
Ein Zeiger auf die SetResourcePriorityDXGI-Funktion des Treibers.
pfnQueryResourceResidency
Ein Zeiger auf die QueryResourceResidencyDXGI-Funktion des Treibers.
pfnRotateResourceIdentities
Ein Zeiger auf die RotateResourceIdentitiesDXGI-Funktion des Treibers.
pfnBlt
Ein Zeiger auf die BltDXGI--Funktion des Treibers.
Die Direct3D-Laufzeit legt möglicherweise das Flags-Element Member der DXGI_DDI_ARG_BLT Struktur fest, auf das der pBltData Parameter verweist, sodass die Blt1DXGI--Funktion zum Ausführen einer Bitblockübertragung (Bitblt) Operation zum Auflösen von Ressourcen mit mehreren Beispielen erforderlich ist. führt eine Farbformatkonvertierung durch und führt eine Zieh- oder Verkleinerung auf einmal aus. Die Direct3D-Laufzeit legt jedoch niemals die Flags Member von DXGI_DDI_ARG_BLT1 auf Null fest (d. h. keine Flags festgelegt) zusammen mit dem DXGI_DDI_MODE_ROTATION_IDENTITY im Rotate Member von DXGI_DDI_ARG_BLT1 festgelegten Wert (d. h. keine Drehung), um einen geraden Speicherkopievorgang auszuführen. Wenn nicht beide Ressourcen mit mehreren Beispielen verwendet werden, ruft die Direct3D-Laufzeit die ResourceCopy- des Treibers oder ResourceCopyRegion(D3D11_1)-Funktion auf, um einen geraden Speicherkopievorgang auszuführen.
Die Qualität des Dehnens oder Verkleinerns, den der Anzeigetreiber im Benutzermodus ausführt, muss so gut sein wie das Strecken oder Verkleinern, das ein bilinearer Filter ausführt.
Die Direct3D-Laufzeit ruft die Blt1DXGI- funktion des Treibers selten auf. Das heißt, die Laufzeit sollte Blt1DXGI nicht mehr als einmal oder zweimal pro Frame aufrufen, da die Laufzeit Blt1DXGI hauptsächlich zur Unterstützung einer Präsentation verwendet.
Wenn die Laufzeit Blt1DXGI- für eine Präsentation aufruft, legt die Laufzeit das Bitfeld-Flag "Präsentieren Bitfeld" im Flags Member von DXGI_DDI_ARG_BLT1fest. Die Laufzeit legt die Present Bitfeld-Flag fest, um den Treiber darüber zu informieren, dass zusätzliche Anforderungen für die Bitblt bestehen und dass eine zusätzliche Synchronisierung erforderlich sein kann (z. B. muss die Laufzeit möglicherweise zusätzliche Synchronisierung in Computerkonfigurationen durchführen, die zwei Grafikkarten enthalten, die jeweils separate Teile des Displays verarbeiten). Wenn die "Präsentieren Bitfeldflagge" festgelegt ist, sollte der Treiber einen Kopiervorgang aus den Hintergrundpuffern einer Anwendung auf die freigegebene Oberfläche des DWM ausführen. Da die Synchronisierung für diesen Kopiervorgangstyp ungenau ist, sollten zerreißende Artefakte die schlechteste Art von Artefakten sein, die ein Benutzer erlebt. Für diese Art des Kopiervorgangs sollte der Treiber keinen Multidurchlaufansatz verwenden, indem er zuerst in die Zieloberfläche aufgelöst wird und dann die Ergebnisse an Ort und Stelle konvertiert, da die möglichen Artefakte viel schlimmer wären.
Wenn der Treiber die Rückgabe von DXGI_DDI_ERR_UNSUPPORTED während der Erstellung einer primären Oberfläche unterstützt (d. h., DXGI_DDI_ERR_UNSUPPORTED von einem Aufruf an die CreateResource(D3D10)- funktion zurückzugeben, wobei die D3D10_DDI_BIND_PRESENT Flag im BindFlags-Element Member von D3D10DDIARG_CREATERESOURCE zusammen mit dem pPrimaryDesc Mitglied des D3D10DDIARG_CREATERESOURCE festlegen in nicht NULL) muss der Treiber auch die Drehung während eines Kopiervorgangs unterstützen. Wenn der Treiber nie DXGI_DDI_ERR_UNSUPPORTED von einem Aufruf an die CreateResource(D3D10) oder CreateResource(D3D11)- funktion zurückgibt, übergibt die Laufzeit niemals den DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180oder DXGI_DDI_MODE_ROTATION_ROTATE270 Wert an das Rotate Member von DXGI_DDI_ARG_BLT1. Daher ist in dieser Situation die Blt1DXGI Funktion des Fahrers nicht erforderlich, um die Drehung zu unterstützen.
Die Laufzeit legt einen Wert im Rotate Member von DXGI_DDI_ARG_BLT1 fest, um die Anzahl von Grad anzugeben, um den Inhalt der Quelle gegen den Uhrzeigersinn zu drehen, bevor der Treiber den Inhalt an das Ziel kopiert. Drehung wird in Schritten von 90 Grad angegeben.
Anmerkung
Wenn die Blt1DXGI--Funktion des Treibers sRGB-formatierten Inhalt von einer Quelloberfläche auf eine Zieloberfläche ohne sRGB kopiert, sollte der Treiber den sRGB-Inhalt unverändert kopieren (d. h. der Treiber sollte den sRGB nicht in lineare Konvertierung ausführen).
Quelleinschränkungen
Die Blt1DXGI--Funktion verwendet immer eine gesamte Quellunterressource (im Vergleich zu einigen teilrechteckigen Bereichen), um den Bitblt-Vorgang auszuführen. Darüber hinaus ist die Quelle eine D3D10DDIRESOURCE_TEXTURE2D Darstellung (angegeben im ResourceDimension Member von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCE, wenn die Quelle in einem Aufruf der CreateResource(D3D10) oder CreateResource(D3D11) Funktion des Benutzermodus erstellt wird, bzw. Wenn die Laufzeit das bitfeld Resolve im Flags Member von DXGI_DDI_ARG_BLT1festlegt, ist die Quelle eine ressource mit mehreren Beispielen. Die Quellressource ist auf eine Ressource beschränkt, in der das D3D10_DDI_BIND_PRESENT Flag im BindFlags Member von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCEfestgelegt wurde. Das Format der Quelle (im Format Element von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCEangegeben) ist auf Anzeigemodusformate beschränkt, die durch die folgenden Werte aus der DXGI_FORMAT-Aufzählung angegeben werden:
- DXGI_FORMAT_B5G6R5_UNORM
- DXGI_FORMAT_B5G5R5A1_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM (Siehe Hinweis unten.)
- DXGI_FORMAT_B8G8R8X8_UNORM
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
Anmerkung
Wenn der Treiber das Quellformat DXGI_FORMAT_B8G8R8A8_UNORMunterstützt, gelten die folgenden Einschränkungen:
- Wenn der Treiber einen Bitbltvorgang von einem Gleitkommaformat bis zu einem ganzzahligen Format wie BGRA8888 durchführt, muss er Gamma implizit in die Ergebnisse codieren.
- Wenn der Treiber dagegen einen Bitblt-Vorgang von einem ganzzahligen Format in ein Gleitkommaformat durchführt, muss er implizit die Gammacodierung aus den Ergebnissen entfernen.
Zieleinschränkungen
Das Ziel ist auch eine D3D10DDIRESOURCE_TEXTURE2D Darstellung. Das Format des Ziels ist auch auf Anzeigemodusformate beschränkt. Die Zielressource ist auf eine Ressource beschränkt, die als Renderziel gebunden ist (D3D10_DDI_BIND_RENDER_TARGET im BindFlags Member von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCEfestgelegt).
Erstellen eines Stereo-Hintergrundpuffers
Ab Windows 8 sollte der Treiber, wenn der Treiber einen Stereobackpuffer erstellen muss, Elemente der D3D10DDIARG_CREATERESOURCE- oder D3D11DDIARG_CREATERESOURCE-Struktur festlegen, auf die der pCreateResource Parameter des CreateResource(D3D10) oder CreateResource(D3D11) Funktionen verweist, folgendermaßen:
- Legen Sie den ArraySize Member auf einen Wert von 2 fest.
- Legen Sie den D3D10_DDI_BIND_PRESENT Flagwert im BindFlags Member fest.
Um die Stereopräsentation zu unterstützen, muss die BltDXGI-Funktion alle Werte für die DstSubresource und SrcSubresource Member der DXGI_DDI_ARG_BLT-Struktur zulassen, die sich innerhalb des Bereichs der Quell- und Zielressourcen befinden.
pfnResolveSharedResource
Ein Zeiger auf die ResolveSharedResourceDXGI--Funktion des Treibers.
pfnBlt1
Ein Zeiger auf die Blt1DXGI-Funktion des Treibers.
pfnOfferResources
Ein Zeiger auf die pfnOfferResources-Funktion des Treibers.
pfnReclaimResources
Wird von der DXGI-Laufzeit aufgerufen, um Videospeicherressourcen zurückzugeben, die der Benutzermodusanzeigetreiber zuvor für die Wiederverwendung angeboten hat. Von WDDM 1.2 und höher implementierte Anzeigetreiber für den Benutzermodus.
pfnGetMultiplaneOverlayCaps
Wird von der Microsoft DirectX Graphics Infrastructure (DXGI)-Laufzeit aufgerufen, um anzufordern, dass der Anzeigetreiber für den Benutzermodus grundlegende Überlagerungsebenenfunktionen erhält. Optional implementiert durch Windows Display Driver Model (WDDM) 1.3 und höher Benutzermodusanzeigetreiber. Die Syntax von pfnGetMultiplaneOverlayCaps folgt:
pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;
HRESULT __stdcall* GetMultiPlaneOverlayCaps(
DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *pCaps
)
{ ... }
Der pCaps-Parameter ist ein Zeiger auf eine DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS Struktur, die die Überlagerungsebenenfunktionen angibt.
pfnGetMultiplaneOverlayCaps gibt einen der folgenden Werte zurück:
- S_OK: Der Treiber hat die Überlagerungsebenenfunktionen erfolgreich bereitgestellt.
- D3DDDIERR_DEVICEREMOVED: Der Treiber hat festgestellt, dass der Grafikkarte entfernt wurde, sodass der Treiber den Vorgang nicht abgeschlossen hat. Wenn der Treiber das Entfernen des Adapters nicht kennt, ist der Treiber nicht erforderlich, um diesen Fehlercode zurückzugeben.
pfnGetMultiplaneOverlayFilterRange
Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8.1 unterstützt.
pfnCheckMultiplaneOverlaySupport
Wird von der Microsoft DirectX Graphics Infrastructure (DXGI)-Laufzeit aufgerufen, um die Details zur Hardwareunterstützung für Mehrplanüberlagerungen zu überprüfen. Die Syntax von pfnCheckMultiplaneOverlaySupport lautet:
PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;
HRESULT __stdcall* pfnCheckMultiplaneOverlaySupport(
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT *pSupport
)
{ ... }
Der pSupport-Parameter ist ein Zeiger auf eine DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT Struktur, die beschreibt, wie die Zieloberfläche angezeigt wird.
Wenn pfnCheckMultiplaneOverlaySupport erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT- Fehlercode zurückgegeben.
pfnPresentMultiplaneOverlay
Ein Zeiger auf die pfnPresentMultiplaneOverlay (DXGI)-Funktion des Treibers. Wird ab Windows 8.1 unterstützt.
pSupport
Ein Zeiger auf eine DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT Struktur, die beschreibt, wie die Zieloberfläche angezeigt wird.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8, WDDM 1.2 |
mindestens unterstützte Server- | Windows Server 2012 |
Header- | dxgiddi.h (include D3d10umddi.h) |