smokalot schreef op donderdag 23 maart 2006 @ 22:06:
Verder was ik een beetje teleurgesteld over de zoom-plugin. Dat ding pakt alleen maar een deel van je desktop en trekt dat fullscreen uit. Had gehoopt dat dingen netjes zouden schalen, vector-wise zeg maar, maar je ziet gewoon de pixels. Ook zou ik het veel functioneler vinden als je 1 venster kon uitvergroten, waarbij de rest van je desktop (menubalken en andere windows) gewoon hetzelfde gerenderd wordt. Weet iemand of dit uberhaupt mogelijk is met deze technologie?
Nu gebruikt Xgl een nieuwe OpenGL extensie "texture_from_pixmap". Wat deze doet is gebruik maken van de offscreen composite buffer van XWindow's om geaccellereerd de pixmaps naar textures te blitten. Een pixmap heet niet voor niets een pixmap, aangezien dit en map van pixels is. Er is dus niets vector aan.
Zou je dat willen, dan moet de XClient (Qt, Gtk, Motif (for that matter)) ten eerste vrijwel compleet in vectoren gaan werken (Cairo en Arthur zijn goed op weg, maar het zal never nooit volledig vector-based worden) en belangrijker is, dat Xgl de XClient duidelijk moet maken dat hij moet scalen als Xgl wil gaan zoomen, of Xgl moet afstappen van pixmaps en heel painting van XClients (vaak Xrender) gaan afpakken en dat zelf gaan doen. Beide zijn haalbaar, maar de hele X-Architectuur omver werpend en bovendien een beetje heel erg lelijk.
De manier die dit eventueel mogelijk zou maken is Xegl, daarbij draait Xgl niet meer boven op een full-blown XServer, maar draait de XServer op opengl. Wellicht dat het zo makkelijker en vooral beter (qua architectuur e.d.) mogelijk is, maar de vraag is nog altijd of je dat wel echt wilt.
Zoomen is trouwens aan accessibility-topic an sich. Je kunt er in de Freedesktop-mailing lists veel leuke dingen over lezen. Vector-scaling is daar al een paar keer besproken en daar rijst (net als hier) hoe je de samenwerking tussen XClients, de XServer en renderers coordineert.