Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/01/2011, à 16:32

Ypnose

Ioquake3, usage du CPU

Aprés avoir testé ioquake3 pour Quake 3 Arena et avoir aussi téléchargé OpenArena, j'ai fait un constat: lorsque la synchro verticale est désactivée (seta r_swapInterval "0"), les jeux consomment pas moins de 60% de CPU (sur mon Pentium 4 HT 3.2 GHz).

60% pour Quake 3, un peu beaucoup non?

Lorsque j'active la synchro (seta r_swapInterval "1"), ces derniers ne consomment que 20% de CPU. Jolie différence. Si quelqu'un peut m'expliquer le pourquoi du comment...

Je suis sur le IRC ioquake3 aussi, mais personne ne semble vouloir me répondre.

#2 Le 21/01/2011, à 17:02

Ypnose

Re : Ioquake3, usage du CPU

Ok, je viens d'en discuter avec des gars, l'option (seta com_maxfps "x") définit la valeur maximum des FPS, mon moniteur a une fréquence de 60 Hz, et l'option etait définit à 85 FPS de base, ce qui provoquait la surconsommation.
En réglant à un valeur inférieure ou égale à 60 (les FPS correspondent à la fréquence), on arrive a 20% de conso CPU (avec la synchro désactivée).
Extrait de la discussion:

[15:33] <CobraMad> why when i turn off the Vsync (seta r_swapInterval "0"), the CPU usage is around 60% and when i turn on Vsync (seta r_swapInterval "1"), CPU usage is around 25%?
[15:34] <CobraMad> i have a Nvidia GT 240 with 260.19.29 driver
[15:35] <CobraMad> i saw a subject on the forum, and a dev suggested to come here for the answer
[15:36] <hk> As far as I know vsync tells q3 to wait until the frame is drawn on your screen before rendering the next one. It's twiddling thumbs in that time.
[15:36] <hk> -> less CPU usage
[15:37] <CobraMad> ok
[15:37] <hk> but that's just a guess. I know nothing about the renderer.
[15:37] <CobraMad> thanks dude
[15:40] <CobraMad> that's why i needed a dev
[15:41] <Tahmi> on common lcd panel it would be 60 fps with vsync
[15:41] <Tahmi> and without vsync fine pc can draw over 300 fps
[15:42] <CobraMad> exactly, when Vsync is off on my pc, i have 90-100 fps
[15:42] <Tahmi> without vsync it just draws as much frames as possible
[15:42] <Tahmi> limited by com_maxfps
[15:43] <CobraMad> yes, but i don't understand what is the "best" option: Vsync ON or OFF
[15:45] <RomD> having vsync off can cause tearing afaik
[15:45] <RomD> because the game may start to render a new frame on the screen before the old one if finished
[15:46] <hk> it's your choice
[15:46] <RomD> you see a line running from top to bottom
[15:46] <hk> vsync looks better
[15:46] <hk> but without you get more updates
[15:47] <hk> http://extreme.pcgameshardware.de/attachments/269783d1284759448-begriffserklaerung-von-der-gtx-470-csaa-msaa-usw-vsync.png
[15:47] <hk> that shows the problem
[15:48] <hk> It renders 3 frames before the screen is able to display 1
[15:48] <CobraMad> ok guys, i just changed the com_maxfps to 60 (was 85 before) and it runs around 20% CPU
[15:49] <Tahmi> preferrable setting varies from display type as well
[15:49] <Tahmi> and size
[15:49] <hk> quake3 is CPU bound.
[15:49] <Tahmi> on bigger display with lower refresh rate tearing would be more annoying i guess
[15:50] <CobraMad> yes, tahmi, my LDC monitor has 60 hz
[15:50] <CobraMad> so i guess that 60 fps is the right choice
[15:51] <Tahmi> with vsync you see result of your input with a delay
[15:51] <Tahmi> required to fully draw a frame
[15:52] <hk> that's why playing at 20 fps with vsync is so painful :)
[15:52] <CobraMad> yeah
[15:52] <hk> e.g. how my computer runs fallout
[15:53] <RomD> is the input polling bound with the frame drawing? if I have vsync on, but own a fast cpu, does it still only check the input 60 times a second with a 60 hz monitor?
[15:54] <CobraMad> seta sv_fps , what is this option dudes?
[15:55] <RomD> sv = server
[15:55] <RomD> maybe it has to do with the tickrate
[15:55] <RomD> how often the server calculates things
[15:56] <CobraMad> ok, i was just a bit curious

Dernière modification par Ypnose (Le 21/01/2011, à 17:06)

#3 Le 21/01/2011, à 17:55

abelthorne

Re : Ioquake3, usage du CPU

Pas seulement dans ioQuake3 : la Vsync dit à la carte graphique de se régler sur la fréquence du moniteur pour éviter de calculer des images "inutiles". C'est la définition de la "synchro verticale", quoi.

Tu peux le vérifier facilement avec glxgears : si la vsync est désactivée dans les paramètres nVidia, tu auras un nombre de fps conséquent qui te permettra de dire "ma carte graphique est surpuissante : elle peut calculer xxx images par seconde" mais ça ne sert à rien. En activant la vsync, glxgears t'affichera alors un nombre de fps qui correspond à la fréquence verticale de ton moniteur.

Hors ligne

#4 Le 21/01/2011, à 18:03

Ypnose

Re : Ioquake3, usage du CPU

Ouai mais j'ai aussi entendu dire que la synchro rendait un jeu un poil plus gourmand. Je suis juste content d'avoir mieux réglé mes configs dans Quake 3 ou OpenArena sans activer le Vsync.

#5 Le 21/01/2011, à 18:24

abelthorne

Re : Ioquake3, usage du CPU

Avec la Vsync, le GPU va attendre d'avoir calculé toute l'image pour l'afficher. Donc si tu as un PC qui n'est pas assez puissant, le jeu va attendre sur l'affichage, ce qui va plomber les perfs (tu vas perdre des images en route et avoir un affichage saccadé). En désactivant la Vsync, il va tout afficher au fur et à mesure qu'il calcule les images, quitte à ce que l'image en cours ne soit pas calculée entièrement. Ce qui fait que tu peux avoir un effet de décalage (le "tearing") avec une nouvelle image qui s'affiche alors que la précédente n'a pas été complètement affichée.

En gros, faut appliquer ce raisonnement :
- ton PC est largement assez puissant pour gérer l'affichage du jeu concerné : active la Vsync, ça évitera de calculer des images dans le vide et ça bloquera l'affichage à la fréquence de ton écran
- ton PC n'est pas assez puissant pour gérer l'affichage du jeu : désactive la Vsync (tu ne dépasseras de toute façon pas la fréquence de l'écran), tu gagneras en performances (quitte à avoir un affichage pas très propre pendant quelques microsecondes de temps en temps)

(Quand je parle du PC, ça implique surtout le GPU, puisque c'est lui qui s'occupe de la majorité du boulot dans les jeux depuis 10 ou 15 ans.)

En désactivant la Vsync tout en réglant une valeur max pour les fps, tu utilises une solution intermédiaire : ton GPU ne calculera pas d'images en trop et tu ne perdras pas de performances (au prix d'un affichage ponctuellement dégradé) dans des passages plus complexes sur lesquels ton PC aurait du mal.

Dernière modification par abelthorne (Le 21/01/2011, à 18:29)

Hors ligne

#6 Le 21/01/2011, à 18:31

@nne

Re : Ioquake3, usage du CPU

abelthorne a écrit :

Avec la Vsync, le GPU va attendre d'avoir calculé toute l'image pour l'afficher. ...

Merci abelthorne ! J'ai appris beaucoup de choses aujourd'hui. smile

Mais alors, si le vsync est activé pour ma carte, comment se fait-il que mes vidéos aient du "tearing" ? (désolée si je glisse un peu du sujet original)

#7 Le 21/01/2011, à 18:54

abelthorne

Re : Ioquake3, usage du CPU

@nne a écrit :

Mais alors, si le vsync est activé pour ma carte, comment se fait-il que mes vidéos aient du "tearing" ? (désolée si je glisse un peu du sujet original)

Pour les vidéos, ça se complique (et on sort un peu du sujet) : une vidéo n'est pas de l'image calculée en temps réel, c'est une suite d'images affichées à un taux de rafraichissement précis. Et si ce taux de rafraichissement ne correspond pas à [un multiple de] celui de l'écran, l'affichage va forcément déconner.
Admettons que tu aies une vidéo lue à 30 images/s sur un écran 60 Hz (qui affiche 60 demi-images par seconde) : ça collera parfaitement. Si maintenant tu as une vidéo à 25 i/s sur ton écran 60 Hz (ou une vidéo à 30 i/s sur un écran en 50 Hz), l'affichage ne correspondra plus au nombre d'images à afficher et tu auras théoriquement du tearing, des saccades... (en pratique, ça ne devrait pas être le cas, cf un peu plus bas.)

Sachant que la vidéo d'origine peut avoir un taux d'i/s différent selon sa source, ça complique encore la situation. Un film au cinéma s'affiche en 24 i/s (ça a peut-être changé avec les projos numériques mais le standard avec les bobines était de 24 i/s). Un écran de TV NTSC (États-Unis et Japon) affiche 29,96 i/s (arrondi à 30 = 60 Hz). Un écran de TV PAL (à peu près partout ailleurs) affiche 25 i/s (50 Hz).
Rien qu'avec ça, on arrive à un beau merdier quand on doit transférer un film en 24 i/s sur un DVD NTSC en 30 i/s, ou une série TV US à 30 i/s sur un DVD PAL à 25 i/s, par exemple).
Il y a tout un tas de procédés qui permettent de faire correspondre les taux d'origine aux taux de destination prévus pour une TV qui a un taux de rafraichissement standard et ça fonctionne à peu près. Là-dessus, tu rajoutes le paramètre "écran de PC ou TV HD qui peut avoir un taux de rafraichissement complètement différent, du genre 85 Hz", ça complique légèrement la conversion entre le taux de la vidéo à afficher et celui de l'écran.

Dans les platines DVD, pour gérer tout ce merdier, il y a des puces qui s'occupent de ralentir/accélérer à la volée (dans des proportions qu'on ne remarque pas) l'affichage de la vidéo pour qu'elle corresponde au taux d'affichage de l'écran. Dans les GPU de nos cartes graphiques, il y a normalement ce genre de procédé aussi. Sauf que si tout devrait bien marcher en théorie, en pratique c'est pas toujours le cas : pilote buggé, taux de rafraichissement de l'écran impossible à faire correspondre à celui de la vidéo ou que sais-je encore...

Bref, afficher de la vidéo sur un écran ça a l'air simple mais c'est très complexe, en fait. Il y a tellement de paramètres qui rentrent en compte qu'obtenir un affichage 100 % correct peut tenir du miracle.

Quoi qu'il en soit, dans ton cas il y a quand même des chances qu'il s'agisse d'un bug du pilote graphique qui empêche la synchro de la vidéo sur l'affichage dans certaines conditions.

EDIT : je rajoute que l'option Vsync des pilotes ne s'applique pas forcément à l'affichage vidéo, qui est une grosse bidouille en lui-même au niveau hardware (du moins, ça l'était il y a encore quelques années, ce n'est peut-être plus le cas maintenant). C'est possible que l'option Vsync ne s'applique qu'à l'affichage 2D (bureau, jeux...) et 3D (jeux essentiellement).

Dernière modification par abelthorne (Le 21/01/2011, à 18:58)

Hors ligne

#8 Le 22/01/2011, à 02:06

@nne

Re : Ioquake3, usage du CPU

Merci abelthorne ; je continue d'apprendre plein de choses grâce à toi. smile

Mes vidéos sont effectivement à 25 i/s alors que mon écran a un taux de rafraîchissement de 60 Hz. Un bug du pilote graphique n'est pas exclu bien sûr mais je pencherais pour une combinaison des deux pour expliquer le tearing de mes vidéos. Il est d'ailleurs plus supportable maintenant que j'ai installé le dernier pilote ATI.

Une idée idiote peut-être : est-ce que désactiver le vsync pour regarder les vidéos arrangerait quelque chose ? hmm

#9 Le 22/01/2011, à 10:29

abelthorne

Re : Ioquake3, usage du CPU

@nne a écrit :

Une idée idiote peut-être : est-ce que désactiver le vsync pour regarder les vidéos arrangerait quelque chose ? hmm

Normalement, ça ne devrait rien changer : en théorie, c'est le pilote (indépendamment d'une quelconque option) et/ou le player vidéo qui s'occupe de synchroniser la vidéo avec l'écran comme il faut.

Dernière modification par abelthorne (Le 22/01/2011, à 10:29)

Hors ligne

#10 Le 22/01/2011, à 12:28

@nne

Re : Ioquake3, usage du CPU

Revenons aux jeux vidéos. Je joue sous W$ et j'ai récemment installé la dernière version du pilote d'ATI et j'ai pu remarquer une amélioration spectaculaire de la qualité graphique de l'image et des performances ; et quand je dis "spectaculaire", je le pense. De plus, avant cette nouvelle version, mon jeu plantait systématiquement à la fermeture ; maintenant ça n'arrive pratiquement plus. Alors je suis curieuse. Ma carte n'est pas une des meilleures du marché (voir ma signature) mais j'ai l'impression qu'elle a tout à coup pris "un coup de jeune". Comment est-ce possible ?

#11 Le 22/01/2011, à 12:42

abelthorne

Re : Ioquake3, usage du CPU

Nouveau pilote de meilleure qualité que l'ancien pilote tout pourri et tout buggé ?

Hors ligne

#12 Le 22/01/2011, à 13:01

@nne

Re : Ioquake3, usage du CPU

Dans ce cas, ils ont fait des progrès spectaculaires eux aussi chez ATI ! lol

#13 Le 22/01/2011, à 14:57

Ypnose

Re : Ioquake3, usage du CPU

Cependant pour avoir eu pas mal d'ATI (X600, HD 4670), je trouve que l'on est loin de la qualité des drivers Nvidia.

#14 Le 22/01/2011, à 15:50

abelthorne

Re : Ioquake3, usage du CPU

ATI a une longue tradition de pilotes mal foutus, même si ça s'est apparemment arrangé depuis le rachat par AMD.

Hors ligne

#15 Le 22/01/2011, à 17:04

Ypnose

Re : Ioquake3, usage du CPU

Autre constat étrange avec Quake 3 Arena. J'ai crée un lanceur customisé pour mon menu Openbox:

#!/bin/bash
cd /home/xxx/.ioquake3/
xterm -e ./ioquake3.i386

Sans xterm -e qui permet de lancer le jeu dans le terminal, j'ai une conso CPU assez élevé et avec xterm -e, j'ai une conso de 20%

#16 Le 12/02/2011, à 13:10

gempaouindo

Re : Ioquake3, usage du CPU

Sur Debian Sid, le dernier pilote propriétaire et un petit :

aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1

(cf:Article Phoronix)

Ça a résolu le tearing dans les vidéos.
Attention ce n'est pas une option activée de base mais si personne ne rencontre de problèmes elle sera activée par défaut dans les prochaines versions du pilote.


Il y a 10 sortes de personnes : ceux qui comprennent le langage binaire et ceux qui ne le comprennent pas.

Hors ligne