En resumen, las razones de rendimiento son las razones por las que no son programables.
Historia y mercado
En el pasado, solía haber núcleos separados para procesadores de vértices y fragmentos para evitar diseños de FPU hinchados. Hubo algunas operaciones matemáticas que solo podía hacer en el código de sombreador de fragmentos, por ejemplo (porque en su mayoría solo eran relevantes para sombreadores de fragmentos). Esto produciría graves cuellos de botella de hardware para aplicaciones que no maximizaran el potencial de cada tipo de núcleo.
A medida que los sombreadores programables se hicieron más populares, se introdujeron unidades universales. Se implementaron más y más etapas de la tubería de gráficos en hardware para ayudar con el escalado. Durante este tiempo, GPGPU también se hizo más popular, por lo que los proveedores tuvieron que incorporar parte de esta funcionalidad. Sin embargo, es importante tener en cuenta que la mayoría de los ingresos de las GPU todavía eran videojuegos, por lo que esto no podría interferir con el rendimiento.
Finalmente, un gran jugador, Intel, decidió invertir en rasterizadores programables con su arquitectura Larrabee . Se suponía que este proyecto era innovador, pero el rendimiento fue aparentemente menor al deseado . Fue cerrado, y partes de él fueron rescatados para procesadores Xeon Phi. Sin embargo, vale la pena señalar que los otros proveedores no han implementado esto.
Intentos de rasterizadores de software
Ha habido algunos intentos de rasterización a través del software, pero todos parecen tener problemas con el rendimiento.
Un esfuerzo notable fue un intento de Nvidia en 2011 en este artículo . Esto se lanzó cerca de cuando Larrabee fue terminado, por lo que es muy posible que esto fuera una respuesta a eso. De todos modos, hay algunas cifras de rendimiento en esto, y la mayoría de ellas muestran un rendimiento varias veces más lento que los rasterizadores de hardware.
Problemas técnicos con la rasterización de software
Hay muchos problemas que se enfrentaron en el documento de Nvidia. Estos son algunos de los problemas más importantes con los rasterizadores de software:
Problemas mayores
Interpolación:
la implementación de hardware genera ecuaciones de interpolación en hardware especializado. Esto es lento para el procesador de software, ya que tenía que hacerse en el sombreador de fragmentos.
Anti-aliasing:
También hubo problemas de rendimiento con el anti-aliasing (específicamente con la memoria). La información sobre las muestras de subpíxeles debe almacenarse en la memoria del chip, lo que no es suficiente para mantener esto. Julien Guertault señaló que el caché de textura / caché puede ser más lento con el software. MSAA ciertamente tiene problemas aquí porque desborda el caché (los cachés sin textura) y se va a la memoria fuera del chip. Los rasterizadores comprimen los datos almacenados en esa memoria, lo que también ayuda con el rendimiento aquí.
Consumo de energía:
Simon F señaló que el consumo de energía sería menor. El documento mencionó que las ALU personalizadas están en rasterizadores (lo que reduciría el consumo de energía), y esto tendría sentido ya que las unidades de procesamiento de fragmentos y vértices en el pasado solían tener conjuntos de instrucciones personalizadas (probablemente también ALU personalizadas). Ciertamente sería un cuello de botella en muchos sistemas (por ejemplo, móvil), aunque esto tiene implicaciones más allá del rendimiento.
Resumen
TL; DR: hay demasiadas ineficiencias que el renderizado de software no puede pasar, y estas cosas se suman. También hay muchas limitaciones mayores, especialmente cuando se trata de ancho de banda VRAM, problemas de sincronización y cálculos adicionales.