Compartilhar via


Novidades para Windows 10 drivers de vídeo e gráficos

Esta página descreve as novidades em drivers de vídeo e gráficos para Windows 10, versão 2004 (WDDM 2.7). Para ver os recursos adicionados em versões anteriores do WDDM 2.X, confira Novidades para versões anteriores do WDDM 2.X.

Sombreadores de Malha

Sombreadores de malha são um meio de aumentar a flexibilidade e o desempenho do pipeline de gráficos do Direct3D 12 ao usar a rasterização. Eles atuam como uma nova substituição para o assembler de entrada , em particular, estágios de sombreador de vértice e geometria , substituindo alguns dos comportamentos de função fixa do assembler de entrada pelo comportamento de função flexível. Com sombreadores de malha, os aplicativos podem aplicar o abate anteriormente e, portanto, de forma mais eficiente do que o assembler de entrada. Primitivos podem ser eliminados sem ter seus dados de índice processados pela GPU, o que é altamente benéfico, pois vemos as contagens primitivas de aplicativos 3D ficando cada vez mais altas ao longo do tempo.

Caso haja um sombreador de pixel anexado, a saída primitiva de um sombreador de malha se alimentará diretamente no estágio do sombreador de pixels.

O recurso de sombreador de malha apresenta o estágio do sombreador de malha junto com um novo estágio: o sombreador de amplificação. Sombreadores de amplificações substituem o estágio de mosaico de GPU. Os aplicativos configuram o sombreador de amplificação para invocar um sombreador de malha algumas vezes, conforme necessário. Sombreadores de amplificação são uma etapa opcional que permite que um aplicativo controle dinamicamente os níveis de detalhes geométricos.

O recurso de sombreador de malha envolve novos constructos de linguagem de sombreamento, bem como alterações de UMD. Para relatar a funcionalidade do dispositivo de sombreadores de malha, há um campo chamado MeshShaderTier relatado por meio de D3D12DDI_D3D12_OPTIONS_DATA_0073. E, como isso introduz dois novos estágios de sombreador, há dois novos campos em D3D12DDIARG_CREATE_PIPELINE_STATE_0075, hMeshShader e hAmplificationShader. Para iniciar as coisas, há a lista de comandos PFND3D12DDI_DISPATCH_MESH_0074 DDI e também D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH para expedição indireta.

DirectX Raytracing (DXR) 1.1

O WDDM 2.7 traz alguns novos recursos e melhorias que se baseiam na versão inicial do DXR no Direct3D 12.

  • O raytracing embutido é uma forma alternativa de raytracing que não usa sombreadores dinâmicos ou tabelas de sombreador separados. Ele oferece ao desenvolvedor flexibilidade e alguma conveniência em todos os casos em que sombreadores que usam raytracing no estilo DXR 1.0, os chamam de raytracing "baseado em sombreador dinâmico", não se encaixam. O raytracing embutido está disponível em qualquer estágio de sombreador, incluindo sombreadores de computação, sombreadores de pixel e assim por diante. Isso está sendo mencionado aqui como algo disponível com o WDDM 2.7, embora não corresponda a uma alteração de DDI.

  • Os aplicativos podem chamar DispatchRays por meio de ExecuteIndirect, permitindo que o trabalho de raytracing seja configurado na GPU. Isso pode ser útil para aplicativos que buscam eliminar, classificar ou ajustar o trabalho de raytracing e eles usam sombreadores para fazer isso. Acompanhando isso, agora há um valor de enumeração D3D12DDI_INDIRECT_ARGUMENT_TYPE. Ao usar a expedição de raytracing indireto, cada elemento do buffer execute-indirect é do tipo D3D12DDIARG_DISPATCH_RAYS_0054.

  • A sobrecarga da criação do estado do pipeline para considerar diferentes combinações de sombreador é um desses problemas difíceis em elementos gráficos de computação 3D. O DXR 1.1 inclui algo que pode ajudar: add-to-state-object. AddToStateObject(), como ele é exposto na API, permite que os aplicativos adicionem sombreadores a um objeto de estado existente com sobrecarga de CPU proporcional apenas ao que está sendo adicionado. Além disso, há duas funções DDI do dispositivo: PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 e PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072.

Para relatórios gerais de funcionalidades, há um novo valor de enumeração D3D12DDI_RAYTRACING_TIER_1_1 usado para relatar a camada 1.1.

Comentários do sampler

O Sampler Feedback é um recurso do Direct3D 12 para capturar e registrar informações e locais de amostragem de textura. Sem comentários do sampler, esses detalhes seriam opacos para o desenvolvedor. Esse recurso oferece aos aplicativos a capacidade de não apenas saber qual mip foi amostrado, mas de saber onde nesses mips. Os aplicativos podem estar interessados em informações de amostragem, por exemplo, para:

  • saber com precisão o que carregar em seguida em um sistema de streaming de textura ou
  • saiba com precisão o que precisa ser sombreado em um sistema de renderização de sombreamento de espaço de textura.

Os comentários das operações de exemplo são gravados em um "mapa de comentários" que atua como uma espécie de recurso opaco que deve ser transcodificado para obter informações inspecionáveis pelo aplicativo. Quanto à gravação de comentários em si, há constructos HLSL no modelo de sombreador 6_5 para isso. A semântica é muito semelhante à semântica da Amostra de Texture2D e suas variantes.

Embora os comentários do sampler usem bem os novos constructos de linguagem de sombreamento, ele também envolve alterações de UMD. Para verificação de capacidade do dispositivo, há um limite chamado SamplerFeedbackTier relatado por meio de D3D12DDI_D3D12_OPTIONS_DATA_0073. A criação de recursos foi revisada para criar um novo campo, a região mip de comentários do sampler, do tipo D3D12DDI_MIP_REGION_0075. Acompanhando isso, há também um novo método de criação de descritor , PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075.

Proteção de Conteúdo

O suporte a recursos protegidos opcional foi adicionado às operações de vídeo do Direct3D 12 no WDDM 2.7. Para plano de fundo, os recursos protegidos existiam antes do WDDM 2.7, mas estavam disponíveis apenas para compartilhamento de API cruzada e elementos gráficos ou computação, não para vídeo.

O suporte para recursos protegidos não é relatado pelo driver como uma coisa global; é por operação. Se um driver relatar o suporte a recursos protegidos para uma operação específica, isso significa que a operação pode ler e gravar recursos protegidos e dá suporte ao compartilhamento entre API se o tipo de recurso permitir. Outra coisa que vale a pena mencionar é que, se um driver declara suporte a recursos protegidos para um formato específico, ele também deve dar suporte a esse formato como um recurso não protegido.

Com o WDDM 2.7, os métodos de criação de recursos são modificados para usar uma instância de D3D12DDI_HPROTECTEDRESOURCESESSION opcional. Os drivers recebem esse parâmetro no momento da criação do objeto para informar a instalação e as alocações. Além disso, as verificações de orçamento de memória são revisadas para indicar se a operação usará ou não recursos protegidos. Quando o parâmetro protected-resource-session não for NULL, isso indicará que a operação será gravada em recursos protegidos. Para gravar em um recurso desprotegido, o objeto de operação deve ser recriado.

As referências de estimativa de movimento e decodificador devem ser recursos protegidos quando a saída é um recurso protegido. O processamento de vídeo pode ler de uma combinação de recursos protegidos e desprotegidos ao gravar em um recurso protegido.

Antes de gravar uma ou mais operações que gravam em um recurso protegido, PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 deve ser chamado com uma sessão de recurso protegido não NULL. Chamar PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 com NULL é necessário antes de gravar uma ou mais operações que gravam em recursos não protegidos.

Para saber mais além do tour guiado acima das alterações de DDI para proteção de conteúdo no WDDM 2.7, consulte D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 como um ponto de partida.

Relatórios de buffer de histórico aprimorados para ferramentas

O WDDM 2.7 introduz uma alteração de DDI que beneficia o uso de buffers de histórico por ferramentas de depuração de GPU. Com essa alteração, um único envio de buffer de comando pode conter trabalho correspondente a várias listas de comandos em vez de apenas listas de comandos individuais por vez. Essa alteração permite que as ferramentas de depuração de GPU relatem com mais precisão as características de desempenho dos aplicativos.

Essa funcionalidade é relatada por meio de D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS. Há uma nova D3DDDI_MARKERLOGTYPE de valor de enumeração D3DDDIMLT_BATCHED, que corresponde a D3DDDI_BATCHEDMARKERDATA. As estruturas de dados de eventos ETW foram giradas para conter alguns elementos D3DDDI_BATCHEDMARKERDATA quando são do tipo D3DDDIMLT_BATCHED.

DisplayPort (DP) AUX/I2C

O canal auxiliar de DP (AUX) fornece acesso aos DPCD (Dados de Configuração de DP), que é um arquivo de registro por dispositivo usado para ler os recursos do dispositivo DP, treinamento de link, descoberta de topologia, acesso ao barramento I2C e assim por diante. Veja DXGK_DP_INTERFACE como um ponto de partida.