estrutura DXGI1_2_DDI_BASE_FUNCTIONS (dxgiddi.h)

Contém ponteiros para funções que um driver de exibição WDDM (Modelo de Driver de Vídeo do Windows) 1.2 e posterior pode implementar para executar tarefas de baixo nível, como apresentar quadros renderizados em uma saída, controlar gama, receber notificações sobre superfícies interoperáveis compartilhadas e da GDI (Interface de Dispositivo Gráfico do Windows) e gerenciar uma transição em tela inteira.

Sintaxe

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;

Membros

pfnPresent

Um ponteiro para a função PresentDXGI do driver.

pfnGetGammaCaps

Um ponteiro para a função GetGammaCapsDXGI do driver.

pfnSetDisplayMode

Um ponteiro para a função SetDisplayModeDXGI do driver.

pfnSetResourcePriority

Um ponteiro para a função SetResourcePriorityDXGI do driver.

pfnQueryResourceResidency

Um ponteiro para a função QueryResourceResidencyDXGI do driver.

pfnRotateResourceIdentities

Um ponteiro para a função RotateResourceIdentitiesDXGI do driver.

pfnBlt

Um ponteiro para a função BltDXGI do driver.

O runtime do Direct3D pode definir o membro Flags da estrutura DXGI_DDI_ARG_BLT para a qual o parâmetro pBltData aponta de forma a exigir que a função Blt1DXGI execute uma operação de transferência de bits (bitblt) que resolve recursos de várias amostras, executa a conversão de formato de cor e executa um alongamento ou redução de uma só vez. No entanto, o runtime do Direct3D nunca definirá o membro Flags de DXGI_DDI_ARG_BLT1 como zero (ou seja, nenhum conjunto de sinalizadores) junto com o valor de DXGI_DDI_MODE_ROTATION_IDENTITY definido no membro Rotate de DXGI_DDI_ARG_BLT1 (ou seja, para não indicar nenhuma rotação) para executar uma operação de cópia de memória reta. Em vez disso, a menos que ambos os recursos sejam de várias amostras, o runtime do Direct3D chama a função ResourceCopy ou ResourceCopyRegion(D3D11_1) do driver para executar uma operação de cópia de memória direta.

A qualidade do alongamento ou redução que o driver de exibição do modo de usuário executa deve ser tão boa quanto o alongamento ou redução que um filtro bilinear executa.

O runtime do Direct3D chamará a função Blt1DXGI do driver com pouca frequência. Ou seja, o runtime deve chamar Blt1DXGI no máximo uma ou duas vezes por quadro, pois o runtime usa Blt1DXGI principalmente para dar suporte a uma apresentação.

Quando o runtime chama Blt1DXGI para uma apresentação, o runtime define o sinalizador Apresentar campo de bits no membro Flags do DXGI_DDI_ARG_BLT1. O runtime define o sinalizador Apresentar campo de bits para informar ao driver que há requisitos extras para o bitblt e que a sincronização extra pode ser necessária (por exemplo, o runtime pode precisar executar uma sincronização extra nas configurações do computador que contêm dois adaptadores gráficos que manipulam partes separadas da exibição). Quando o sinalizador Apresentar campo de bits estiver definido, o driver deverá executar uma operação de cópia dos buffers de fundo de um aplicativo para a superfície compartilhada do DWM. Como a sincronização para esse tipo de operação de cópia é inexata, rasgar artefatos deve ser o pior tipo de artefato que um usuário experimenta. Para esse tipo de operação de cópia, o driver não deve usar uma abordagem de várias passões resolvendo primeiro na superfície de destino e, em seguida, convertendo os resultados in-loco porque os artefatos possíveis seriam muito piores.

Se o driver der suporte ao retorno DXGI_DDI_ERR_UNSUPPORTED durante a criação de uma superfície primária (ou seja, retornar DXGI_DDI_ERR_UNSUPPORTED de uma chamada para sua função CreateResource(D3D10) com o sinalizador D3D10_DDI_BIND_PRESENT definido no membro BindFlags do D3D10DDIARG_CREATERESOURCE juntamente com o membro pPrimaryDesc de D3D10DDIARG_CREATERESOURCE definido como não NULL), o driver também deve dar suporte à rotação durante uma operação de cópia. Se o driver nunca retornar DXGI_DDI_ERR_UNSUPPORTED de uma chamada para sua função CreateResource(D3D10) ou CreateResource(D3D11), o runtime nunca passará o valor DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180 ou DXGI_DDI_MODE_ROTATION_ROTATE270 para o membro Rotate do DXGI_DDI_ARG_BLT1. Portanto, nessa situação, a função Blt1DXGI do driver não é necessária para dar suporte à rotação.

O runtime define um valor no membro Rotate de DXGI_DDI_ARG_BLT1 para indicar o número de graus para girar no sentido anti-horário o conteúdo da origem antes que o driver copie o conteúdo para o destino. A rotação é especificada em incrementos de 90 graus.

Observação

Quando a função Blt1DXGI do driver copia o conteúdo formatado em sRGB de uma superfície de origem para uma superfície de destino não sRGB, o driver deve copiar o conteúdo sRGB inalterado (ou seja, o driver não deve executar o sRGB para conversão linear).

Restrições de origem

A função Blt1DXGI sempre usa um sub-recurso de origem inteiro (versus alguma área sub-retangular) para executar a operação bitblt. Além disso, a origem é uma representação D3D10DDIRESOURCE_TEXTURE2D (especificada no membro ResourceDimension de D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE quando a origem é criada em uma chamada para a função CreateResource(D3D10) ou CreateResource(D3D11) do driver de exibição do modo de usuário, respectivamente). Quando o runtime define o campo de bitsResolver no membro Flags do DXGI_DDI_ARG_BLT1, a origem é um recurso de várias amostras. O recurso de origem é restrito a um recurso no qual o sinalizador de D3D10_DDI_BIND_PRESENT foi definido no membro BindFlags de D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE. O formato da origem (especificado no membro Format de D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE) é restrito a formatos de modo de exibição, especificados pelos seguintes valores da enumeração DXGI_FORMAT :

  • DXGI_FORMAT_B5G6R5_UNORM
  • DXGI_FORMAT_B5G5R5A1_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM (veja a observação abaixo.)
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R10G10B10A2_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

Observação

Se o driver der suporte ao formato de origem DXGI_FORMAT_B8G8R8A8_UNORM, as seguintes restrições se aplicarão:

  • Quando o driver executa uma operação bitblt de um formato de ponto flutuante para um formato inteiro, como BGRA8888, ele deve codificar implicitamente gama nos resultados.
  • Por outro lado, quando o driver executa uma operação bitblt de um formato inteiro para um formato de ponto flutuante, ele deve remover implicitamente a codificação gama dos resultados.

Restrições de destino

O destino também é uma representação D3D10DDIRESOURCE_TEXTURE2D . O formato do destino também é restrito a formatos de modo de exibição. O recurso de destino é restrito a um recurso associado como um destino de renderização (D3D10_DDI_BIND_RENDER_TARGET definido no membro BindFlags de D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE).

Criando um buffer de fundo estéreo

A partir de Windows 8, se o driver precisar criar um buffer de fundo estéreo, ele deverá definir membros da estrutura D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE, respectivamente, apontados pelo parâmetro pCreateResource das funções CreateResource(D3D10) ou CreateResource(D3D11), da seguinte maneira:

  1. Defina o membro ArraySize como um valor de 2.
  2. Defina o valor do sinalizador D3D10_DDI_BIND_PRESENT no membro BindFlags .

Além disso, para dar suporte à apresentação estéreo, a função BltDXGI deve permitir quaisquer valores para os membros DstSubresource e SrcSubresource da estrutura DXGI_DDI_ARG_BLT que estão dentro do intervalo dos recursos de origem e destino.

pfnResolveSharedResource

Um ponteiro para a função ResolveSharedResourceDXGI do driver.

pfnBlt1

Um ponteiro para a função Blt1DXGI do driver.

pfnOfferResources

Um ponteiro para a função pfnOfferResources do driver.

pfnReclaimResources

Chamado pelo runtime DXGI para recuperar recursos de memória de vídeo que o driver de exibição do modo de usuário oferecia anteriormente para reutilização. Implementado pelo WDDM 1.2 e por drivers de exibição do modo de usuário posterior.

pfnGetMultiplaneOverlayCaps

Chamado pelo runtime da DXGI (Infraestrutura Gráfica do Microsoft DirectX) para solicitar que o driver de exibição do modo de usuário obtenha funcionalidades básicas do plano de sobreposição. Opcionalmente implementado pelos drivers de exibição WDDM (Modelo de Driver de Exibição do Windows) 1.3 e posteriores. A sintaxe de pfnGetMultiplaneOverlayCaps segue:

pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;

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

O parâmetro pCaps é um ponteiro para uma estrutura DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS que especifica as funcionalidades do plano de sobreposição.

pfnGetMultiplaneOverlayCaps retorna um dos seguintes valores:

  • S_OK: o driver forneceu com êxito as funcionalidades do plano de sobreposição.
  • D3DDDIERR_DEVICEREMOVED: o driver detectou que o adaptador de vídeo foi removido, portanto, o driver não concluiu a operação. Se o driver não estiver ciente da remoção do adaptador, o driver não precisará retornar esse código de erro.

pfnGetMultiplaneOverlayFilterRange

Esse membro é reservado e deve ser definido como zero. Suporte começando com Windows 8.1.

pfnCheckMultiplaneOverlaySupport

Chamado pelo runtime da DXGI (Infraestrutura Gráfica do Microsoft DirectX) para marcar os detalhes sobre o suporte de hardware para sobreposições multiplano. A sintaxe de pfnCheckMultiplaneOverlaySupport é:

PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;

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

O parâmetro pSupport é um ponteiro para uma estrutura DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT que descreve como exibir para a superfície de destino.

Se pfnCheckMultiplaneOverlaySupport for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

pfnPresentMultiplaneOverlay

Um ponteiro para a função pfnPresentMultiplaneOverlay (DXGI) do driver. Suporte começando com Windows 8.1.

pSupport

Um ponteiro para uma estrutura DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT que descreve como exibir para a superfície de destino.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8, WDDM 1.2
Servidor mínimo com suporte Windows Server 2012
Cabeçalho dxgiddi.h (inclua D3d10umddi.h)

Confira também

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_3_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS