Informe irregular del desarrollo de Nouveau
Edición del 10 de marzo
1. Introducción
Bienvenidos de nuevo al TiNDC. Para asegurarnos de que la "i" en el nombre responde realmente a "irregular", este número sale algo más tarde. La razón es sencilla: estuvimos en el FOSDEM, en Bruselas, del 23 al 24 de febrero. Puesto que Marcheu hizo una presentación allí y algunos de los miembros del proyecto también acudieron, retrasé este número a propósito para tener noticias al respecto.
Entretanto, la parte 1 y la parte 2 de nuestro artículo "Estado de Nouveau" está disponible en lwn.net.
¿Sabéis qué entiendo yo por sabotaje?. El sabotaje ocurre cuando el IRC está en completo silencio, termino el número en marcha (en aquel momento), lo envío para su publicación, y tanto Marcheu como Darktama empiezan a publicar sus cambios de Gallium en el repositorio principal (rama Gallium). Así que para que lo sepáis: ¡He sido oficialmente ofendido!
2. Estado actual
Ha empezado en serio el trabajo con el 3D. Marcheu ya me dijo que iba a trabajar en Gallium para las tarjetas NV3x antes de ir al FOSDEM, e intentaría rematarlo todo lo que pudiese, para pasar la responsabilidad del 3D en NV3x a otros miembros del equipo que tuviesen las tarjetas adecuadas.
En un par de días, se mantuvo fiel a su palabra, y comenzó a publicar su trabajo. El fin de semana del FOSDEM pmdata retomó el trabajo donde lo había dejado marcheu y publicó sus dos primeros parches.
Así que, un poco escondido, ya que se me pasó por encima un par de veces al revisar los registros del IRC: Marcheu ha estado trabajando en una solución para usar Gallium en tarjetas más antiguas. Hablará en más detalle sobre el asunto en nuestra sección en el FOSDEM algo más adelante. Publicó sus cambios (como comentamos) en la rama de desarrollo Gallium.
- ahuillet, pmdata trabaajan en NV30 (ahuillet empezará a final de mes)
p0g intentará trabajar en las NV1x en cuanto remate marcheu (p0g: naturalmente, si marcheu no acaba en un año o así, puedo dedicarme a trabajar algo en NV30 o NV40
- Marcheu trabaja en el driver Gallium para NV1x
- Darktama trabaja en NV4x y algo en NV5x
Stillunknown y Malc0 trabajan en el establecimiento de modo (RandR1.2)
Quería mencionar estos asuntos para evitar la acusación de que me estoy perdiendo cuestiones importante
Finalmente, el problema con las funciones Subir a pantalla / Bajar de pantalla en PPC se solucionó. Ahora el uso de PCIGart funcionará siempre bien.
Como indicamos en el último número, existían algunos problemas con el rendimiento del adaptador de texturas bicúbico en algunas tarjetas. Así que, tras algunas conversaciones con marcheu, stillunknown comenzó la implementación de un segundo adaptador:
- bilineal (por defecto)
- bicúbico (optativo).
Otro asunto tratado en los últimos números es el de MMioTrace y su inclusión en el kernel. En la LKLM se sugirió que se trasladase a una nueva plataforma del kernel: "ftrace". Está siendo desarrollada fundamentalmente por Ingo Molnar y Steven Rostedt, pero desconozco la existencia de alguna página que pueda dar más detalles. Lo único que he encontrado es un readme aquí: http://people.redhat.com/mingo/sched-devel.git/README
Ftrace ofrece todo tipo de facilidades de trazado en el kernel, y permite la conexión de otros módulos, que lo extiendan y ofrezcan funcionalidades adicionales. MMioTrace sería uno de sus primeros usuarios. En estos momentos, la gente del kernel y pq (con MMioTrace) apuntan a la inclusión en el kernel 2.6.26.
Se puede encontrar la discusión sobre la versión actual de MMioTrace en la LKLM aquí: http://marc.info/?l=linux-kernel&m=120387271214433&w=2
Bien, y ahora, vamos a la colección habitual de noticias cortas:
benkai está dedicando algo de tiempo a intentar hacer funcionar la suspensión/restauración en nouveau. En estos momentos está en una fase de "fallo y error" y no está seguro de su éxito. Resume sus avances en http://nouveau.freedesktop.org/wiki/Suspend_support
- Una vez que Marcheu remató su trabajo inicial en Gallium para NV30 y NV1x, quiere comprar una tarjeta NV5x y tirar por ahí (Editor: ¡guay!).
- Malc0 intentó solucionar algunos problemas del Randr1.2 en PPC. Kelnos probó sus cambios y tuvo buenos resultados. El único problema que tenía es que Nouveau pensaba que kelnos tenía un LVDS con dual_link, y al desactivar esa configuración, todo funcionaba bien, incluso en modo texto. sbriglie y moodrake proporcionaron ayuda adicional sobre el fallo y su solución.
Nouveau está siendo compilado en el servicio de pruebas (tinderbox) de freedesktop. Estado actual: Verde. http://tinderbox.freedesktop.org
- Marcheu recurrió a su pila de tarjetas y probó su compatibilidad con Randr1.2. Localizó un par de fallos en NV4, NV11 y NV20 (con números de fallo #14820 a #14825) de los cuales al menos uno se solucionó en un par de horas, una vez emitido en informe de fallo.
Así que ahora Randr1.2 funciona bien en la mayoría de las configuraciones y tarjetas NVidia, con únicamente un par de problemas pendientes en NV11 y NV17. De hecho, funciona tan bien que Marcheu intenta presionar a Malc0 y Stillunknown para que el código Randr1.2 sea el activado por defecto en Nouveau.
El plan actual es cambiar el sistema de establecimiento de modo por defecto en un mes o algo menos, esperar otro mes para ver cómo van las cosas, y luego eliminar el código antiguo. Un poco después de eso se empezaría a trasladar el código de establecimiento de modo al kernel. Sin embargo, eso implicaría la necesidad de dar soporte también al TTM en el DRM, ya que es también es precido para el establecimiento de modo.
3. Ayuda necesaria
Como siempre: consulta nuestra página TestersWanted. Y como queremos acelerar nuestro desarrollo para las NV5x, por favor poneos en contacto con nosotros si tenéis hardware disponible y queréis donarlo (cualquier tipo de tarjeta 8x00 y/o placas base PCIe). Por favor, ¡probad Randr1.2 antes de que pase a ser la opción por defecto!
En caso de que necesitéis ayuda con Nouveau, pensad en enviar un mensaje a la lista de correo o abrir un informe de fallo en Bugzilla. Es poco probable que se de ayuda en el canal IRC ya que se reserva exclusivamente para charlar sobre el desarrollo del controlador.
4. Especial: FOSDEM 2008
Bien, el último fin de semana de febrero tuvo lugar en Bruselas el FOSDEM. Desgraciadamente, no pude asistir, pero tenemos un par de enlaces sobre la charla de Marcheu: los videos están aquí: http://radeonhd.org/?page=fosdem_videos o ftp://ftp.suse.de/private/bk/fosdem-2008/ 2 es el nivel de calidad más bajo y 4 el mejor. El material de la presentación se encuentra aquí: http://icps.u-strasbg.fr/~marchesin/nvdri/fosdem2008.pdf
Pero esto no es todo... empecemos a lanzar preguntas a Marcheu y demás para que nos cuenten cómo discurrieron las cosas desde su punto de vista.
TiNDC:
- ¿Qué interés había en la charla y cómo fue recibida?
Marcheu:
- Creo que la charla fue bien recibida. Había una buena cantidad de asistentes y parece que coincidían en que comer fruta era bueno para la salud. ¡Comer fruta e ir a la sauna en la sala de desarrollo de X.Org eran las dos actividades que mantenían a la gente en forma!.
TiNDC:
- En la charla presentaste una solución para las tarjetas antiguas, sin funciones de sombreado, para Gallium3D. ¿Podrías comentarnos algo más, ya que no hay muchas referencias en el registro del IRC, y, por tanto, no se ha hecho mención en el TiNDC todavía?
Marcheu:
- Se trata de trabajo base para permitir que las tarjetas de funciones fijas puedan funcionar en Gallium. Hay más cosas en gallium además de la cola de proceso programable, y por ello creo que merece la pena reutilizar la plataforma incluso en el caso de las tarjetas con cola de proceso fija. Hice un primer intento hace unos meses, pero comencé escribiendo la parte de gallium, lo que resultó ser un error. Me di cuenta un poco tarde que no tiene sentido hacer cambios de la nada, ya que tienes que probarlos en un controlador. Ahora estoy atacando el problema a la inversa, haciendo antes un driver gallium sencillo para nv10 (sin texturas, por ejemplo).
TiNDC:
- ¿Cómo funciona? ¿Cómo funcionan las funciones de sobmreado en las tarjetas que no disponen de ellas?
Marcheu:
- En la cola de proceso programable, el controlador de estado emite instrucciones de sombreado que implementan estados fijos de OpenGL. En el caso de la cola de proceso fija, el controlador de estado traduce el mismo estado OpenGL a nuevas instrucciones, que son funciones fijas de sombreado. Estas instrucciones representan la funcionalidad de la cola de proceso fija, y se almacenan igual que las demás funciones de sombreado, y, por tanto, los detalles internos del funcionamiento de gallium no necesitan cambiar. Únicamente el frontend y los backend de gallium necesitan adaptaciones para manejar las intrucciones adicionales. Esta es la manera más directa de lograrlo.
TiNDC:
- Entonces, ¿quién trabaja en qué en estos momentos? ¿Qué tareas se acometerán a continuación?
Marcheu:
- Realmente quiero que funcionen en gallium las nv10 y nv30, así que trabajaré en ello mientras se necesite mi ayuda. Tras ello, iré a por las nv50, como ya comentaste.
TiNDC:
- Sin embargo, la sala de Xorg en el FOSDEM no se dedica solamente a Nouveau. Es un lugar donde los hacker de Xorg se reunen. ¿Hay alguna cosa interesante que se haya mencionado en las charlas que has tenido con gente de otros proyectos?
Marcheu:
- Sí, lo más interesante es lo que se aprende de los experimentos de otra gente (cosas como qué arquitecturas de software funcionan y cuáles no, qué soluciones son rápidas o lentas...). Puede ahorrarte una buena cantidad de tiempo. No estoy interesado en probar todas las soluciones posibles, ya que ello requiere implementar muchos prototipos y eso sería una gran pérdida de tiempo (por ejemplo, con la implementación del TTM o los espacios de intercambio). También intercambié ideas con Michael Meeuwisse (el de OpenVGA) sobre como podríamos tener funciones de sombreado compiladas como FPGA en tiempo real. Eso permitiría casi seguro una ejecución rapidísima de los sombreados, y la reserva dinámica de cuantas puertas de proceso sean necesarias para el uso actual de la tarjeta. Creo que es un aspecto en el que las tarjetas Open(VGA,Graphics) están por delante de las soluciones gráficas disponnibles.
TiNDC:
- Hay rumores de que no fuiste el único desarrollador de Nouveau en el FOSDEM. ¿Qué comentasteis?
Marcheu:
- Comida, cerveza y vegetarianismo (malc0 y ahuillet son, respectivamente, vegetarianos y semi vegetarianos :). Y, más en serio, pude conocer a ahuillet, benkai, malc0 y p0g en persona, lo cual es muy gratificante (y espero que ellos piensen lo mismo sobre mi ;-). Incluso a pesar de que trabajamos de forma regular en el mismo código, no nos habíamos conocido. Lo bueno de estos eventos es que puedes conocerte en persona y charlas sobre temas no técnicos. En lo que respecta a las conferencias, creo que los aspectos técnicos no son lo más importante, a que también se pueden tratar en línea antes o después del evento. Pero el aspecto social solamente puede ocurrir al conocerse en persona.
TiNDC:
- Desde septiembre hemos estado hablando sobre la posibilidad de lanzar un controlador únicamente de 2D como versión 1.0. ¿Se llegó a algún consenso al respecto?
Marcheu:
- Hay consenso sobre la necesidad de estabilizar la interfaz antes de eso. Creo que usar Randr1.2 por defecto y trasladar el establecimiento de modo al kernel vendrán pronto. El TTM puede llevar algo más de tiempo, dependiendo de cómo lo implementemos.
TiNDC:
- Phoronix también estuvo allí. ¿Conociste al señor Larabel?
Marcheu:
- Sí, aunque no tuvimos mucho tiempo para debatir. Este año el FOSDEM reunión a una buena cantidad de gente increible de X.Org, por lo que la discusión no fue muy extensa con ninguno de ellos. Espero poder acudir al XDC y así encontrarnos de nuevo.
TiNDC:
- En relación con Phoronix: ¿Cómo se repartió el hardware donado?
Marcheu:
- No era solamente hardware de phoronix, sino también donaciones de particulares. Aunque mis cosas habituales de viaje (portátil + ropa + cepillo de dientes) cabía en la mochila, había demasiado material, así que cogí una maleta solamente para el hardware. ¡Muchas gracias a los donantes!. Si no me equivoco, malc0 obtuvo una nv4, nv11, nv20, nv40. ahuillet una nv30gl. No sabía que p0g venía hasta que llegué a Bruselas (nos pilló por sorpresa), por lo que no le pude llevar nada específicamente para él. Todavía me queda una placa base + CPU y una CPU (de phoronix) que probablemente repartiré entre pmdata y ahuillet, aunque pmdata todavía tiene que pensárselo. O tal vez podríamos organizar una competición sobre quién logra que fucione antes glxgears y consigue el material ;-).
TiNDC:
- Así que... vosotros, afortunados, decidnos qué vais a hacer con esta donación. ¿Qué tipo de trabajo pensáis llevar ahora a cabo en Nouveau?
ahuillet:
- La NV30GL que conseguí es la tarjeta más potente que he tenido nunca en mis manos. De verdad, antes estaba funcionando con una NV28. La emplearé para comprender el funcionamiento de las tarjetas basadas en funciones de sombreado - que hasta ahora son pura teoría para mi - haciendo algún trabajo de 3D. Espero empezar con ello en abril (Editor: la respuesta de malc0 aparece algo más abajo)
TiNDC:
- El impartir charlas sobre "El estado de Nouveau" parece una buena tradición a estas alturas, partiendo desde el inicio del proyecto. ¿Mantendrás la tradición el próximo año?. O, vosotros, ¿pensáis volver el año que viene?
Marcheu:
- En el FOSDEM de 2006 solamente había un desarrollador de nouveau (yo). Fue el primer anuncio, por lo que no podía esperar más. En el FOSDEM 2007, había dos desarrolladores (Koala y yo). El FOSDEM 2008 vió la aparición de 4 desarrolladores (ahuillet, malc0, p0g y yo mismo), por lo que solamente podemos crecer exponencialmente a partir de ahí. Esa sería una buena tradición, a ver qué pasa con el FOSDEM 2009 y 8 desarrolladores de Nouveau :). Realmente espero volver al FOSDEM el próximo año. Acuden aquí cada día unos 4000 visittantes, por lo que la audiencia es mayor que el XDC/XDS, que solamente reune a desarrolladores de X.Org. Es una buena manera de llegar a más gente.
Malc0:
- Es demasiado pronto para asegurarlo, pero claro que me gustaría estar.
Además, Malc0 accedió a contestar un par de preguntas más sobre el estado actual de Randr1.2:
TiNDC:
- ¡Hola!. Ahora tienes un lote de hardware donado por Phoronix y otros y entregado por marcheu. ¿Qué vas a hacer con él? ¿Qué problemas queires solucionar?
Malc0:
Fundamentalmente lo he cogido para poder probar mi código en un espectro más amplio de tarjetas (para el inicio en frío, establecimiento de modo en el kernel, suspensión/restauración). Ahuillet me entregó una nv11 que creía que no iba a funcionar con Randr1.2 y pensaba arreglar, pero farece que va bien
TiNDC:
- Entonces, ¿cómo ves el estado actual de Randr1.2 en nouveau en estos momentos? Parece que Marcheu quiere deshacerse del código anterior :). Y si he entendido bien, o bien nosotros o el DRM en genral, tendrán el establecimiento de modo en el kernel antes de 2 o 3 meses.
Malc0:
Randr1.2 funciona bastante bien en estos momentos. Hay un par de problemas en nv11/nv17 en los que estoy trabajando (obviamente no podemos eliminar el código anterior hasta que el nuevo no funcione para todo el mundo). Un mes después de que Randr1.2 se convierta en el modo por defecto no sería demasiado complicado tener el establecimiento de modo en el kernel en un par de meses. Se ajusta a la estructura de Randr1.2 muy bien y únicamente espero que la gente de intel resuelvan los problemas de un DDX para un establemcimiento de modo en el kernel :). Y, por supuesto, necesitamos TTM...
TiNDC:
- Sí, si he entendido bien a darktama, Nouveau (en NV4x) fallará tarde o temprano debido a los problemas de falta de memoria debidos a pérdidas de memoria y a la gestión de la misma de forma simplista...
Malc0:
- Es eso, y que la infraestructura de establecimiento de modo del kernel presupone que estás usando la API del TTM. Tal vez exista alguna posibilidad de evitarlo que darktama/marcheu puedan vislumbrar, pero realmente pienso que los beneficios de cambiar a un gestor de memoria adecuado convertiría ese esfuerzo en poco ambicioso. (Editor: en esto coinciden marcheu y darktama)
TiNDC:
- ¿Hay alguna otra cosa interesante que te gustaría comentar sobre el FOSDEM?
Malc0:
No demasiado. Algunas de las charlas de X.org fueron muy interesantes (aunque muy calientes), y la cerveza y estar con los demás fue estupendo, pero dejo a tu criterio si quieres poner esto en el TiNDC
Editor: si os estáis preguntando a qué vienen las alusiones a "sauna" y "caliente", la sala de X.org estaba caliente como un horno
Así que vayamos a ver algunas fotos:
¿encontraron p0g (izquierda) y malc0 (derecha) otro fallo más de la BIOS?
ahuillet (izquierda) y marcheu (derecha) preparando la charla
"Oh, ¡guau!, NV4x funciona de verdad - ¡increíble!". Marcheu presentando OpenArena en Nouveau (Marcheu: "¡Hey, esto todo es por culpa de daniels y sus bromas sobre glxgears! )"
Las fotos fueron tomadas por ahuillet, bbartek y Michael Larabel. Muchas gracias. Y gracias a marcheu, Malc0 y ahuillet por responder a mis preguntas.