Partilhar via


Renderização em uma GPU discreta usando recursos de adaptador cruzado

Começando em Windows 8.1, uma GPU discreta usa um recurso de adaptador cruzado como:

  • Um destino para operações de transferência de bloco de bits (bitblt) ou presentes, mas sem alongamento ou conversão de cor.
  • O recurso que o sistema operacional solicita ao driver de exibição do modo de usuário para executar a operação bitblt ou presente de e para.

Uma GPU integrada usa um recurso de adaptador cruzado como:

  • Uma textura durante a composição pelo DWM (Gerenciador de Janelas da Área de Trabalho).
  • Um destino de renderização para aceleração de hardware GDI.
  • Um primário de exibição.
  • Não como um destino de renderização para operações 3D.

As seções a seguir descrevem a arquitetura e os processos envolvidos em três cenários possíveis em que um aplicativo é renderizado em uma GPU discreta dentro de um sistema híbrido.

Modelo de apresentação bitblt redirecionado

Diagrama mostrando o modelo bitblt redirecionado de elementos gráficos híbridos para renderização em uma GPU discreta.

  1. Um recurso de adaptador cruzado para uma janela de nível superior é criado no modo kernel como uma alocação padrão na GPU integrada.
  2. Quando esse recurso é aberto na GPU discreta, o subsistema de kernel de elementos gráficos DirectX (Dxgkrnl.sys) chama a função DxgkDdiGetStandardAllocationDriverData e cria um novo recurso na GPU discreta usando o mesmo repositório de backup (dispositivo de armazenamento em massa) que para a GPU integrada.
  3. O runtime do Direct3D instrui o driver de exibição discreto do modo de usuário da GPU a abrir o recurso de adaptador cruzado usando dados de driver privado.
  4. Um aplicativo DirectX é renderizado na GPU discreta para um recurso de buffer de fundo. Consulte a operação "Renderizar" na figura.
  5. Quando um aplicativo DirectX chama um método Present , o runtime do Direct3D chama a função PresentDXGI (ou pfnPresent) do driver de modo de usuário discreto da GPU para copiar o buffer de volta para o recurso de adaptador cruzado. Consulte a operação "Presente" na figura.
  6. Quando um aplicativo GDI (Interface de Dispositivo Gráfico do Windows) é renderizado em uma janela de nível superior, o subsistema kernel de elementos gráficos DirectX chama a função DxgkDdiRenderKm do driver de miniporto de exibição da GPU integrada e indica que o recurso de adaptador cruzado é um destino de renderização. Consulte a conexão entre o aplicativo GDI e a superfície do adaptador cruzado na figura.
  7. O processo DWM abre o recurso de adaptador cruzado na GPU integrada e o usa durante a composição como uma textura de origem. Confira a operação "Composição" na figura.

Modelo de apresentação de inversão direta

Diagrama ilustrando o modelo de inversão direta de elementos gráficos híbridos para renderização em uma GPU discreta.

  1. O runtime do Direct3D instrui o driver de exibição de modo de usuário discreto da GPU a criar um recurso de adaptador cruzado para cada superfície de cadeia de troca.
  2. Na GPU discreta, o runtime do Direct3D pode definir os membros Primary e VidPnSourceId da estrutura D3DDDI_ALLOCATIONINFO se o modo Desativar Direto estiver disponível. Esses valores de membro devem ser passados quando a função pfnAllocateCb é chamada.
  3. O runtime do Direct3D instrui o driver de exibição do modo de usuário da GPU integrada a abrir um recurso de adaptador cruzado que deve ser gerenciado pelo DWM.
  4. Um aplicativo é renderizado na GPU discreta usando a textura de destino de renderização como destino. Consulte a operação "Renderizar" na figura.
  5. Quando um aplicativo chama um método Present , o runtime do Direct3D chama a função BltDXGI (ou pfnBlt) do driver de modo de usuário discreto da GPU para executar uma cópia para o recurso de adaptador cruzado. Em seguida, o runtime chama a função PresentDXGI (ou pfnPresent) do driver de modo de usuário da GPU discreta, com a origem definida como o recurso de adaptador cruzado e a alocação de destino definida como NULL. Consulte a operação "Copiar" na figura.
  6. O DWM executa sua composição usando o recurso da GPU integrada. Se uma operação do Direct Flip for necessária (DXGK_SEGMENTFLAGS.O DirectFlip está definido), o DWM instrui o driver de miniporto de exibição da GPU integrada a executar uma operação de inversão de uma alocação entre adaptadores para outra. Confira a operação "Inversão de DWM" na figura.

Modelo de tela inteira

  1. O runtime do Direct3D instrui o driver de exibição do modo de usuário da GPU integrada a criar uma alocação primária compartilhada entre adaptadores para cada superfície de cadeia de troca.
  2. O runtime do Direct3D instrui o driver de exibição de modo de usuário discreto da GPU a abrir os recursos do adaptador cruzado.
  3. Um aplicativo é renderizado na GPU discreta usando a textura de destino de renderização como destino.
  4. Quando o aplicativo chama um método Present , o runtime do Direct3D instrui o driver de exibição de modo de usuário discreto da GPU a executar uma cópia para um recurso de adaptador cruzado.
  5. O driver de exibição do modo de usuário da GPU integrado e o driver de miniporto de exibição são instruídos a inverter esse recurso de adaptador cruzado.