Démarrage d'un projet de développement de pilote libre pour les cartes vidéo NVidia

Posté par  . Modéré par Jaimé Ragnagna.
Étiquettes :
0
20
mar.
2006
Matériel
Lors du Fosdem 2006, se sont tenues diverses conférences spécifiques à X.org. Stéphane Marchesin, au cours de l'une de celles-ci, a présenté ses travaux relatifs à la création de pilotes libres pour les cartes vidéos NVidia.

L'un des outils créés pour l'occasion enregistre les changements faits au niveau des registres de la carte vidéo sur le bus PCI, en particulier quand certaines commandes graphiques sont exécutées.

Inutile de s'emballer cependant, il faudra tout de même un certain temps avant d'avoir les informations nécessaires pour écrire un pilote. Des pilotes 3D accélérés existent (voir le projet Utah-glx), mais ils n'ont pas été mis à jour depuis longtemps, et n'ont pas été migrés vers DRI. De même, un pilote existe pour BeOS/Haiku.

Il existe très peu de documentation pour les chips NVidia, le peu d'informations existantes a été déduit des pilotes 2D de Xfree écrits par NVidia (voir la page dédiée de rivatv).

L'intérêt d'un pilote libre est évident pour ceux qui n'ont pas une machine x86 pour faire tourner les pilotes de NVidia, alors que la carte peut être physiquement branchée sur le système (machines PowerPC par exemple). De plus, ces pilotes ne sont plus mis à jour pour les cartes trop anciennes, donc il sera de plus en plus difficile d'utiliser celles-ci avec une version récente du noyau.

La semaine dernière sur la ML du noyau, l'on a encore eu droit à quelqu'un qui voulait des pilotes binaires, parce que ce serait mieux pour lui:
http://www.ussg.iu.edu/hypermail/linux/kernel/0603.1/0050.html
Il faudrait que certains arrêtent la confusion entre le noyau (ses sources, sa portabilité), et sa version compilée pour x86 (qui est une implémentation particulière, bien que très répandue).

Je n'ai pas trouvé de transcription texte de sa conférence (ni de capture vidéo ou audio), donc si vous avez des liens, postez-les en commentaires.

Aller plus loin

  • # Bon courage

    Posté par  . Évalué à 3.

    Je souhaites bon courage à stéphane par ce que ça ne va pas être simple.
    J' avais déja entendu parlé du pilote 3d beos, mais je ne savais pas qu' il se basait sur mesa.
    En étant réaliste, ça serait bien que nvidia donne un coup de main pour ses anciennes cartes, parce que en pilote 3d opensource , c 'est ATI qui a l' avantage.
    D' ailleurs il semble que stéphane ait participé a DRI , c' est bon signe.
    • [^] # Re: Bon courage

      Posté par  . Évalué à 3.

      ...parce que en pilote 3d opensource , c 'est ATI qui a l' avantage.

      Avantage pas vraiment énorme puisque la situation d'ATI a vachement stagné depuis les 9200.
      A moins que j'aie raté les derniers chapitres de l'histoire...
      • [^] # Re: Bon courage

        Posté par  . Évalué à 4.

        Oui, en effet !
        Il me semble que dans les dernières versions de Xorg, il y ait un support expérimental de la 3D de cartes ATI plus récentes (x300).
        Mais apparemment, on n'aurait pas encore atteint le niveau de support des cartes anciennes (<= 9250).
        • [^] # Re: Bon courage

          Posté par  . Évalué à 1.

          Le support DRI (driver 3D open source) pour les cartes ATI va jusqu'aux X850. Le driver n'est pas encore aussi stable que pour les anciennes cartes <9200 mais point de vue fonctionnalitées il n'a pas grand chose à envier.
          • [^] # Re: Bon courage

            Posté par  . Évalué à 4.

            Question performances, ma Radeon 9600 Pro ramouille légérement à faire tourner l'économiseur d'écran de texte en 3D donc c'est pas encore tout à fait ça je trouve...
            • [^] # Re: Bon courage

              Posté par  . Évalué à 6.

              Il existe un benchmark qui permet de se donner une idée de la différence de performance. Il est vrai que fglrx est devant mais de nombreuses optimisations dans le driver libre sont possibles cependant pour le moment l'essentiel du travail porte sur les fonctionnalités.

              http://www.mail-archive.com/dri-devel%40lists.sourceforge.ne(...)

              Je vous conseille de parcourir le thread car l'on y donne des explications sur les raisons de certaines de ces différences.

              De plus, est-tu sur d'avoir l'accélération 3D activé (glxinfo doit te dire direct rendering enabled). Si oui alors je te conseil de tester les derniers drivers (depuis le cvs) car il s'est énormement amélioré ces derniers temps. Je serai fortement étonné qu'un bête économiseur d'écran rame alors que quake3 ou encore ut2004 sont parfaitement jouable :)
  • # Peut-être bientôt une vidéo de la conférence...

    Posté par  . Évalué à 4.

    http://forums.lugradio.org/viewtopic.php?t=1831
    I was at Fosdem in Brussels this weekend and attended all but one of the scheduled talks on and around the Xorg-project. There was one talk from a french dude called Stephane Marchesin, who took on the heavy burden to develop a full OpenSource 3D-accelerated driver for the nvidia chips (see here). He's mainly targeting the line of chips starting with NV4x (everything like Geforce 6x00). While it for sure a huge task to take on he's confident to be able to get it done. He has a project-page on this.

    This talk was recorded with a video-camera and should soon appear somewhere on the net. I sat next to the person who did this recording and got his contact. I'll give you an update on this once I get the download URL for the video of the talk.

    J'ai envoyé un e-mail à l'auteur du message, je vous tiendrais au courant.

    Merci à Stéphane pour cette initiative en tout cas et bonne chance...
  • # Bon courage!

    Posté par  . Évalué à 6.

    Bon courage!

    Mais j'ai hélas peur que quand les drivers seront "utilisables", les appli 3D pirouette-cacahuète-tralala-toutes-belles nécessiteront la génération supérieure au NV4x... et il faudra recommencer avec le NV5x, etc etc etc...

    Pourquoi ne pas tenter de capitaliser sur un projet comme OpenGraphics ?

    De plus, la plate-forme x86 devient la plate-forme de convergence (même les Macs, maintenant...), ce qui réduit l'intérêt du projet (problème de portabilité binaire et de dépendance au vendeur

    C'est sur, du "100% libre, c'est bien" (c)(tm), le prix à payer est élevé.
    • [^] # Re: Bon courage!

      Posté par  . Évalué à 10.

      Il me semble que le reverse engineering s'effectue sur une nv5x Stéphane ne souhaite pas s'intéresser aux vieilles cartes mais aux nouvelles.

      OpenGraphics ne pourra pas atteindre le niveau des cartes NVidia ou ATI sans un investissement financier conséquent. Donc meme s'il s'agit d'un projet louable on ne peut se permettre de se restreindre à lui seul. La diversité est nécessaire et souhaitable. Par ailleur le prix des cartes sera certainement bien trop supérieur à celle de nvidia & ati avec des performances inférieur.

      Il y a eu un long thread sur la mailing list du noyau linux sur les drivers propriétaire. Je partage l'avis d'un grand nombre de protagonistes de cette discussion, à savoir que l'on ne peut pas se satisfaire de drivers propritaires ! C'est a mon sens un paradoxe d'avoir un noyau libre et des modules propritaires. Comment savoir ce que fait ce module ?

      De plus d'un point de vue sécurité l'opacité des cartes graphiques caches de nombreuses failles. Ainsi avec les drivers fglrx (et très probablement avec ceux de nvidia) il est possible en temps que simple utilisateur d'accéder à la mémoire du système (même celle que l'on ne devrait pouvoir accéder).

      Cependant le reverse engineering n'est pas la seul voie. De nombreuses personnes tentent de convaincre les constructeurs qu'il serait plus intéressant pour eux d'ouvrir leur driver. De ce point vue Sun Microsystem donne l'example (à mon avis).
  • # J'espère que...

    Posté par  . Évalué à -2.

    J'espère que nVidia ne va pas arrêter pour autant son driver.
    On peut dire ce qu'on veut, un driver propriétaire qui fonctionne ça reste mieux qu'un driver libre qui ne fonctionne pas.

    je n'en souhaite pas moins une bonne persévérance à tous les contributeurs de cet ambitieux projet.
  • # Quelle carte achetter ? avec des drivers 3D opensource ?

    Posté par  (site web personnel) . Évalué à 1.

    Que conclure donc ?
    * ATI : r300-
    * ATI mobility : qu'elle est la plus recente supportant dri ... pas la X1400 en tout cas
    * nvidia : nv seulement 2D non ?
    * Intel : ...

    gpg:0x467094BC

    • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

      Posté par  (site web personnel) . Évalué à 1.

      Question de personnalité... J'ai pris ATI pour mon portable il y a un an (parce que je connaissais déjà fglrx), si c'était à refaire je prendrais sans doute NVidia (parce que fglrx ne gère pas simultanément DRI et le compositing... pas sous Xorg en tout cas).

      J'ai essayé quelque temps r300, mais c'était sans doute à une époque trop lointaine puisque je n'ai jamais réussi à avoir la petite mention "Direct rendering: Yes" ni à dépasser les 20FPS sur glxgears en plein écran (alors que fglrx me donne des valeurs de folie).

      Donc mon commentaire est inutile, si ce n'est qu'il tente d'étouffer le troll NV/ATI dans l'oeuf :P
      • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

        Posté par  . Évalué à 0.

        perso j'ai une ATI sur mon fixe et une nvidia sur mon portable. Sans hésiter la prochaine sera un nvidia. Trop de problème avec l'ATI !! La nvidia marche nickel et pas de problème pour l'accélération 3D (avec les drivers proprio)
    • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

      Posté par  . Évalué à 3.

      Intel dispose du meilleur support opensource (de plus, si je ne m'abuse, c'est intel qui paye des développeurs pour celà). Malheureusement leur carte 3D n'est pas performante comparé à NVidia ou ATI.

      ATI driver jusqu'aux X800 (mobility compris). Les X1xxx ne sont pas supportées (même la 2D n'est pas supporté sur ces modèles).

      NVidia en cour...
      • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

        Posté par  . Évalué à 1.

        Malheureusement leur carte 3D n'est pas performante comparé à NVidia ou ATI

        Ceci étant, comment se positionnent-elles (niveau perfs) face aux dernières ATI supportées par le driver Open Source ? Et est-ce qu'elles sont "suffisantes" pour des jeux pas trop gourmands comme tuxracer ou pour de la 3D "sérieuse" comme xgl ?

        Autre chose : est-ce que les Intel récentes supportent les shaders ?
        • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

          Posté par  . Évalué à 1.

          J'ai une intel 855GM sur mon portable (pas du tout une foudre de guerre donc) et bzflag passe sans problème. J'ai pas essayé avec tuxracer cependant. Concernant la 3D, les premières machines de démo d'apple pour OS X ne tournaient-elles pas avec des cartes graphiques intel ? Si c'est bien le cas, j'imagine que ça doit être suffisant pour xgl.
        • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

          Posté par  . Évalué à 3.

          Tu trouveras certainement des benchmarks sur internet (sur des sites comme tomshardware). Néanmoins ces cartes sont plus que suffisante pour faire tourner Xgl (actuellement bcp des développeurs d'Xgl utilisent des cartes intel) et elles possédent d'ailleur le meilleur support.

          Elle supporte aussi les pixel shader, je crois pas qu'elle supporte les vertex shader (il me semble qu'elle n'ont pas de tnl mais je peux me tromper je dis ca de mémoire).
      • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

        Posté par  (site web personnel) . Évalué à 4.

        Question, ces cartes intel avec drivers OpenSource (le rêve :) ) existent-elles pour autre chose que des portables ... si oui, ca m'intéresserait fortement (j'en ai assez du driver proprio nvidia ... et du driver libre sans 3D)
        Quoique ... si il y a un driver libre pour NVidia qui sort ...

        Les cartes intel ne sont peut être pas super performantes ... mais on a de la 3D libre au moins, de quoi lancer blender de temps en temps et ne pas ramer trop lorsqu'un logiciel anodin utilise l'acceleration materielle.
        • [^] # Re: Quelle carte achetter ? avec des drivers 3D opensource ?

          Posté par  . Évalué à 4.

          Je ne crois pas qu'il existe encore des cartes Intel indépendantes (je crois me rappeler qu'il y a eu des i740 AGP, apr xeempe, il y a longtemps), mais il doit exister des cartes-mères pour Pentium 4 ou Pentium M incluant le chipset graphique que l'on trouve dans les portables.
          Tiens, rien que l'iMac Intel, d'ailleurs, qui a une GMA955.
  • # Rejoindez nous dans NouVeau on s'amuse bien

    Posté par  (site web personnel) . Évalué à 10.

    Bon, je suis un peu pris au dépourvu par cette annonce. Merci en tout cas pour les encouragements.

    J'ai différentes réponses à des questions/remarques :

    - Les diapos de la présentation sont là : http://icps.u-strasbg.fr/~marchesin/presentation-nvidia-fosd(...)

    - Je travaille pour l'instant majoritairement sur NV40 (j'ai un NV44 donc geforce 6200). L'architecture du NV40 est très proche du NV30 (donc geforce 5x00), et il semble possible d'unifier le code d'envoi de primitives pour supporter aussi NV10 et NV20 (comme c'est fait dans le CVS nv10_swtcl.c). De la même manière, je pense que le support du G70 (geforce 7x00) restera assez proche.

    - Je n'exclus pas le support des vieilles cartes comme NV03/NV04/NV05, en tout cas au moins un support minimal. En particulier le NV03 n'a pas actuellement de support de la 3D du tout, ni libre ni propriétaire.

    - Je vais pinailler mais L'un des outils créés pour l'occasion enregistre les changements faits au niveau des registres de la carte vidéo sur le bus PCI n'est pas tout à fait exact. Ce que l'outil fait est simplement d'afficher le contenu de la fifo de commandes de la carte.

    - Si quelqu'un récupère la video de la conf, je veux bien l'avoir aussi. Donc n'hésitez pas à me faire un email si vous tombez dessus.

    - J'en profite aussi (et surtout) pour lancer un appel à contributions : si vous avez envie de participer, vous pouvez venir sur #dri-devel sur freenode, et/ou m'envoyer un mail. Il y a du travail pour tous, surtout pour découvrir les fonctionnalités des cartes, ça ne demande pas énormément de compétences en programmation et c'est une partie très importante du travail.
    • [^] # Re: Rejoindez nous dans NouVeau on s'amuse bien

      Posté par  . Évalué à 5.

      Et à tout hasard, le projet aurait-il besoin de l'aide de quelqu'un n'ayant absolument aucune compétence en programmation ?

      (Par exemple pour des tâches triviales, qu'il serait dommage d'affecter à ceux capables de faire des choses plus complexes)

      Si je ne peux vous aider en rien, je vous souhaite tout de même bien du courage ;)
    • [^] # Re: Rejoindez nous dans NouVeau on s'amuse bien

      Posté par  . Évalué à 2.

      - Je travaille pour l'instant majoritairement sur NV40 (j'ai un NV44 donc geforce 6200). L'architecture du NV40 est très proche du NV30 (donc geforce 5x00), et il semble possible d'unifier le code d'envoi de primitives pour supporter aussi NV10 et NV20 (comme c'est fait dans le CVS nv10_swtcl.c). De la même manière, je pense que le support du G70 (geforce 7x00) restera assez proche.

      A ce propos, les cartes plus récentes ont un GPU programmable, donc ce doit être coton, si tu ne connais pas leur jeu d'instructions, non?

      - Je n'exclus pas le support des vieilles cartes comme NV03/NV04/NV05, en tout cas au moins un support minimal. En particulier le NV03 n'a pas actuellement de support de la 3D du tout, ni libre ni propriétaire.

      Tiens d'ailleurs, sur le ftp de nvidia, où se trouve toutes les versions de leur driver, les premières versions avaient été faites en partenariat avec SGI et VA Linux. Il se trouve que ce sont les chips supportés par ce premier driver qui ne sont plus supportés dans les versions >= 7664, alors coincidence? complot?
      ftp://download.nvidia.com/XFree86_40/0.9-1/ (le tout premier driver)

      - Je vais pinailler mais L'un des outils créés pour l'occasion enregistre les changements faits au niveau des registres de la carte vidéo sur le bus PCI n'est pas tout à fait exact. Ce que l'outil fait est simplement d'afficher le contenu de la fifo de commandes de la carte.

      Oui, pardon, j'ai lu rapidement le peu d'informations sur la page de sourceforge, donc voilà.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.