A Microsoft lançou o código-fonte da camada D3D9On12 que é usada para traduzir comandos Direct3D 9 para Direct3D 12

Boas notícias foram divulgadas pela Microsoft e é isso recentemente tornou conhecido por meio de uma postagem no blog abrindo o código-fonte da camada D3D9On12 com a implementação do dispositivo DDI (Device Driver Interface), que traduz os comandos Direct3D 9 (D3D9) em comandos Direct3D 12 (D3D12).

Essa mudança da Microsoft agora tornará mais fácil para os desenvolvedores a transição do DirectX11 para o DirectX12 em seus jogos. A camada de tradução DX12 é essencialmente uma biblioteca auxiliar para traduzir conceitos gráficos e comandos de um domínio do estilo DX11 para um domínio do estilo DX12.

Já faz um tempo desde a última vez que mencionamos a camada de mapeamento D3D9On12. Como uma atualização rápida, ele mapeia comandos D3D9 para D3D12 agindo como a D3D9 Device Driver Interface (DDI). Ter essa camada de mapeamento permite que aplicativos D3D9 mais antigos sejam executados em sistemas modernos que podem não ter um driver D3D9. Desde a última postagem do blog, adicionamos suporte para extensões Alpha to Coverage, corrigimos alguns bugs e limpamos a base de código para código aberto.

Esta é, sem dúvida, uma boa notícia e é que vários projetos que trabalham com a camada agora podem se beneficiar, uma vez que, como tal, permite que aplicativos legados funcionem em ambientes que suportam apenas D3D12, ou seja, por exemplo isso pode ser útil para implementar D3D9 com base nos projetos vkd3d e VKD3D-Protonjá que eles oferecem uma implementação Direct3D 12 para Linux que funciona traduzindo chamadas D3D12 para a API gráfica Vulkan.

D3D9On12 é uma camada que mapeia comandos gráficos de D3D9 a D3D12. D3D9On12 não é uma implementação da API D3D9, mas sim uma implementação do modo de usuário D3D9 DDI (Device Driver Interface). Isso significa que não é um binário chamado d3d9.dll, mas sim d3d9on12.dll.

Quando um aplicativo cria um dispositivo D3D9, eles podem escolher ser um dispositivo D3D9On12, em vez de um dispositivo D3D9 nativo. Quando isso acontece, o d3d9on12.dll é carregado pelo tempo de execução do D3D9 e inicializado. Quando o aplicativo chama comandos de renderização, o D3D9 validará esses comandos e os converterá em DDI D3D9 e os enviará para D3D9On12, assim como qualquer driver D3D9.

O D3D9On12 pegará esses comandos e os transformará em chamadas API D3D12, que são posteriormente validadas pelo tempo de execução D3D12, opcionalmente incluindo a camada de depuração D3D12, que são então convertidos para o DDI D3D12 e enviados para o driver D3D12.

Também é mencionado que o projeto é baseado no código de um subsistema semelhante incluído no Windows 10. Ressalta-se que a publicação do código D3D9On12 irá fornecer uma oportunidade para que os representantes da comunidade participar de correções de bugs e adicionar otimizações, e também pode servir como um exemplo para estudar a implementação dos drivers DDI D3D9 e uma estrutura para a criação de tais camadas para traduções de vários APIs gráficos em D3D12.

Por que código aberto?
O D3D9On12 faz parte do Windows 10 há alguns anos e, durante esse tempo, ele cresceu em estabilidade e usabilidade. Torne-o de código aberto:

Permita que a comunidade contribua com correções de bugs adicionais ou melhorias de desempenho.
servem como outro exemplo de como usar o D3D12TranslationLayer
dê a quem estiver interessado uma olhada em como é uma implementação de DDI D3D9

Ao mesmo tempo, um pacote DXBC Signer foi lançado que permite a capacidade de assinar arquivos DXBC arbitrariamente gerado por kits de ferramentas de terceiros. O D3D9On12 usa este pacote para assinar DXBCs gerados pela conversão de sombreadores em um novo modelo.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes da publicação que a Microsoft fez em seu blog no link a seguir.


O conteúdo do artigo segue nossos princípios de Ética editorial. Para relatar um erro, clique Clique aqui.

Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.