O projeto Wine lançou a versão do pacote vkd3d 1.5 com a implementação do Direct3D 12, funcionando através da tradução de chamadas para a API gráfica Vulkan. O pacote inclui as bibliotecas libvkd3d com a implementação do Direct3D 12, libvkd3d-shader com o tradutor para os modelos de sombreador 4 e 5, e libvkd3d-utils com funções para facilitar a portabilidade de aplicações Direct3D 12, além de um conjunto de exemplos de demonstração, incluindo a porta do glxgears para Direct3D 12. O código do projeto é distribuído sob a licença LGPLv2.1.
A biblioteca libvkd3d suporta a maior parte das funcionalidades do Direct3D 12, incluindo recursos para gráficos e computação, filas e listas de comandos, descritores e descritores de heap, assinaturas de raiz, acesso não ordenado, samplers, assinaturas de comandos, constantes de raiz, renderização indireta, métodos Clear*() e Copy*().
Na libvkd3d-shader está implementada a tradução de bytecode dos modelos de sombreador 4 e 5 para a representação intermediária SPIR-V. São suportados sombreamentos de vértices, pixel, tesselação, computacional e geometral simples, bem como a serialização e deserialização da assinatura de raiz. Entre as instruções do sombreador, estão implementadas operações aritméticas, atômicas e bitwise, operadores de comparação e controle de fluxo de dados, instruções sample, gather e load, e operações de acesso não ordenado (UAV, Unordered Access View).
Na nova versão:
- Foram feitas numerosas melhorias no compilador de sombreador em HLSL (High-Level Shader Language), disponível desde o DirectX 9.0. Entre elas, em estruturas e arrays, foi melhorado o suporte a tipos de objeto HLSL, como Texture2D, e adicionado suporte a funções embutidas como dot(), ldexp() e lerp(); para os modelos de sombreador 4 e 5, foi adicionado suporte a operadores lógicos 'and', 'or' e 'not', além da possibilidade de conversão de tipos booleanos.
- Foi implementada a opção VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV para carregar a visão de acesso não ordenado (UAV) para formatos de múltiplos componentes SPIR-V (DXGI_FORMAT).
Fonte: opennet.ru
