Quartz Extreme: voila comment ca marche

  • Créateur du sujet Créateur du sujet P O L
  • Date de début Date de début

P O L

Membre actif
23 Décembre 2000
208
0
Visiter le site
Depuis la présentation de Quartz Extreme, on en parle beaucoup à droite à gauche, surtout pour dire un peu tout et n'importe quoi.

Je me suis donc renseigné auprès de divers contacts pour comprendre exactement de quoi il retourne. Voici les conclusions:

1) Si vous avez 2 écrans sur une même carte graphique, Quartz n'est apparement activé que sur l'écran principal (celui avec la barre des menus).

2) Si vous avez plusieurs cartes graphiques (une AGP et une ou plusieurs PCI), seul l'écran connecté à la carte AGP beneficiera de Quartz Extreme.

3) Quartz Extreme utilise des fonctionalités OpenGL standard, pas une API spécifique à Apple. Donc en théorie, ca marche avec n'importe quelle carte 3D qui supporte OpenGL.

4) Seul le compositing des fenêtres à l'écran est accéléré par Quartz Extrême: le dessin du contenu des fenêtres ne l'est pas. A ce niveau, les performances seront donc les mêmes qu'aujourd'hui. Le redimensionement des fenêtres des browsers web n'est donc absolument pas accéléré par exemple.
Le compositing, c'est par exemple dessiner une fenêtre de terminal avec 50% de transparence par dessus une fenêtre de Word, ou dessiner les ombres des fenêtres, les effets de "suck" du dock, etc...
Actuellement, le compositing est fait en "software" par le processeur (et c'est très probablement optimisé Altivec).

5) Principe de fonctionnement: le contenu de chaque fenêtre est stockée dans une texture OpenGL distincte (à priori ARGB32). Quartz Extreme utilise ensuite OpenGL pour dessiner, superposer les fenêtres à l'écran à partir des textures crées ci-avant. Comme cette étape est accélérée hardware, cela permet d'avoir à l'écran 10 terminaux translucides par dessus un DVD en lecture, tout en déplacant un film QuickTime lui aussi translucide, et tout reste fluide, et en plus le processeur n'a rien à faire!

6) Quand le contenu de la fenêtre change, il faut mettre à jour la texture. Pour être utilisable par la carte 3D, une texture doit résider en VRAM sur la carte vidéo, ou dans la zone "RAM AGP" de la RAM normale si vous avez une carte vidéo AGP.
Si la texture est en VRAM, il faut maintenir de toute facon l'original du contenu de la fenêtre en RAM (car lire depuis la VRAM est très lent). Donc à chaque changement du contenu de la fenêtre, il faut faire une copie RAM -> VRAM. Ensuite, Quartz Extreme peut mettre à jour l'écran. On a donc une copie du contenu en RAM, une autre en VRAM, et il faut les maintenir à jour: pas terrible.
Si la texture est en RAM AGP, la carte 3D peut directement l'utiliser sans avoir à la copier en VRAM: c'est elle qui va la lire directement depuis la RAM. Les performances sont un peu moindre que si elle était en VRAM cela dit. A priori Apple stocke le contenu des fenêtres en RAM AGP.
Voila pourquoi il faut une carte AGP pour jouer avec Quartz Extreme.

7) Chaque fenêtre est donc dans une texture à priori 32Bits. Le problème, c'est que d'une part, il peut y avoir beaucoup de fenêtres à l'écran, et d'autre part on ne peut compresser les textures qui les représentent, car les compression de texture sur les cartes 3D sont destructrices. Je vous laisse imaginer si le contenu des fenêtres avait tout à coup des artefacts genre compression JPEG...
En plus, dans OpenGL, les textures doivent avoir des dimensions en puissance de 2 (même si ce n'est plus une limite sur les cartes 3D actuelles). Donc si votre fenêtre fait 1000x600, vous devez créer une texture 1024x1024 soit 4Mb! Il est également possible de créer un jeu de 2 textures (1024x512 et 1024x128) de facon à gacher moins de VRAM, mais reste à savoir si Apple l'a fait, car ca complique pas mal la gestion des textures.

8) Dans la VRAM, il faut aussi placer 2 buffers vidéos pour l'écran en RGB32. Donc si votre écran est en 1600x1200, vous avez déjà 2x7.5Mb en moins dans la VRAM.
Entre ces buffers et les textures pour toutes les fenêtres, voilà pourquoi il faut au moins 32Mb de VRAM.

9) Et si vous lancez un jeu 3D qui a besoin de plein de VRAM? Ca va probablement swapper pas mal au lancement. Difficile d'en dire plus dès maintenant.


J'espère que j'ai été clair, et que tout le monde a compris
wink.gif


Donc rien de révolutionaire dans "Quarz Extreme", c'est juste cool
wink.gif


D'ailleurs, si Apple a bien fait les choses, l'effet d'appartion des "sheets" ou l'effet de "suck" dans le dock, devraient être aliasés, car la carte 3D peut le faire "gratuitement".

La question qui reste, maintenant, c'est: à part le côté "cool-qui-en-jette", est-ce vraiment utile? Surtout qu'il faut une grosse carte 3D et que la majorité des opérations graphiques ne sont pas accélérées par ce système?

[Quelques précisions ajoutées au paragraphe 5]

[09 mai 2002 : message édité par P O L]
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par P O L:


7)
En plus, dans OpenGL, les textures doivent avoir des dimensions en puissance de 2 (même si ce n'est plus une limite sur les cartes 3D actuelles). Donc si votre fenêtre fait 1000x600, vous devez créer une texture 1024x1024 soit 4Mb! Il est également possible de créer un jeu de 2 textures (1024x512 et 1024x128) de facon à gacher moins de VRAM, mais reste à savoir si Apple l'a fait, car ca complique pas mal la gestion des textures.
<HR></BLOCKQUOTE>

Yep merci pour toutes ces explications POL...
smile.gif
en clair il vaut mieux tabler sur une bonne optimisation - meilleur compilation du systeme pour l'accélération que sur la carte graphique...
Aux premiers échos que l'on peu trouver sur les forums US... la 10,2 est bien plus rapide que la 10,1... meme sur des machines avec des ATI128 (donc sans ou peu de Quartz Extrem...)
c'est un bon début,

Par contre lorsque tu nous explique les jeux de textures.. j'ai pas tout compris ...
rolleyes.gif

je me suis déja amusé a modifier le thème aqua... celui ci est composé de "vignettes" de 48x48 pix ou 128x128 pix maxi qui composent les fenetres (fond strié - barre de titre - boutons - etc..)...donc pour moi la carte vidéo a plus a gérer un "tas" de textures que 1 ou 2 "grosses" images..
.
où est ce que je fais erreur ?
confused.gif
 
Cela parait rassurant mais un peu décevant aussi....
espérons que ce ne sera pas un simple costume de carnaval:
mfm2001


Payer pour un OS en peluche :
NON NON ET NON !!!
 
Ca ne change rien au fait que tout cela relance pas mal de rumeurs et de questions sur le futur de macos X!!! Il faut que je trouve cette beta nom d'une pipe!
smile.gif
)
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par macintroll:
Par contre lorsque tu nous explique les jeux de textures.. j'ai pas tout compris ...
rolleyes.gif

je me suis déja amusé a modifier le thème aqua... celui ci est composé de "vignettes" de 48x48 pix ou 128x128 pix maxi qui composent les fenetres (fond strié - barre de titre - boutons - etc..)...donc pour moi la carte vidéo a plus a gérer un "tas" de textures que 1 ou 2 "grosses" images..
<HR></BLOCKQUOTE>

La carte vidéo devra au moins avoir autant de textures qu'il y a de fenêtres visibles à l'écran. Ensuite, pour les barres de titre des fenêtres et leurs boutons, ainsi que leurs cadre / ombres, je ne sais pas si c'est dans des textures séparées.

Dans tous les cas, je me suis mal exprimé en parlant de "jeux de textures". Je voulais dire que si tu dois placer une fenêtre de 1000x600 dans une texture, soit tu crées une texture de 1024x1024 soit une de 1024x512 qui contient la partie haute du contenu, et une de 1024x128 qui contient le reste.
Comme 1024x1024 &gt; 1024x(512+128), ces 2 textures prendront moins de place en VRAM. Mais c'est plus compliqué à gérer.

[21 mai 2002 : message édité par P O L]
 
Pour le lancement de jeux OpenGL, je fais la supposition suivante:
Au lancement d'une application OpenGL, Quartz Extreme rendra la main à l'application (facile puisque tout le contenu des fenêtres est déjà en RAM, donc rien à récupérer sur la carte...), restera en tâche de fond, puis réoccupera la VRAM de la carte graphique dès que l'application OpenGL aura quitté...

POL, qu'est-ce que tu en penses? plausible? (puisqu'en plus le sujet doit t'intéresser d'assez près, non?
wink.gif
)

++
Beru
 
Les sauveurs on s'en méfie jamis assez...
Les sauveteurs un peu moins surtout si techniquement on coule.
Si Jaguar ne nous sauve pas la mise, cette fois-ci je le lui lancerai à l'eau avec ces:
NON NON ET NON !!
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par [MGZ] Black Beru:
Pour le lancement de jeux OpenGL, je fais la supposition suivante:
Au lancement d'une application OpenGL, Quartz Extreme rendra la main à l'application (facile puisque tout le contenu des fenêtres est déjà en RAM, donc rien à récupérer sur la carte...), restera en tâche de fond, puis réoccupera la VRAM de la carte graphique dès que l'application OpenGL aura quitté...
<HR></BLOCKQUOTE>

Oui c'est très probable que cela ce passe comme ça.
En fait, c'est même probablement plus simple: OpenGL quand il n'a plus suffisament de place en VRAM pour y mettre toutes les textures, il swappe lui-même entre RAM et VRAM. Ca risque juste de ralentir un chti peu le lancement des jeux.