DXGI1_2_DDI_BASE_FUNCTIONS-Struktur (dxgiddi.h)
Enthält Zeiger auf Funktionen, die ein Windows Display Driver Model (WDDM) 1.2 und höher für Benutzermodusanzeigetreiber implementieren kann, um Aufgaben auf niedriger Ebene auszuführen, z. B. das Anzeigen gerenderter Frames für eine Ausgabe, das Steuern von Gamma, das Abrufen von Benachrichtigungen zu freigegebenen und interoperablen Oberflächen der 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;
Member
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-Runtime kann das Flags-Element der DXGI_DDI_ARG_BLT-Struktur festlegen, auf die der pBltData-Parameter verweist, sodass die Blt1DXGI-Funktion einen Bitblockübertragungsvorgang (Bitblockübertragung, Bitblt) ausführen muss, der Ressourcen mit mehreren Stichproben auflöst, eine Farbformatkonvertierung durchführt und eine Dehnung oder Verkleinerung auf einmal ausführt. Die Direct3D-Runtime legt den Flags-Member von DXGI_DDI_ARG_BLT1 jedoch nie auf 0 (d. h. keine Flags festgelegt) zusammen mit dem DXGI_DDI_MODE_ROTATION_IDENTITY Wert fest, der im Rotieren-Member von DXGI_DDI_ARG_BLT1 festgelegt ist (d. h. keine Drehung angeben), um einen kopiervorgang des geraden Speichers auszuführen. Stattdessen ruft die Direct3D-Runtime die ResourceCopy - oder ResourceCopyRegion(D3D11_1) -Funktion des Treibers auf, um einen direkten Speicherkopiervorgang auszuführen, es sei denn, beide Ressourcen sind mehrfach stichprobeniert.
Die Qualität der Dehnung oder Verkleinerung, die der Benutzermodusanzeigetreiber ausführt, muss genauso gut sein wie die Dehnung oder Verkleinerung, die ein bilinearer Filter ausführt.
Die Direct3D-Runtime ruft die Blt1DXGI-Funktion des Treibers selten auf. Das heißt, die Runtime sollte Blt1DXGI nicht mehr als ein- oder zweimal pro Frame aufrufen, da die Runtime Blt1DXGI in erster Linie zur Unterstützung einer Präsentation verwendet.
Wenn die Runtime Blt1DXGI für eine Präsentation aufruft, legt die Runtime das Bitfeldflag Present im Flags-Element von DXGI_DDI_ARG_BLT1 fest. Die Runtime legt das Bitfeldflag Present fest, um den Treiber darüber zu informieren, dass zusätzliche Anforderungen für die Bitblt bestehen und dass eine zusätzliche Synchronisierung erforderlich ist (beispielsweise muss die Runtime möglicherweise eine zusätzliche Synchronisierung in Computerkonfigurationen durchführen, die zwei Grafikkarten enthalten, die jeweils separate Teile der Anzeige verarbeiten). Wenn das Bitfeldflag Present festgelegt ist, sollte der Treiber einen Kopiervorgang aus den Backpuffern einer Anwendung auf die freigegebene Oberfläche des DWM ausführen. Da die Synchronisierung für diese Art von Kopiervorgang nicht genau ist, sollten zerreißende Artefakte die schlechteste Art von Artefakten sein, die ein Benutzer erlebt. Bei dieser Art von Kopiervorgang sollte der Treiber keinen Ansatz mit mehreren Durchgängen verwenden, indem er zuerst in die Zieloberfläche auflöst und dann die Ergebnisse an Ort und Stelle farbkonvertiert, da die möglichen Artefakte viel schlechter wären.
Wenn der Treiber das Zurückgeben von DXGI_DDI_ERR_UNSUPPORTED während der Erstellung einer primären Oberfläche unterstützt (d. a. zurückgeben DXGI_DDI_ERR_UNSUPPORTED von einem Aufruf der CreateResource(D3D10) -Funktion mit dem D3D10_DDI_BIND_PRESENT-Flag , das im BindFlags-Member von D3D10DDIARG_CREATERESOURCE festgelegt ist, zusammen mit dem pPrimaryDesc-Member von D3D10DDIARG_CREATERESOURCE auf ungleich NULL festgelegt) muss der Treiber auch die Drehung während eines Kopiervorgangs unterstützen. Wenn der Treiber nie DXGI_DDI_ERR_UNSUPPORTED von einem Aufruf seiner Funktion CreateResource(D3D10) oder CreateResource(D3D11) zurückgibt, übergibt die Runtime den wert DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180 oder DXGI_DDI_MODE_ROTATION_ROTATE270 Wert niemals an den Rotieren-Member von DXGI_DDI_ARG_BLT1. Daher ist in dieser Situation die Blt1DXGI-Funktion des Treibers nicht erforderlich, um die Drehung zu unterstützen.
Die Runtime legt einen Wert im Rotieren-Element von DXGI_DDI_ARG_BLT1 fest, um die Anzahl der Grad anzugeben, die den Inhalt der Quelle gegen den Uhrzeigersinn gedreht werden sollen, bevor der Treiber den Inhalt an das Ziel kopiert. Die Drehung wird in Schritten von 90 Grad angegeben.
Hinweis
Wenn die Blt1DXGI-Funktion des Treibers sRGB-formatierten Inhalt von einer Quelloberfläche auf eine Nicht-sRGB-Zieloberfläche kopiert, sollte der Treiber den sRGB-Inhalt unverändert kopieren (das heißt, der Treiber sollte die sRGB-Konvertierung nicht in linear ausführen).
Quelleinschränkungen
Die Blt1DXGI-Funktion verwendet immer eine ganze Quellunterquelle (im Gegensatz zu einem teilrechteckigen Bereich), 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 Benutzermodusanzeigetreibers erstellt wird. Wenn die Runtime das Bitfeld Auflösen im Flags-Member von DXGI_DDI_ARG_BLT1 festlegt, handelt es sich bei der Quelle um eine Ressource mit mehreren Stichproben. Die Quellressource ist auf eine Ressource beschränkt, in der das D3D10_DDI_BIND_PRESENT-Flag im BindFlags-Member von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCE festgelegt wurde. Das Format der Quelle (angegeben im Format-Element von D3D10DDIARG_CREATERESOURCE oder D3D11DDIARG_CREATERESOURCE) ist auf Anzeigemodusformate beschränkt, die durch die folgenden Werte aus der DXGI_FORMAT-Enumeration 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
Hinweis
Wenn der Treiber das Quellformat DXGI_FORMAT_B8G8R8A8_UNORM unterstützt, gelten die folgenden Einschränkungen:
- Wenn der Treiber einen Bitblt-Vorgang von einem Gleitkommaformat zu einem ganzzahligen Format wie BGRA8888 ausführt, muss er implizit Gamma in die Ergebnisse codieren.
- Wenn der Treiber hingegen einen Bitblt-Vorgang von einem Ganzzahlformat in ein Gleitkommaformat ausfü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_CREATERESOURCE festgelegt ist).
Erstellen eines Stereobackpuffers
Wenn der Treiber ab Windows 8 einen Stereobackpuffer erstellen muss, sollte er Elemente der D3D10DDIARG_CREATERESOURCE- bzw. D3D11DDIARG_CREATERESOURCE-Struktur festlegen, auf die der pCreateResource-Parameter der Funktionen CreateResource(D3D10) oder CreateResource(D3D11) wie folgt verweist:
- Legen Sie den ArraySize-Member auf den Wert 2 fest.
- Legen Sie den D3D10_DDI_BIND_PRESENT-Flagwert im BindFlags-Element fest.
Zur Unterstützung der Stereodarstellung muss die BltDXGI-Funktion außerdem alle Werte für die DstSubresource - und SrcSubresource-Member der DXGI_DDI_ARG_BLT-Struktur zulassen, die sich im Bereich 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-Runtime aufgerufen, um Videospeicherressourcen zurückzugeben, die der Benutzermodusanzeigetreiber zuvor zur Wiederverwendung angeboten hat. Wird von WDDM 1.2 und höher für Benutzermodusanzeigetreiber implementiert.
pfnGetMultiplaneOverlayCaps
Wird von der DXGI-Runtime (Microsoft DirectX Graphics Infrastructure) aufgerufen, um anzufordern, dass der Benutzermodusanzeigetreiber grundlegende Funktionen der Überlagerungsebene 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 Funktionen der Überlagerungsebene angibt.
pfnGetMultiplaneOverlayCaps gibt einen der folgenden Werte zurück:
- S_OK: Der Treiber hat die Funktionen der Überlagerungsebene erfolgreich bereitgestellt.
- D3DDDIERR_DEVICEREMOVED: Der Treiber hat erkannt, dass der Grafikkarte entfernt wurde, sodass der Treiber den Vorgang nicht abgeschlossen hat. Wenn der Treiber die Entfernung des Adapters nicht kennt, muss der Treiber diesen Fehlercode nicht zurückgeben.
pfnGetMultiplaneOverlayFilterRange
Dieser Member ist reserviert und sollte auf null festgelegt werden. Wird ab Windows 8.1 unterstützt.
pfnCheckMultiplaneOverlaySupport
Wird von der DXGI-Runtime (Microsoft DirectX Graphics Infrastructure) aufgerufen, um die Details zur Hardwareunterstützung für Mehrplanerü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 auf der Zieloberfläche angezeigt wird.
Wenn pfnCheckMultiplaneOverlaySupport erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
pfnPresentMultiplaneOverlay
Ein Zeiger auf die funktion pfnPresentMultiplaneOverlay (DXGI) des Treibers. Wird ab Windows 8.1 unterstützt.
pSupport
Ein Zeiger auf eine DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT-Struktur , die beschreibt, wie auf der Zieloberfläche angezeigt wird.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8, WDDM 1.2 |
Unterstützte Mindestversion (Server) | Windows Server 2012 |
Kopfzeile | dxgiddi.h (include D3d10umddi.h) |