J’utilise le pilote le plus récent intégré à la distribution (535). Nvidia prend en charge l’EGL depuis un certain temps il me semble… Enfin bref, de toute évidence le problème est autre puisque j’ai réussi à le résoudre, mais je ne vois pas très clairement pourquoi ça a marché.
Ma méthode a consisté à passer en gestion à la demande (avec la commande prime-select on-demand), et redémarrer ensuite. À partir de là, si je lance Firefox en sollicitant le rendu sur Nvidia (__NV_PRIME_RENDER_OFFLOAD=1), ça marche : le GPU1 détecté par Firefox est « NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2 », et le rendu est performant comme attendu.
Cela dit, d’habitude je ne procède pas comme ça. En effet, tant que je ne compte utiliser que la carte intégrée (Intel), je ne me contente pas de laisser en mode à la demande :
Je passe en mode Intel (prime-select intel)
Je ferme/rouvre la session
Je supprime la carte Nvidia de la base de données PCI du système
Lorsque je décide d’utiliser la carte dédiée (Nvidia) :
Je rescanne le hub PCI sur lequel elle est branchée, de façon à la rajouter de nouveau à la base PCI, et
Je passe en mode Nvidia (prime-select nvidia)
Je ferme/rouvre la session
Cette méthode est certes plus compliquée que de laisser simplement en mode à la demande tout le temps et d’activer la décharge de rendu (« Prime Render Offload ») lorsque souhaité, mais ce n’est pas pour rien. Lorsque le mode à la demande est activé, ou même en mode Intel mais sans retirer la carte dédiée de la base PCI, certains problèmes se posent :
Même lorsque je ne la sollicite pas, la carte dédiée s’allume pour un oui ou pour un non
Lorsqu’en plus le mode à la demande est activé, certains ralentissements peuvent se produire lors d’un allumage intempestif
Donc alors même qu’elle n’est pas utilisée, la carte peut « clignoter comme un arbre de Noël », ce qui est peu efficace d’un point de vue énergétique (pas sympa quand on est sur batterie), et susceptible de réduire sa durée de vie. Lorsque je ne l’utilise pas, elle doit rester éteinte. Une fois en mode Intel et avec Nvidia supprimé de la base PCI, il n’y a plus de clignotement (ou très rarement). Ce phénomène est très présent sous Windows également, où j’aimerais avoir une solution similaire, mais je n’ai rien trouvé de satisfaisant.
Lorsque je passe d’un mode Nvidia Prime à l’autre (entre Intel, Nvidia et à la demande), je ne redémarre pas entre les deux. Or, lors du changement de mode, l’utilitaire prime-select met à jour le disque mémoire initial (initramfs). Il est possible qu’en fonction du contenu de ce fichier, certaines actions se fassent qui rendent possible ou pas le rendu matériel depuis Firefox, mais je me demande bien de quoi il s’agit, surtout que par ailleurs, les jeux en OpenGL classique hors Firefox fonctionnent toujours bien.