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
Donc rien de révolutionaire dans "Quarz Extreme", c'est juste cool
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]
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

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

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]