Se ha presentado un prototipo funcional del proyecto FuryGpu, que desarrolla una GPU personalizada basada en FPGA Xilinx Zynq UltraScale+, diseñada como una placa independiente que se conecta a la PC a través de la interfaz PCIe. Las descripciones de los bloques de hardware están implementadas en el lenguaje SystemVerilog, y el diseño de la placa se ha preparado en el sistema libre de diseño asistido por computadora KiCAD. En su estado actual, la GPU FuryGpu ya permite ejecutar el juego Quake con un rendimiento de renderizado de 60 FPS a una resolución de 1280 x 720.
El proyecto se ha estado desarrollando desde 2021 como un pasatiempo por un programador especializado en el desarrollo de videojuegos y con interés en hardware. Los esquemas de la placa, las descripciones en Verilog y los controladores aún no están disponibles públicamente, pero el autor del proyecto ha declarado su intención de abrir todo el trabajo relacionado con FuryGpu tras la resolución de algunos asuntos legales con su empleador (la autorización es necesaria para protegerse de posibles reclamos por parte del empleador).

En la etapa actual de desarrollo, las capacidades de FuryGpu se comparan con una tarjeta gráfica avanzada de mediados de los años 90. La funcionalidad de la GPU se define por un conjunto de funciones fijas; la ejecución de sombreados programáticos aún no se soporta, y se da prioridad a los componentes de renderizado, rasterización y procesamiento de texturas. Se proporciona una API gráfica propia, FuryGL, que recuerda a la API Vulkan, pero no es compatible debido a la falta de soporte para sombreadores.
Entre las capacidades ya disponibles:
- Cuatro rasterizadores de mosaicos independientes;
- Funcionamiento de la GPU a una frecuencia de 400 MHz, el bloque de control de texturas a 480 MHz;
- Frontend para realizar operaciones de punto flotante (fp32);
- Bloque de mapeo y procesamiento de texturas que soporta filtrado lineal y bilineal con soporte para MIP-texturización;
- Interfaz PCIe Gen 2×4. Puertos DisplayPort y HDMI disponibles para conectar un monitor.

Fuente: opennet.ru
