FERRAMENTAS LINUX: O Driver V3D Kernel do Raspberry Pi se prepara para “trabalhos de CPU” para ajudar o Vulkan

quinta-feira, 7 de setembro de 2023

O Driver V3D Kernel do Raspberry Pi se prepara para “trabalhos de CPU” para ajudar o Vulkan

 

Os desenvolvedores da Igalia estão trabalhando na extensão do driver gráfico do kernel Broadcom V3D DRM, que é usado principalmente pelos dispositivos Raspberry Pi mais recentes, para suportar a noção de "trabalhos de CPU" no espaço do kernel, a fim de auxiliar no suporte ao Vulkan. 

Esses trabalhos de CPU são necessários porque o driver de GPU Broadcom não é capaz de lidar com alguns comandos Vulkan e, portanto, precisa que o processador os gerencie.

Devido à limitação da GPU Broadcom em suportar alguns comandos Vulkan, o driver Mesa Vulkan precisa recorrer à CPU para executar esses comandos. Atualmente, essa tarefa é realizada pelo Mesa no espaço do usuário, mas a intenção é migrá-la para o espaço do kernel com esse recurso de trabalhos de CPU V3D.

Ao mover essa tarefa para o espaço do kernel, é possível anexar vários objetos de sincronização de entrada/saída a esses trabalhos, tornando mais fácil o gerenciamento em comparação com a abordagem existente no espaço do usuário em relação à sincronização com a GPU. Além disso, os trabalhos de CPU do driver do kernel V3D podem aproveitar as filas do agendador DRM e obter um gerenciamento de trabalhos mais eficiente.

Maíra Canal, da Igalia, explica na série de patches proposta:

"Depois de decidirmos que gostaríamos de ter uma implementação de trabalho de CPU no kernel, consideramos duas possibilidades para essa implementação: criar um IOCTL para cada tipo de trabalho de CPU ou utilizar uma extensão de usuário para fornecer um comportamento polimórfico para um único IOCTL de trabalho de CPU. Optamos pela segunda opção.

Temos diferentes tipos de trabalhos de CPU (trabalhos CSD indiretos, trabalhos de consulta de carimbo de data/hora, trabalhos de cópia de resultados de consulta, etc.), e cada um deles compartilha uma infraestrutura comum, mas executa operações diferentes. Portanto, ao utilizar um único IOCTL estendido por uma extensão de usuário, podemos reutilizar a infraestrutura comum, evitando repetição de código, e ainda utilizar o ID da extensão de usuário para identificar o tipo de trabalho e, com base nisso, realizar a operação apropriada.

...

Este conjunto de patches apresenta a infraestrutura básica para trabalhos de CPU com uma nova fila V3D (V3D_CPU) e novos rastreadores. Além disso, introduz seis tipos de trabalhos de CPU: um trabalho CSD indireto, um trabalho de consulta de carimbo de data e hora, um trabalho de redefinição de consultas de carimbo de data e hora, um trabalho de cópia de resultados de consulta de carimbo de data e hora, um trabalho de redefinição de consultas de desempenho e um trabalho de cópia de resultados de consulta de desempenho.

Para obter mais detalhes sobre esses trabalhos de CPU V3D, você pode consultar os patches que estão atualmente em revisão, como parte do esforço para melhorar o suporte Vulkan em computadores de placa única Raspberry Pi. 





Fonte

Até a próxima !!


Nenhum comentário:

Postar um comentário