2760

A la valeur par défaut ça ne donne pas bien non. 15.6 millisecondes moins la précision hasardeuse sous Windows pour en avoir utilisé ça ne permet pas d'avoir la sensation d'une animation fluide.

Malheureusement c'est un gros défaut de Windows, ils n'ont jamais permis de se synchroniser sur la fréquence d'affichage autrement qu'en faisant du polling. Et c'était pire à l'époque où le noyau était encore moins granuleux. Résultat toute application qui voulait avoir une UI à peu près fluide (comprendre > 20 fps et stable) devait utiliser 100% du CPU ou faire du Direct3D (qui requiert un SDK séparé de 500+ Mo déjà à l'époque). Les autres kernels sont tous beaucoup plus granuleux et n'ont pas des performances ou une autonomie de merde pour autant.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2761

Si tu en es au point de te préoccuper de la fluidité de l'animation au-delà de 20 fps, en toute logique tu te préoccupes aussi du tearing, et donc tu te synchronises sur le rafraîchissement de l'écran.

Et tu n'as pas besoin de faire du polling sauvage ou du Direct3D lourd pour ça : DirectDraw supporte la méthode WaitForVerticalBlank depuis au moins DirectX 7, qui est sorti en 1999. Bien sûr c'est obsolète et on utiliserait probablement autre chose de nos jours, mais ça existe.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2762

Quoi de mieux que de se hooker sur l'IRQ VSync embarrassed

(en parlais de vsync: https://lwn.net/Articles/354596/ je sias pas le bon topic mais flute)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2763

Ah ? Ok, je ne connaissais pas cette méthode (et manifestement personne, c'est pour cette raison d'ailleurs qu'aujourd'hui il n'y a presque plus aucun émulateur utilisable sous Windows sad).
Mais comment Windows peut-il s'en sortir sans bouffer le CPU, puisque le noyau n'a pas une résolution suffisante pour "endormir" le processus juste le temps nécessaire à la VBlank ?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2764

Je n'ai jamais décortiqué comment ça marche, mais je pense que la carte graphique déclenche une interruption à chaque VBlank, donc c'est assez facile d'utiliser 0% de CPU pendant l'attente (contrairement à un timer qui va réveiller ton CPU périodiquement même s'il n'y a rien à faire).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2765

./2760 > Mais les fonctions timeBeginPeriod() et timeEndPeriod() ont justement été faites pour contrôller ton animation plus précisément si le besoin se faisait sentir. (C'est un API très très vieux)
Il s'est juste avéré que par l'implémentation du truc, c'était plutôt une mauvaise idée qu'une bonne idée. (Car ce timer, contrôlable par n'importe quelle application userland, impacte directement le noyau, et tous les autres processus)
./2761 > pencil Direct3D supporte ça (par défaut) depuis des plombes également. Pour OpenGL, je sais plus si c'était contrôlable par les applications à l'époque (OpenGL en tant qu'API n'est pas très configurable), mais la fonctionnalité existait aussi. (En gros, le mécanisme implémenté par ces API, c'est que quand tu appelles la fonction de présentation de ta scène, ça swap les buffer au bon moment, et pendant ce temps, ton process est en attente)
./2763 > Je suis pas persuadé que Linux ait jamais disposé d'une plus grande précision que Windows. De mémoire, à l'époque (avant le tick-less) tu choisissais une fréquence, 100Hz ou 1000Hz, à la compilation du noyau, et ensuite, c'était gravé dans le marbre. (Ok, de fait, 100Hz c'est mieux que 64Hz, mais à part ça, c'est tout)
C'est complètement documenté que Sleep() sous Windows a dans le meilleur des cas la précision du timer global. Tout comme il est documenté que usleep() sous Linux dépend de la précision du timer système. (Par contre tu peux sans doute faire mieux avec nanosleep() aujourd'hui, mais je crois pas qu'il y ait de réel équivalent (documenté) sous Windows)

Et ouais, tout est basé sur des interruptions. Le Timer système y compris. C'est juste un moyen comme un autre de réveiller le système, mais c'est le seul auquel tu as "directement" accès en mode utilisateur… sorry
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

2766

(Les vrais hommes désactivent les interruptions et utilisent nop, de toute façon embarrassed)

2767

C'est con, ça m'aurait beaucoup servi à l'époque tout ça, mais je n'avais pas trouvé…
Malheureusement en javascript si tu fais un setTimeout(1) et que le browser te donne aucune garantie en-dessous des ~20 ms c'est un peu con. Et avant WebGL les sites devaient bien faire des animations d'une certaine manière.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2768

Ouep, mais tout ça date de l'époque où les ordinateurs ne disposaient que d'une seule horloge (hors RTC). Aujourd'hui, les choses ont un peu changé (HPET, etc.), mais je suis pas très au fait de ce que tu peux précisément faire de mieux avec. Et c'est pas disponible partout, de toutes façons.

Le problème des minuteries sous Windows tient en réalité plus du fait que tout soit calé sur la même minuterie qu'autre chose, et que beaucoup de gens utilisent la minuterie à mauvais escient (Sleep(1) pour faire de l'attente active, etc.).
Au final, tout ça découle du fait que les OS grands publics ne sont pas des OS temps réel, mais certains aimeraient les considérer comme tels. (Ils n'ont pas vocation à l'être, et heureusement, sinon on peut être sûr qu'il y aurait un écosystème encore plus bordélique)

Sincèrement, aujourd'hui, je me pose encore la question de comment synchroniser un programme sur le temps autrement qu'avec des spin wait. (Quand bien même tu descendrais le timer à 1ms, ça reste beaucoup trop imprécis pour synchroniser quoi que ce soit précisément)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

2769

Synchroniser avec quoi ? Un événément extérieur, une heure, quelque chose de périodique ?

Mais s'il te faut un temps de réponse à la milliseconde ou moins, c'est pas vraiment faisable avec un OS non temps-réel de toute façon (et quand bien même ce serait faisable, ça ne serait pas du tout garanti).

Si c'est périodique, et à supposer que c'est plus la régularité que le temps de réponse absolu qui compte, tu peux toujours mesurer l'imprécision (avec une fonction comme QueryPerformanceCounter, même s'il semble qu'il y ait quelques complications pour celle-là) et compenser en conséquence.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2770

Ouep, tu peux mesurer et compenser, mais ça se fera par de l'attente active smile
Effectivement, dans la majorité des cas, la précision absolue n'est pas importante pour chaque évènement mais plus la régularité. Imagine par exemple que tu veuilles jouer une vidéo à 24Hz, ou à 59,94Hz… T'as besoin quand même d'une certaine précision pour caler tes frames, mais bon, tu peux pas non plus boucler indéfiniment en attente active, sinon c'est désastreux pour l'ordinateur. (Du coup, dans ce cas, augmenter la précision du timer est une solution qui a un coût plus raisonnable, bien que ce ne soit pas parfait)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

2771

Pour le coup, utiliser un timer dans un cas comme ça (comme pour tout ce qui nécessite d'être synchrone avec le rafraîchissement d'écran), je trouve que c'est raisonner à l'envers. Il vaut mieux se synchroniser sur l'écran, et décider à chaque VBlank si tu dois mettre à jour l'image ou pas (ou sauter une ou plusieurs images, pour le cas rare où le framerate de la vidéo serait supérieur à la fréquence de rafraîchissement de l'écran, ou si le PC a ramé et qu'il y a du retard). Même si tu avais un timer super précis qui te permettait de faire du 59.94 Hz exactement avec zéro jitter, ça ne te servirait pas à grand chose, vu que tu ne pourrais pas afficher l'image suivante de la vidéo avant le prochain VBlank (ou alors tu as du tearing, et c'est moche).

Si en plus ta vidéo a du son, et que tu veux préserver la qualité audio (donc ne pas faire de réechantillonnage à la volée), tu n'as de toute façon pas le choix : c'est le timing audio qui dirige tout.

Sur PC on a quand même le cas le plus pourri, à savoir les timers système, l'écran et l'audio qui utilisent chacun une source d'horloge distincte, et non synchrone avec les autres. C'est un beau cas d'école pour les algos de synchro tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2772

C'est pas mieux sur certain systèmes embarqué et meme des consoles tu sais. Meme si il y a un certaine correlation (je ne parle aps des machin qui ne sont que des PC vendu sous le nom de console, ca incluse tout ce qui a un systeme d'exploitation d'origine non spécifique)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2773

Sur la Jaguar au moins, toutes les horloges sont synchrones embarrassed

enfin le hardware supporte l'asynchrone, mais ce n'est pas utilisé dans la console smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2774

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2775

Intéressant. L'idée de micro-paiements intégré l'est sans doute davantage encore à mes yeux. On pourrait par exemple s'accorder un crédit mensuel configurable (ex : 20€) et en surfant lâchant 20cts par ci pour une news bien écrite, 1€ par là pour un article conséquent et bien renseigné...
Ça rejoindrait alors des initiatives comme Patreon en simplifiant le processus.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

2776

--

2777

Meowcate (./2775) :
Intéressant. L'idée de micro-paiements intégré l'est sans doute davantage encore à mes yeux. On pourrait par exemple s'accorder un crédit mensuel configurable (ex : 20€) et en surfant lâchant 20cts par ci pour une news bien écrite, 1€ par là pour un article conséquent et bien renseigné...Ça rejoindrait alors des initiatives comme Patreon en simplifiant le processus.
C'était pas un peu l'idée de "flattr" ça ?

2778

Je ne connaissais pas, bien vu.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

2779

2780

2781

Une nouvelle fonctionnalité sur yAronet ?
Ça et l'application mobile, on va être au top.
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

2782

Pen^2 (./2780) :
http://www.zdnet.fr/actualites/le-push-arrive-sur-navigateur-avec-firefox-44-39831752.htm(et sinon la stabilité ?)
Tu as des problèmes particuliers de stabilité? Moi je n'en ai pas vraiment.
avatar

2783

C'est franchement pénible, je dois le redémarrer à peu près tous les jours, sinon il ralentit sensiblement allant jusqu'à freezer régulièrement plusieurs dizaines de secondes... J'ai l'impression qu'il supporte mal la mise en veille.
Il faut dire que j'ai beaucoup de fenêtres et d'onglets ouverts, mais à la rigueur je ne vois pas en quoi c'est une excuse du moment que j'ai de la RAM.

2784

Uther (./2782) :
Pen^2 (./2780) :
http://www.zdnet.fr/actualites/le-push-arrive-sur-navigateur-avec-firefox-44-39831752.htm(et sinon la stabilité ?)
Tu as des problèmes particuliers de stabilité? Moi je n'en ai pas vraiment.
Idem, stable chez moi.

2785

Jamais de soucis avec Firefox, mes nombreux onglets d'ouverts et mes modules chargés.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

2786

Pen^2 (./2783) :
C'est franchement pénible, je dois le redémarrer à peu près tous les jours, sinon il ralentit sensiblement allant jusqu'à freezer régulièrement plusieurs dizaines de secondes... J'ai l'impression qu'il supporte mal la mise en veille.
Tu es sur que tu n'as pas d'addon qui ai mis le bordel dans ton profil? C'est souvent la principale source de problèmes. Essaye de lancer un "Réparer Firefox" dans le "about:support" ça te remet un profil tout propre avec juste ton historique et tes favoris de sauvegardés.
avatar

2787

Uther (./2786) :
Pen^2 (./2783) :
C'est franchement pénible, je dois le redémarrer à peu près tous les jours, sinon il ralentit sensiblement allant jusqu'à freezer régulièrement plusieurs dizaines de secondes... J'ai l'impression qu'il supporte mal la mise en veille.
Tu es sur que tu n'as pas d'addon qui ai mis le bordel dans ton profil? C'est souvent la principale source de problèmes. Essaye de lancer un "Réparer Firefox" dans le "about:support" ça te remet un profil tout propre avec juste ton historique et tes favoris de sauvegardés.
Ouep, j'ai eu (jadis) ce problème... c'était un add-on foireux.
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

2788

j'ai souvent des messages de plantage de Firefox le matin sur un poste Windows (avec parfois un seul onglet d'ouvert et aucune extension).
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

2789

j'ai de temps à autre des BSOD mais c'est visiblement la faute de flash+W10+pilotes :/
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

2790

Mon écran est souvent trop jaune quand j'utilise firefox, mais c'est peut être parce que j'utilise f.lux à côté.
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741