2010-06-05 26 views
2

Je vérifie les versions nocturnes de Firefox et Chromium avec le support de WebGL avec quelques démos et tutoriels et je ne peux m'empêcher de m'interroger sur la charge CPU extrêmement élevée qu'ils causent. Une simple démo like this one fonctionne à 60% de mon dual core. La grande version de this one dépasse le CPU à 100% et a une perte de trame visible.
Le chrome semble être légèrement meilleur que firefox mais pas beaucoup. Je suis à peu près sûr que s'il s'agissait d'une application de bureau, la charge du processeur serait négligeable.Utilisation élevée du processeur avec WebGL?

Alors qu'est-ce qui se passe ici? Qu'est-ce que ça fait? Exécuter les scripts simples de ceux-ci ne peut pas être aussi exigeant. Est-ce la couche supplémentaire de sécurité ou quelque chose?


Edit: J'ai trouvé la démo originale qui a été porded à WebGL ici: http://rrrola.wz.cz/files/puls_win.zip

L'exécution de cette (en plein écran) obtient le CPU à 48% soutenue alors peut-être que je me suis trompé ...

+0

Je suppose que les commutateurs de contexte sont encore chers. De JS à Native à GPU. –

+0

basculement vers GPU? Hein? Voulez-vous dire la synchronisation entre CPU et GPU? OpenGL vide les instructions de rendu dans un tampon et les transmet au GPU, le GPU synchronise les résultats à l'écran en utilisant un échange de tampon à des points spécifiés dans le rendu, mais le processeur n'est pas impliqué dans cette opération. du tout. –

+0

@Ben, il y a cependant des changements de contexte au noyau à chaque appel opengl ... – shoosh

Répondre

4

Il est en effet vrai que webgl est lent. Parce qu'il est nouveau, il utilise un logiciel de composition. Donc, il est fondamentalement GPU - CPU - GPU appels pour une seule image. Firefox et webkit y travaillent tous les deux

+2

Je vais seconder ce que dit EWGL ici. La spécification WebGL requiert que le canevas 3D rendu puisse être composé avec les autres éléments HTML de la page (par exemple, pour que le texte puisse apparaître par-dessus).Cela signifie que le GPU rend la scène, puis le CPU obtient une copie et la combine avec le HTML rendu, qui est ensuite renvoyé à la carte graphique à afficher. Donc, GPU-CPU-GPU sur chaque trame; C'est cher. Les auteurs du navigateur sont en train de résoudre le problème - IIUC à l'avenir, le GPU fera le compositing. –

-1

Le rendu graphique est extrêmement gourmand en ressources processeur, c'est pourquoi il existe des cartes vidéo avec GPU pour que le travail puisse être déchargé à la place. Je vais essayer vos démos et voir comment elles vont sur mon ordinateur qui a une carte vidéo décente installée.

+0

Cet ordinateur dispose d'un nVidia 8600 qui est plus que capable de les gérer. – shoosh

+0

ok ne va pas le faire à nouveau LOL. Le GPU de ma pauvre carte vidéo se dirigeait vers un fondu. Alors oui WebGL est encore un travail en cours et laisse juste dire beaucoup plus d'optimisation est nécessaire. btw mes cpu n'étaient pas du tout martelés. J'utilise un nVidia 7900GS donc je suppose qu'il est temps pour une mise à niveau :( – Khorkrak

1

Impossible de reproduire le problème de performances. Le premier tourne à 98-100fps en utilisant juste un noyau de mon Core i5. La seconde utilise environ 50% d'un noyau.

Ceci est avec le canal de développement Chrome, Windows 7 64 bits, Radeon HD 5770, en d'autres termes une machine moderne moyennement puissante. Notez également qu'une petite taille de code n'équivaut pas à rapide, quand il y a beaucoup d'itération (et ces démos semblent avoir beaucoup de polygones).

+0

Ne trouvez-vous pas étrange qu'il utilise un noyau complet pour faire essentiellement beaucoup de rien? – shoosh