Grafikuppritning i Mac OS X

Tråden skapades och har fått 13 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2006-06-16 15:14

En sak som jag ständigt undrar är hur grafikuppritning i OSX egentligen funkar. Nu sitter jag i stort sätt på den fläskigaste Macen som någonsin skapats - Quad Core G5 med 2.5GB RAM och GeForce 7800 kort.
Min fundering gäller följande:
Scrollar jag i ett dokument i PAGES så skulle jag säga att det hackar. Det är svårt att få en "frame rate" men smort går det inte. Det sjuka är att om jag exporterar en PDF från Pages och öppnar i Preview eller Safari så är scrollnigen där väldigt "smooth".

Faktum är att de två senare programmen dessutom renderar bilden stået bättre. Linjer blir ofta 2 pixlar tjocka i Pages eller Keynote vilket är irriterande som satan. Har man gjort 0.25 pt svart linjer borde de på sin höjd bli 1 pix tjocka, kanske rent av 1 pix tjocka och lite grå:a.

En annan sak som är märklig är i ex. Final Cut Pro så hackar det om jag scrollar i en lång browser-listan med "scroll-listen". Men om jag scrollar med scroll-hjulet på musen blir det smooth.

Finns det något "ljushuvud" här som kan förklara detta? Hur kan Pages vara så risigt?

Pages är delvis Carbon (använder Quickdraw?), kan ha någonting med saken att göra. Både Preview och Safari är native Cocoa och använder Quartz 2D samt Extreme.

Om inte annat så borde Belak kunna förklara det bättre.

Ursprungligen av Joakim Halvarsson:

Pages är delvis Carbon (använder Quickdraw?), kan ha någonting med saken att göra. Både Preview och Safari är native Cocoa och använder Quartz 2D samt Extreme.

Har mycket svårt att tänka mig att ett nyutvecklat program som Pages skulle använda sig av QuickDraw (som Apple avråder från).

Ursprungligen av Niklas Danielsson:

Har mycket svårt att tänka mig att ett nyutvecklat program som Pages skulle använda sig av QuickDraw (som Apple avråder från).

Testa slå en "otool -L path-till-pages" så förstår du, delar av pages är Cocoa medans andra är Carbon (~90% är Cocoa typ?). Vad jag kan se så är de viktigaste komponenterna Cocoa medans vissa delar är Carbon. Nu är jag inte särskilt insatt i vare sig Cocoa och/eller Carbon, så jag har lite svårt att avgöra ifall det är därför det blir en sådan prestandaskillnad motför Preview och Safari.

Keynote verkar dock vara native Cocoa, vilket får mig att undra varför Apple använder Carbon i delar av Pages?

Någon gammal dammig Pre-OSX utvecklare som behövde arbete kanske?

Ursprungligen av Joakim Halvarsson:

Testa slå en "otool -L path-till-pages" så förstår du, delar av pages är Cocoa medans andra är Carbon (~90% är Cocoa typ?).

Jag tror dig. Det var QuickDraw som jag anmärkte på. Det går ju alldeles utmärkt (rekommenderas) att utveckla i Carbon och använda Quartz 2D.

Ursprungligen av Joakim Halvarsson:

Keynote verkar dock vara native Cocoa, vilket får mig att undra varför Apple använder Carbon i delar av Pages?

För att Apple ska slippa skriva allting dubbelt så behöver man ibland behöva använda funktioner i det andra API:et.

Ursprungligen av Joakim Halvarsson:

Någon gammal dammig Pre-OSX utvecklare som behövde arbete kanske?

Apple behöver dem så länge som de ger stöd för Carbon.

Jag skulle tro att renderingsmotorn för PDF (som används när du visar en PDF i Förhandsvisning eller Safari) är mycket snabbare än textrenderingsmotorn i Cocoa (NSLayoutManager och kompisar) och Carbon (?). Det skulle förklara varför exempelvis skrollning i ett textdokument blir mycket snabbare när man gjort om det till PDF.

  • Medlem
  • Stockholm
  • 2006-06-16 16:23

Intressanta inlägg...

Men det är jäkligt irriterande alltså. Sitter med 10Ghz och kan inte ens scrolla smort i en "ordbehandlare". Däremot kan jag köra Quake 4 med realtids bumpmapping och skuggor i HD-upplösning... Men fortfarande inte scrolla smort. Jag kan spela upp flera strömmar HD-video, men fortfarnde... Inte scrolla...

Det måste ju finnas en lösning runt det hela, eller? Fortfarande väntar jag i och för sig att Quartz 2D Extreme ska slås på men det får vi ju glatt vänta med tills OSX 10.5 i bästa fall.

EDIT: Haha, en ännu värre sak i sammanhanget är CPU-belastningen.

Pages nyttjar c:a 92-98% cpu (av totalt 400%)
Preview nyttjar c:a 25-40% cpu (av totalt 400%)

Clever programming... :rolleyes:

  • Medlem
  • Göteborg
  • 2006-06-16 16:25

PDF är ju lite specielt, i och med att det är "samma" format som Mac OS ritar på skärmen med. I Pages kan jag tänka mig att det som skall visas på skärmen inte omvandlas från Pages format till visningsformat förens det skall visas på skärmen. Annars skulle ju Pages få omarbeta hela dokumentet så fort du gör en änding i en mall och därav en viss fördröjning. Detta är dock en ren spekulation och inte en godtagbar anledning till att Pages är så slött.

  • Medlem
  • Stockholm
  • 2006-06-16 16:29

Fast det här med typ av format och scrollning i OSX är också intressant. Det märks mer på slöare maskiner, men vissa format är grymt mkt snabbare att scrolla i Preview än andra. Det är olika lite beroende på OSX-version, men jag tror ex. PDF och PNG är mkt "smooth:are" scrollning i Preview än om man körde TIFF eller JPEG (har jag för mig), även om det bara handlar om en pixel-based-image.

Detta märks ännu mer när man försöker beskära en bild i preview.

Ursprungligen av Erik.dv:

Scrollar jag i ett dokument i PAGES så skulle jag säga att det hackar. Det är svårt att få en "frame rate" men smort går det inte. Det sjuka är att om jag exporterar en PDF från Pages och öppnar i Preview eller Safari så är scrollnigen där väldigt "smooth".

Pages måste hålla reda på alla objekt mm i det öppna dokumentet så att det enkelt ska kunna redigeras. Programmet sköter själv om uppritandet av grafiken i dokumentfönstret.
Preview och Safari har ett lättare jobb eftersom stödet för PDF är inbyggt direkt i Quartz och att ingen redigering behöver ske.

Ursprungligen av Erik.dv:

Faktum är att de två senare programmen dessutom renderar bilden stået bättre. Linjer blir ofta 2 pixlar tjocka i Pages eller Keynote vilket är irriterande som satan. Har man gjort 0.25 pt svart linjer borde de på sin höjd bli 1 pix tjocka, kanske rent av 1 pix tjocka och lite grå:a.

Skyll på programkoden i Pages och Keynote eftersom de sköter renderingen själva. Återigen kan Preview och Safari förlita sig på systemets kod för att visa PDF.

Har du Xcode installerat så kan du kolla lite med Quartz Debug, plocka upp FrameMeter och scrolla runt lite, för att få hum om hur många frames som ritas upp. Kolla även vad som uppdateras med Screen Updates samt Identical updates i Quartz Debug.

  • Medlem
  • Stockholm
  • 2006-06-16 16:45

Vad gäller "tjocka linjer" så skyller jag nog mer på Quartz och OSX än programmen själva. I en PDF-fil förstår jag att det blir så eftersom det är tänkt att replicera vad som kommer ut på papper. Men jobbar man i ett dokument i 100% storlek så borde den försöka lösa det hela bättre. I stort sätt alla Cocoa-program verkar vara drabbade. Jag förstår varför det blir så då man inte mäter i pixlar utan i punkter, men det är kasst att det blir så.

Omni Graffel är ett annat eminent verktyg som i vart fall känns väldigt "OSX-ifierat". Det lider av samma tjocka-linjer-fenomen det också. Men det lider INTE av uppritningsproblemet på samma sätt som Pages gör.

Vidare så finns ex Path Finder som scrollar mukare än Finder.

Ursprungligen av Erik.dv:

Vad gäller "tjocka linjer" så skyller jag nog mer på Quartz och OSX än programmen själva. Jag förstår varför det blir så då man inte mäter i pixlar utan i punkter, men det är kasst att det blir så.

Du har nog rätt. Programmen ritar ju troligtvist linjerna med samma API-anrop.
Eftersom linjerna renderas "rätt" då Quartz hanterar PDF-filer så borde Apple kunna åtgärda felet utan allt för mycket jobb.

Ursprungligen av Erik.dv:

Liknande är att ex. Path Finder scrollar mukare än Finder.

Det är kanske inte så konstigt då Finder innehåller kod från förhistorisk tid.

  • Medlem
  • Stockholm
  • 2006-06-16 16:59

Om vi titta på Keynote också. Pannorering görs ganska sällan där, men ändå. Zoomar jag in 200% och scrollar runt så flyter det okej. Inte jättebra, men okej.

Kör jag däremot igång presentationen och skalar alla slides från 1024x768 för att fylla 1920x1200 så flyter övergångar och dyl. som smör. Här pannas, scrollas, roteras osv det. Allt flyter hur bra som helst. Igen, jag förstår här att det bara är stillbilder, typ, som visas i någon form av OpenGL-miljö. Men borde det inte gå att få samma acceleration medan jag jobbar, någon form av smart-caching?

GPU:er idag börjar få massvis med VRAM så där borde i vart fall inte begränsnigen sitta för dagligt bruk. Jag vet att Apple körde en demo på precis detta i om WWDC och lanseringen av OSX 10.2 ("use OpenGL…").

1
Bevaka tråden