Resumindo: Alguém pode construir uma placa gráfica 3D do zero? Dylan Barrie queria descobrir e passou quatro anos tentando. O resultado foi uma GPU completa que, teoricamente, pode rodar softwares de jogos mais antigos no Windows.
Dylan Barrie é desenvolvedor de jogos e entusiasta de hardware. Nos últimos quatorze anos de sua carreira na indústria de jogos, Barrie se concentrou principalmente no lado do software de renderização gráfica. No entanto, ele começou a desenvolver uma GPU full-stack personalizada há quatro anos, em seu tempo livre.
Barrie disse que o processo de criação de uma placa gráfica do zero foi infernal, mas depois de quatro anos de diligência, ele pode finalmente compartilhar seus esforços agora que o design da placa adicional está essencialmente concluído. FuryGPU é uma “GPU de hardware real” construída em um design Xilinx Zynq UltraScale+ FPGA. A placa usa um PCB personalizado e se conecta ao PC host por meio de um slot PCIe.
FuryGPU pode suportar recursos de hardware equivalentes a uma placa gráfica “high-end” de meados da década de 1990, com software completo e pilha de drivers para versões modernas do Windows. A GPU pode renderizar jogos daquela década com taxas de quadros jogáveis em tempo real. Barrie eventualmente lançará esquemas de hardware, software e drivers por meio de uma licença de código aberto.
O fabricante de hardware disse que decidiu construir um processador gráfico do zero porque não conhecia os “detalhes reais” de como as GPUs funcionam. Estando “extremamente familiarizado” com o processo de renderização 3D do lado do software, Barrie percebeu que criar uma GPU poderia ser um projeto pessoal factível, embora assustador.
Ele passou “inúmeras horas” aprendendo como os chips FPGA funcionam e como construir designs de chips por meio de descrição de hardware, verificação e linguagem de implementação SystemVerilog. Projetar os esquemas para uma placa gráfica PCIe foi um “esforço hercúleo”, disse Barrie. Talvez sem surpresa, escrever drivers para Windows foi a tarefa mais penosa do projeto.
O desenvolvedor escreveu uma API gráfica personalizada para se comunicar com a GPU e criou drivers de kernel do Windows para gerenciar os sinais de exibição e áudio. O FuryGPU pode renderizar Quake – o Quake original lançado em 1996 – a “sólidos” 60 quadros por segundo, o que teria sido um verdadeiro prazer para os jogadores dos anos 90.
Barrie planeja escrever mais sobre sua aventura de criação de GPU em seu blog FuryGPU, começando com as unidades de textura da placa. Ele também deseja otimizar sua versão personalizada do Quake para rodar muito mais rápido.