Rendimiento de las Fx, como funcionan
-
Continuamente aparecen nuevos drivers de las graficas FX que cambian los resultados de los test, ¿por que ocurre esto?.
Lo primero y mas importante que hay que saber es que los test solo son test y no sirven para jugar, ya nisiquiera sirven para indicar el rendimiento.
Lo segundo que hay que decir es que una tarjeta funciona bien si y solo si el usuario que ve las imagenes en pantalla considera que no hay ningun error, despues de todo va aser él el que use la tarjeta y no el de la review.
Dicho esto pasemos a responder la pregunta.
Las Fx tienen una arquitectura muy diferente a las Ati y a las anteriores tarjetas. Esta arquitectura guarda muchisimas similitudes con la VP10 de 3DLabs y su caracteristica principal es su capacidad de programacion, esto haceque, por ejemplo, sus caracteristicas puedan variar en cuanto a texutas y renders por ciclo.
Esta diferencia en la arquitectura hace que su forma de programarse sea diferente al tradicional. Por poner una similitud podria ser como si programaras para x86 y para x86-64.
Logicamente los programadores no van a realizar el doble de trabajo programando 2 veces un juego asi que lo que ha hecho nVidia en sus drivers FX es recompilar las intrucciones "normales" a codigo FX. Esto en realidad es lo que hacen todas los drivers de una forma u otra.
El problema esta en que el hardware de las Fx no es muy ortodoso respetando la especificacion Dx9 lo que produce que que esta transformacion de instrucciones no sea tan directa como en una Ati. Puesto que en las Fx no cinciden los tipos ni se acelera "directamente" las funciones Dx9 estas hay que cambiarlas para adaptarlas perdiendose "cosas" por el camino y digo cosas porque deberian de perderse precision pero tambien se pierden algunos politicos.
Unos de los problemas mas comentados es el trabajo nativo de las FX en 16 y 32 bits de precision de color en shaders frente a 24 bits del estandar DX9. Esto significa que o bien se pasa de 24 a 16 perdiendose calidad y ganando velocidad o bien se pasa a 32 no ganando calidad y perdiendo velocidad.
Hay que destacar que todo esto solo ucurre con DX debido a que es un estandar ajeno al hardware, es decir, M$ desarrolla el Dx y el hardware debe incorporar todas las funciones necesarias para acelerarlo. En OGL no ocurre esto porque esta bibliotece incluye un monton de funciones pero los fabricantes de hardware incluyen solo un grupo adapatandolas a su hardware. Debido a que las funciones OGL son mucho mas simple que las Dx cada fabricante puede implementarlas como quiera mientras que hagan lo que hace la funcion original, esto hace que se gane rendimiento al estar mucho mas cerca del hardware.
Pero, ¿por que cambian los resutados?. Pues simple, cada nueva version de drivers cambia ese "compilador" que traduce de Dx9 nativo a codigo maquina incroporando ciertas optimizaciones por el camino. Si tu sacas una nueva version de un programa perderas todas las ventajas de estas optimizaciones.
Sin embargo aumentar el rendimiento de un juego mal programado a base de optimizaciones por dirvers no es precisamente una solucion "etica", pero teniendo en cuenta como se programan los juegos ultimamente parace ser que es el unico consuelo para los jugadores.