m = map = mmap(NULL, 0x2000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, res + 0x601000);
Après test (avec un petit printf)
res a la même valeur que je le définisse manuellement (0xfd000000) ou que ton code le trouve lui même. Et oui je l’exécute en root sinon j'ai un
Permission denied mais ça c'est juste parce que nouveau donne pas les mêmes droits c'est pas trop un problème. Je pense pas que ça vienne des autres arguments.
D'après le man de mmap:
offset must be a multiple of the page size as returned by sysconf(_SC_PAGE_SIZE).
C'est le seul truc auquel je pense. Après test sysconf(_SC_PAGE_SIZE) retourne 4096. Donc 0xFD601000 (4250931200) est-il multiple de 4096 ? Euh ... oui. Donc c'est pas ça :/
EDIT: le problème vient de MAP_SHARED ou de fd puisque ça 'marche' quand je met "MAP_ANON|MAP_SHARED".
Après je pense pas que MAP_ANON soit adapté ici donc forcement le page flip ne marche pas. Le problème vient peut-être du fait que j'utilise nouveau ?
J'ai mis /dev/dri/card0 à la place de /dev/nvidia0 qui existe et l'ouverture marche puisqu'aucune erreur ne s'affiche (fail open).
Demain je fais une liste chainée dans le driver noyau pour gérer plusieurs paires de lunettes en même temps. Je ferai une mise-à-jour sur le git à ce moment là. Après j’essayerai de faire la gestion des lunettes 3D Vision intégrés par DDC (là encore ce sera un "portage" user space -> kernel space). Prévu pour demain encore : l'amélioration de glQuadBufferEmu pour utiliser proprement le driver. Ça devrait permettre de stabiliser le mode FRAMESEQUENTIAL.
Si y'as des possesseurs de cartes graphiques Nvidia (même sans kit 3D) qui passent par là ce serait cool de tester le petit programme de Fredz 😉