O projeto Wine lançou uma nova versão do pacote vkd3d 1.2 com uma implementação Direct3D 12 que funciona traduzindo as chamadas para a API gráfica Vulkan.
Esta nova versão do vkd3d 1.2 contém várias melhorias, mas os principais que se destacam são os disponibilidade de libvkd3d-shader como uma biblioteca pública, o suporte de shader tesselação, bem como o suporte de saÃda de fluxo.
O pacotee inclui bibliotecas libvkd3d com implementações Direct3D 12, libvkd3d-shader com tradutor de shader modelo 4 e 5 e libvkd3d-utils com funções para simplificar a migração de aplicativos Direct3D 12, bem como um conjunto de demos, incluindo a porta glxgears para Direct3D 12. O código do projeto é distribuÃdo licenciado sob LGPLv2.1.
A biblioteca libvkd3d suporta a maioria dos recursos Direct3D 12, incluindo gráficos e funções de computação, listas e filas de comando, descritores e descritores de heap, assinaturas de raiz, acesso não ordenado, amostradores, assinaturas de comando, constantes de raiz, representação indireta e assim por diante.
libvkd3d-shader implementa a tradução dos códigos de byte 4 e 5 dos padrões de sombreamento na representação intermediária do SPIR-V. Vértices, pixels, mosaico, sombreadores computacionais e de geometria simples, serialização de assinatura de raiz e desserialização são suportados.
As instruções de sombreador incluem operações aritméticas, atômicas e bit a bit, controle de fluxo de dados e operadores de comparação, amostragem, coleta e instruções de carregamento, operações de acesso não ordenado (UAV, visualização de acesso não ordenado).
No estágio atual de desenvolvimento, nem todas as chamadas para Direct3D 12 são implementadas e os testes foram realizados principalmente em um conjunto de aplicativos de demonstração. A versão não inclui recursos em desenvolvimento, como suporte para shaders de geometria complexa e tesselação, bem como uma série de aprimoramentos relacionados aos métodos e shaders básicos do Direct3D 12. Esses recursos serão oferecidos em uma versão futura.
Principais novos recursos do Vkd3d 1.2
Das mudanças mais importantes que são apresentadas na nova versão, é o Disponibilidade da biblioteca libvkd3d-shader para uso em projetos de terceiros, desde Várias funções do Direct3D 12 foram adicionadas, como:
- Multi-amostragem.
- recursos reservados.
- Taxas de passagem de dados da instância.
- API de "dados privados" para todas as interfaces.
- Mapeamentos de componentes de visualização de recursos de shader
- Extensão VK_KHR_draw_indirect_count.
- Representação predicada / condicional.
- Renderização de profundidade sem pixel shader.
- Recorte de profundidade. Isso requer a extensão VK_EXT_depth_clip_enable.
- Descarte o rasterizador.
- Mixagem de fonte dupla.
- Mapeamento de recursos colocados.
- Os métodos ReadFromSubresource () e WriteToSubresource () ID3D12Resource.
- Acesso simultâneo a recursos de várias filas.
- Visualizações nulas. Ou seja, visualizações sem um recurso subjacente.
- Várias outras consultas de suporte de recursos.
Além disso, Suporte adicionado para conversão, serialização e desserialização de assinaturas também é destacado root (vkd3d_serialize_versioned_root_signature () e vkd3d_create_versioned_root_signature_deserializer (), bem como suporte para saÃda de streaming.
Outra mudança que se destaca é a implementação de variável de ambiente: VKD3D_CONFIG para definir opções para alterar o comportamento de libvkd3d e VKD3D_VULKAN_DEVICE para substituir o dispositivo para a API Vulkan.
Além disso adicionado suporte para instruções de sombreamento bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos e suporte preliminar para shaders modelo 5.1.
E também suporte para ambientes de destino OpenGL SPIR-V. Isso permite que SPIR-V produzido por libvkd3d-shader seja usado com GL_ARB_gl_spirv. Isso inclui suporte para contadores atômicos OpenGL e amostradores combinados.
Finalmente se você quiser saber mais sobre isso sobre esta nova versão, você pode verificar a lista completa de mudanças no link a seguir.
Como instalar o vkd3d no Linux?
Para aqueles que estão interessados ​​em poder instalar o vkd3d em seu sistema, eles devem obter o código-fonte e prosseguir com a compilação, embora para fins práticos ou para os novatos, eles possam tentar esta biblioteca sem muito esforço. Para isso, basta instalar o lutris e dentro de suas configurações.
Já os interessados ​​em compilar devem obter o código com:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
Finalmente, as camadas Vulkan devem ser habilitadas:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug