DXGI1_2_DDI_BASE_FUNCTIONS struttura (dxgiddi.h)

Contiene puntatori a funzioni che un driver visualizzato windows (WDDM) 1.2 e versioni successive può implementare driver di visualizzazione in modalità utente per eseguire attività di basso livello, ad esempio la presentazione di fotogrammi di rendering a un output, il controllo di gamma, l'acquisizione di notifiche relative alle superfici interoperabili condivisi e windows Graphics Device Interface (GDI) e la gestione di una transizione a schermo intero.

Sintassi

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;

Members

pfnPresent

Puntatore alla funzione PresentDXGI del driver.

pfnGetGammaCaps

Puntatore alla funzione GetGammaCapsDXGI del driver.

pfnSetDisplayMode

Puntatore alla funzione SetDisplayModeDXGI del driver.

pfnSetResourcePriority

Puntatore alla funzione SetResourcePriorityDXGI del driver.

pfnQueryResourceResidency

Puntatore alla funzione QueryResourceResourceResidencyDXGI del driver.

pfnRotateResourceIdentities

Puntatore alla funzione RotateResourceIdentitiesDXGI del driver.

pfnBlt

Puntatore alla funzione BltDXGI del driver.

Il runtime Direct3D potrebbe impostare il membro Flags della struttura DXGI_DDI_ARG_BLT a cui punta il parametro pBltData in modo da richiedere alla funzione Blt1DXGI di eseguire un'operazione di trasferimento a blocchi bit (bitblt) che risolve le risorse multi sampled, esegue la conversione in formato colore ed esegue una conversione in formato colore ed esegue un'estensione o una compattazione contemporaneamente. Tuttavia, il runtime Direct3D non imposta mai il membro Flag diDXGI_DDI_ARG_BLT1 su zero (ovvero nessun flag impostato) insieme al valore DXGI_DDI_MODE_ROTATION_IDENTITY impostato nel membro Ruota di DXGI_DDI_ARG_BLT1 (ovvero per indicare nessuna rotazione) per eseguire un'operazione di copia della memoria diretta. A meno che entrambe le risorse non siano invece multi sampled, il runtime Direct3D chiama la funzione ResourceCopy o ResourceCopyRegion(D3D11_1) del driver per eseguire un'operazione di copia della memoria diretta.

La qualità dell'estensione o della compattazione eseguita dal driver di visualizzazione in modalità utente deve essere ottimale come l'estensione o la compattazione eseguita da un filtro bilineare.

Il runtime Direct3D chiamerà raramente la funzione Blt1DXGI del driver. Ovvero, il runtime deve chiamare Blt1DXGI non più di una o due volte per frame perché il runtime usa principalmente Blt1DXGI per supportare una presentazione.

Quando il runtime chiama Blt1DXGI per una presentazione, il runtime imposta il flag Del campo a bit presente nel membro Flag di DXGI_DDI_ARG_BLT1. Il runtime imposta il flag Di campo a bit presente per informare il driver che esistono requisiti aggiuntivi per il bitblt e che potrebbe essere necessaria una sincronizzazione aggiuntiva(ad esempio, il runtime potrebbe dover eseguire una sincronizzazione aggiuntiva nelle configurazioni del computer che contengono due schede grafiche che ogni handle parti separate della visualizzazione). Quando viene impostato il flag di campo a bit Presente , il driver deve eseguire un'operazione di copia dai buffer indietro di un'applicazione alla superficie condivisa di DWM. Poiché la sincronizzazione per questo tipo di operazione di copia è inesattiva, gli artefatti di strappo devono essere il tipo peggiore di artefatti che un utente sperimenta. Per questo tipo di operazione di copia, il driver non deve usare un approccio multi-pass risolvendo prima nell'area di destinazione e quindi convertendo i risultati sul posto perché gli artefatti possibili sarebbero molto peggiori.

Se il driver supporta la restituzione di DXGI_DDI_ERR_UNSUPPORTED durante la creazione di una superficie primaria ,ovvero la restituzione di DXGI_DDI_ERR_UNSUPPORTED da una chiamata alla funzione CreateResource(D3D10) con il flag D3D10_DDI_BIND_PRESENT impostato nel membro BindFlags di D3D10DDIARG_CREATERESOURCE insieme al membro pPrimaryDescdiD3D10DDIARG_CREATERESOURCE impostato su non NULL), il driver deve supportare anche la rotazione durante un'operazione di copia. Se il driver non restituisce mai DXGI_DDI_ERR_UNSUPPORTED da una chiamata alla relativa funzione CreateResource(D3D10) o CreateResource(D3D11), il runtime non passerà mai il DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180 o DXGI_DDI_MODE_ROTATION_ROTATE270 valore al membro Ruota di DXGI_DDI_ARG_BLT1. Pertanto, in questa situazione, la funzione Blt1DXGI del driver non è necessaria per supportare la rotazione.

Il runtime imposta un valore nel membro Ruota di DXGI_DDI_ARG_BLT1 per indicare il numero di gradi per ruotare in senso antiorario il contenuto dell'origine prima che il driver copia il contenuto nella destinazione. La rotazione viene specificata in incrementi di 90 gradi.

Nota

Quando la funzione Blt1DXGI del driver copia il contenuto con formattazione sRGB da una superficie di origine a una superficie di destinazione non sRGB, il driver deve copiare il contenuto sRGB invariato, ovvero il driver non deve eseguire la conversione lineare sRGB.

Restrizioni di origine

La funzione Blt1DXGI usa sempre un'intera sottoresource di origine (rispetto a un'area sotto rettangolare) per eseguire l'operazione bitblt. Inoltre, l'origine è una rappresentazione D3D10DDIRESOURCE_TEXTURE2D (specificata nel membro ResourceDimension di D3D10DDIARG_CREATERESOURCEo D3D11DDIARG_CREATERESOURCE quando l'origine viene creata in una chiamata al driver di visualizzazione in modalità utente CreateResource(D3D10) o CreateResource(D3D11) rispettivamente. Quando il runtime imposta il campo di bit Resolve nel membro Flags di DXGI_DDI_ARG_BLT1, l'origine è una risorsa a più esempi. La risorsa di origine è limitata a una risorsa in cui è stato impostato il flag di D3D10_DDI_BIND_PRESENT nel membro BindFlags di D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE. Il formato dell'origine (specificato nel membro Format di D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE) è limitato ai formati di modalità di visualizzazione, specificati dai valori seguenti dell'enumerazione DXGI_FORMAT:

  • DXGI_FORMAT_B5G6R5_UNORM
  • DXGI_FORMAT_B5G5R5A1_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM (Vedere nota di seguito).
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

Nota

Se il driver supporta il formato di origine DXGI_FORMAT_B8G8R8A8_UNORM, si applicano le restrizioni seguenti:

  • Quando il driver esegue un'operazione bitblt da un formato a virgola mobile a un formato intero, ad esempio BGRA8888, deve codificare implicitamente gamma nei risultati.
  • Al contrario, quando il driver esegue un'operazione bitblt da un formato intero a un formato a virgola mobile, deve rimuovere implicitamente la codifica gamma dai risultati.

Restrizioni di destinazione

La destinazione è anche una rappresentazione D3D10DDIRESOURCE_TEXTURE2D . Il formato della destinazione è limitato anche ai formati di modalità di visualizzazione. La risorsa di destinazione è limitata a una risorsa associata come destinazione di rendering (D3D10_DDI_BIND_RENDER_TARGET impostata nel membro BindFlags di D3D10DDIARG_CREATERESOURCE o D3D11DDIARG_CREATERESOURCE).

Creazione di un buffer back stereo

A partire da Windows 8, se il driver deve creare un buffer back stereo, deve impostare i membri della D3D10DDIARG_CREATERESOURCE o della struttura di D3D11DDIARG_CREATERESOURCE, rispettivamente, puntando al parametro pCreateResource del parametro CreateResource(D3D10) o CreateResource(D3D11), come indicato di seguito:

  1. Impostare il membro ArraySize su un valore pari a 2.
  2. Impostare il valore del flag D3D10_DDI_BIND_PRESENT nel membro BindFlags .

Inoltre, per supportare la presentazione stereo, la funzione BltDXGI deve consentire tutti i valori per i membri DstSubresource e SrcSubresource della struttura DXGI_DDI_ARG_BLT all'interno dell'intervallo delle risorse di origine e di destinazione.

pfnResolveSharedResource

Puntatore alla funzione ResolveSharedResourceDXGI del driver.

pfnBlt1

Puntatore alla funzione Blt1DXGI del driver.

pfnOfferResources

Puntatore alla funzione pfnOfferResources del driver.

pfnReclaimResources

Chiamato dal runtime DXGI per recuperare le risorse di memoria video offerte in precedenza dal driver di visualizzazione in modalità utente per il riutilizzo. Implementato da WDDM 1.2 e versioni successive dei driver di visualizzazione in modalità utente.

pfnGetMultiplaneOverlayCaps

Chiamato dal runtime di Microsoft DirectX Graphics Infrastructure (DXGI) per richiedere che il driver di visualizzazione in modalità utente ottenga le funzionalità di base del piano di sovrapposizione. Facoltativamente implementato da Windows Display Driver Model (WDDM) 1.3 e versioni successive i driver di visualizzazione in modalità utente. La sintassi di pfnGetMultiplaneOverlayCaps segue:

pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;

HRESULT __stdcall* GetMultiPlaneOverlayCaps(
    DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *pCaps
)
{ ... }

Il parametro pCaps è un puntatore a una struttura DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS che specifica le funzionalità del piano di sovrapposizione.

pfnGetMultiplaneOverlayCaps restituisce uno dei valori seguenti:

  • S_OK: il driver ha fornito correttamente le funzionalità del piano di sovrapposizione.
  • D3DDDIERR_DEVICEREMOVED: il driver ha rilevato che la scheda di visualizzazione è stata rimossa, quindi il driver non ha completato l'operazione. Se il driver non è a conoscenza della rimozione dell'adattatore, il driver non è necessario per restituire il codice di errore.

pfnGetMultiplaneOverlayFilterRange

Questo membro è riservato e deve essere impostato su zero. Supportato a partire da Windows 8.1.

pfnCheckMultiplaneOverlaySupport

Chiamato dal runtime di Microsoft DirectX Graphics Infrastructure (DXGI) per verificare i dettagli sul supporto hardware per le sovrapposizioni multipiattaforma. La sintassi di pfnCheckMultiplaneOverlaySupport è:

PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;

HRESULT __stdcall* pfnCheckMultiplaneOverlaySupport(
   D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT *pSupport
)
{ ... }

Il parametro pSupport è un puntatore a una struttura DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT che descrive come visualizzare l'area di destinazione.

Se pfnCheckMultiplaneOverlaySupport riesce, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

pfnPresentMultiplaneOverlay

Puntatore alla funzione pfnPresentMultiplaneOverlay (DXGI) del driver. Supportato a partire da Windows 8.1.

pSupport

Puntatore a una struttura DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT che descrive come visualizzare l'area di destinazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 8, WDDM 1.2
Server minimo supportato Windows Server 2012
Intestazione dxgiddi.h (include D3d10umddi.h)

Vedi anche

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_3_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS