Compartilhar via


Passando informações de DXGI no momento da criação do recurso

O runtime do Direct3D versão 10 pode passar informações específicas do DXGI ao chamar a função CreateResource(D3D10) do driver de exibição do modo de usuário para criar um recurso. O runtime pode passar um ponteiro para uma estrutura DXGI_DDI_PRIMARY_DESC no membro pPrimaryDesc da estrutura D3D10DDIARG_CREATERESOURCE para especificar que o recurso pode ser usado como primário (ou seja, o recurso pode ser verificado para a exibição). O runtime define pPrimaryDesc como um valor não NULL somente se o runtime também definir o bit D3D10_DDI_BIND_PRESENT no membro BindFlags do D3D10DDIARG_CREATERESOURCE.

O runtime pode especificar o sinalizador DXGI_DDI_PRIMARY_OPTIONAL no membro Flags do DXGI_DDI_PRIMARY_DESC para notificar o driver de exibição do modo de usuário de que o driver pode optar por não usar o recurso em uma apresentação no estilo flip. Para notificar o runtime de que ele não deve usar o recurso em apresentações no estilo flip, o driver define o sinalizador DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT no membro DriverFlags do DXGI_DDI_PRIMARY_DESC.

Se o driver retornar DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT na chamada CreateResource(D3D10) para criar o recurso, o runtime sempre executará uma apresentação no estilo bit-block transfer (bitblt) (em vez de uma apresentação no estilo flip) quando o recurso for a origem da apresentação. Essa funcionalidade será útil se o hardware gráfico não puder verificar um subconjunto específico de um determinado tipo de recurso. Por exemplo, o hardware gráfico pode ou não ser capaz de verificar um tipo de recurso de buffer de fundo com várias amostras. Além disso, a capacidade de verificar buffers back multisampled pode depender ainda mais do formato da superfície. Se o hardware gráfico não puder verificar um formato multisampledo específico, o driver de exibição do modo de usuário definirá o sinalizador DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT no membro DriverFlags do DXGI_DDI_PRIMARY_DESC para o recurso com esse formato.

Se o runtime não definir o sinalizador DXGI_DDI_PRIMARY_OPTIONAL no membro Flags do DXGI_DDI_PRIMARY_DESC notificar o driver sobre a possibilidade de recusar o uso do recurso em uma apresentação no estilo flip, o driver ainda poderá retornar o código de erro DXGI_DDI_ERR_UNSUPPORTED juntamente com o sinalizador DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT de uma chamada para CreateResource(D3D10). CreateResource(D3D10) do driver passa DXGI_DDI_ERR_UNSUPPORTED em uma chamada para a função pfnSetErrorCb se o driver não puder verificar esse primário. Retornar DXGI_DDI_ERR_UNSUPPORTED juntamente com DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT faz com que o DXGI interponha uma superfície de proxy no caminho da apresentação, entre os buffers traseiros e a superfície primária. A superfície de proxy sempre corresponde à superfície primária (verificada) em termos de tamanho, várias imagens e rotação. A primeira etapa nesse processo é que o DXGI determine quais das configurações de multisample ou rotação fazem com que o driver se recuse a verificar uma superfície com essas configurações. O DXGI faz essa determinação reduzindo o dimensionamento e tentando criar um primário sem rotação, sem várias amostras ou sem ambos. Depois que o DXGI determina o suporte do driver para recursos de verificação, o DXGI cria as superfícies primária e proxy e o driver deve ser capaz de inverter entre essas duas superfícies. O DXGI ainda atenderá subsequentemente às solicitações de um aplicativo para buffers back girados automaticamente ou com várias amostras chamando a função BltDXGI do driver para executar bitblts de buffers de fundo para a superfície de proxy. Esses bitblts solicitam que o driver execute resoluções ou rotações de várias amostras. Para obter mais informações sobre bltDXGI, consulte a página de referência BltDXGI .