El compilador Kraid, desarrollado para la pila del driver Panfrost, pasa ya las 800.000 pruebas del Vulkan CTS, incluidos algunos casos en los que el compilador anterior fallaba. La autora, Faith Ekstrand, advierte de que el logro se limita por ahora a los compute shaders: las etapas de vertex y fragment siguen en desarrollo y la calidad del código generado es todavía baja.
Ekstrand explica que la baja calidad es una decisión estratégica: forzar al asignador de registros a tomar malas decisiones ayuda a detectar errores del compilador bajo alta presión de registros. El proyecto ha completado casi todos los requisitos de su hoja de ruta, entre ellos un asignador de registros basado en SSA con presupuesto fijo arbitrario, un spiller también basado en SSA que funciona en tiempo casi lineal, soporte de operaciones de 64 bits, manejo completo de swizzles, propagación de copias a nivel de palabra y byte, y destinos de 16 bits con emulación fluida para 8 bits. La codificación de instrucciones se extrae directamente del XML de Arm y se valida con pruebas unitarias en hardware.
Quedan por implementar la optimización del código generado, el ajuste fino del asignador de registros, las estrategias para booleanos y datos de 8 bits, y las etapas de vertex y fragment. Esta última requiere definir un ABI entre el fragment shader principal y el blend shader, ya que la instrucción BLEND puede invocarse como puntero a función. Kraid ya supera al compilador anterior en aritmética de 64 bits y el equipo espera que iguale o supere al antiguo en la mayoría de cargas de trabajo en las próximas semanas.
