Marek Olšák, conhecido desenvolvedor da AMD, não mostra sinais de desaceleração em seus esforços para otimizar o suporte OpenGL dentro do stack de drivers Mesa/Gallium3D.
Com mais de uma década desde que se juntou à AMD e mais de quinze anos envolvido com o Mesa desde seus dias como desenvolvedor estudantil, Marek continua a trazer otimizações de desempenho e novos recursos para beneficiar os drivers gráficos Radeon de código aberto no Linux.
O trabalho mais recente mesclado hoje para o próximo lançamento do Mesa 24.2 é a capacidade de vetorizar a entrada/saída dentro do linker GLSL.
Isso é realizado como parte do código comum NIR e GLSL dentro do Mesa. Marek explicou no pedido de mesclagem:
"Em geral, queremos IO vetorizado saindo do linker GLSL. Como o linker escalariza para nir_opt_varyings, ele não tinha uma maneira de re-vetorizar IO até agora."
nir_opt_vectorize_io:
-Vetoriza carregamentos e armazenamentos de entrada/saída reduzidos
- Vetoriza carregamentos e armazenamentos de 16 bits baixos e altos mesclando-os em um único carregamento ou armazenamento de 32 bits (exceto load_interpolated_input, que precisa manter bit_size=16)
- Realiza a DCE (Eliminação de Código Morto) de armazenamentos de saída que sobrescrevem o valor anterior escrevendo no mesmo slot e componente.
A vetorização é local apenas dentro de blocos básicos. Não ocorre vetorização através de limites de blocos básicos, barreiras (apenas saídas TCS), emite (apenas saídas GS) e dependências de carga de saída <-> armazenamento de saída.
Todos os carregamentos e armazenamentos devem ser escalares antes do passe. Carregamentos e armazenamentos de 64 bits são proibidos.
Para cada bloco básico, a complexidade de tempo é O(n*log(n)), onde n é o número de instruções IO dentro desse bloco.
Não foram compartilhadas métricas de desempenho como parte da mudança no linker GLSL para (re)vetorizar o IO reduzido. Aqueles interessados podem encontrar todos os detalhes dentro deste pedido de mesclagem com mais de 600 linhas de código novo agora no Mesa 24.2-devel.
Nenhum comentário:
Postar um comentário