22 Mart 2011 Salı

Linux görüntü yöneticileri X ve Wayland

Yıllar önce Wayland konsunda kısa bir günlük yazısı yazmıştım. Geçenlerde bir teknoloji sitesinde X ve Wayland hakkında güzel bir makale görünce de ilk yazımın devamı niteliğinde kısa bir özetini yapmak istedim.

X'in hikayesi


1980'lerin Başında bir MIT mühendisi olan Bob Scheifler bilgisayarlar için yeni grafik görüntü leme sisteminin prensiplerini ortaya koydu ve çalışmasına X adını verdi, çünkü çalışmasını V işletim sisteminde bulunan W grafik sistemi üzerinde yapmıştı. Böylece o ve arkadaşları bir devrimi ortaya çıkarmış oldular, çünkü çalışmaları kısa sürede UNIX ve benzeri sistemlerde standart grafik arayüz olarak kullanılmaya başlandı, ve hala kullanılıyor. X, O günlerdeki rakip teknolojilere göre çok gelişmiş özellikler ve prensiplerle geliştirilmişti.

X'i Bu kadar efsanevi yapan şey ağ üzerinde çalışmaya imkan veren ilk grafik görüntüleme sistemi olmasıydı. Zaman paylaşımlı bir sunucu üzerinde çalışan bir X sunucusu ağdaki istemciler tarafından kullanılabiliyordu. Zaten X sunucusu donanımdan bağımsız ve tamamen ağda hizmet verebilecek şekilde tasarlanmıştı. Herhangi bir UNIX üzerinde X çalıştıran bir istemcinin pencere ve görüntüleri farklı bir donanım ve farklı bir UNIX sistemi tarafından kullanılabiliyordu. Aslında X, son işlemden (render) soyutlanmış bir yapıdadır, temel işaretleme aygıtlarının kullanımının yanında basit pencereleme işlevlerini taşır ama modern arayüz oluşturulması ve yönetimini araç takımları ve pencere yöneticileri gibi harici süreçlere bırakır.

X Projesi MIT yönetiminde ve Bob Scheifler liderliğinde geliştiriliyordu ancak pek çok üreticinin ilgisini çekiyordu. Sonunda aralarında DEC gibi büyük teknoloji şirketlerinin de olduğu bir grup üreticinin katkı verdiği MIT X konsorsiyumu özgür bir lisans ile kaynak kodları yayınlamaya karar verdi. (Bu konsorsiyum halen X'in haklarını gözetmektedir.)

Ancak 90'lı yıllar boyunca tekil masaüstü sistemler olarak PC satışlarının artması ve yaygın olarak kullanılmaya başlanması X sunucusunun en üstün olduğu ağ imkanlarının çoğunlukla kullanılmamasına neden oldu. Aynı dönemlerde bilgisayarların grafik donanımları da çok hızlı gelişmeye başlamış ve daha çok grafik ve video çizim özelliklerine ihtiyaç duyulmaya başlanmıştı. Donanımların çeşitliliği ve hızlı gelişim temposu yavaş yavaş X'in imkanlarının dışına çıkmaya başlamıştı. Bu dönemde X'in bu çok çeşitli donanımlara Linux ortamında nasıl erişim sağlayacağı da önemli bir sorun haline geldi. Bu soruna X'in günün ihtiyaçlarına göre yavaş kalan gelişimi de eklenince 2004 yılı civarında Linux dünyasında projeye karşı bir hayal kırıklığı başladı.

Bu sorunları aşmak için Thomas Hellstrom, Eric Anholt ve Dave Airlie tarafından geliştirilen ve TTM (Translation Table Maps) adını verdikleri bir önbellekleme sistemi 2007 yılında kullanılmaya başlandı. TTM, Tüm uygulamaların kullanabileceği ve GPU ile CPU arasında veri senkronizasyonu yapan bir grafik veri önbelleği olarak tasarlanmıştı. Bu sayede uygulamalar grafik verilerin işlenmesi için beklemek zorunda kalmayacak ve hızlanacaktı. Bu geliştirme Linux topluluğunda büyük coşku ve beğeni ile karşılandı. Böylece tüm Linux grafik sürücülerinin kullanabileceği bir bellek yönetim sistemi kullanılabilir olmuştu.

Ancak TTM çok büyük bir kod yığını olmakla eleştiriliyordu. Açık kaynaklı Linux grafik sürücüleri basit API'lere ihtiyaç duyuyordu ancak TTM karmaşık bir API'ye sahipti. Bu geliştiricilerin hoşuna gitmemişti ve zamanla bazı performans sorunları da olduğu ortaya çıktı. Bunun üzerine halen Intel'de çalışmakta olan Reenter Keith Packard, Eric Anholt'un da yardımıyla 2008 yılında TTM için yeni bir API yazdı. GEM (Graphics Execution Manager) adını verdikleri yeni yapı genelde mevcut Kernel fonksiyonlarını kullanacak şekilde değiştirilerek küçültülmüş ve bazı değişikliklerle geliştirmenin video aygıtının işlemleri ve GPU'nun bellek yönetimine odaklanması sağlanmıştı.

GEM, Linux grafikleri için önemli bir gelişmeydi ama Keith Intel'de çalıştığı için öncelikle Intel'in açık kaynak Linux sürücüleri GEM'e uygun olarak geliştirilmişti. Intel haricindeki sürücülerin GEM'e geçişi yavaş ilerliyordu, AMD de bu konuda isteksizdi.

GEM ve TTM, Uygulamaların grafik ve 3D ihtiyaçları için çözümler sunmaktadır ancak asıl sorun OpenGL, Qt ve Gtk+ gibi büyük boyutlu kütüphaneler ile kernel arasında danstaki yaşlı bir kadın gibi duran eski X'tir. Bugün dans etmek isteyen herkes X ile dans etmek zorunda. X, pek çoğu GPU'nun bile olmadığı yıllarda yazılmış milyonlarca satır koddan oluşuyor ve modern grafik ihtiyaçlarını karşılayacak durumda değil. Bu yaşlı kadının artık sandalyesine oturması gerekiyor.

Wayland, yeni görüntü yöneticisi

Yazılım mühendisi olan Kristian Høgsberg, Massachusetts'deki Wayland kasabasına doğru arabasını sürerken grafik çıktılarının doğrudan Kernel'e gönderileceği, uygulamaların doğrudan GPU'ya ulaşabileceği bir tasarımı net bir şekilde düşünmeye başlamış. Herkesin harika bir fikri olabilir ama üzerinde çalışılmadığı sürece bunlar günlük yaşamın kargaşasında kaybolup gidebiliyor. Oysa Høgsberg kısa sürede temel kütüphaneleri yazmaya başlamış ve iki haftada az çok çalışan bir sunucu geliştirmeyi başarmış. (O günlerde teknoloji sitelerinin birinde kıyıda köşede kalmış bir yazıdan bu gelişmeyi öğrenmiş ve bir günlük yazısı yazmıştım.)

Wayland, X sunucusuna hiçbir bağımlılığı olmayan bir son işlem API'si kullanıyor. Ancak geriye dönük uyumluluğu sağlamak için X sunucusu Wayland'ın bir istemcisi konumunda çalışabiliyor. Wayland, X'in eskiden yaptığı gibi sadece protokolleri tanımlıyor ve X ile birlikte çalışıyor. Böylece mevcut X kullanan yazılımlar da eskisi gibi çalışmaya devam ediyor. Wayland X'ten farklı olarak kendi birleşiklik yöneticisini (compositing manager) kullanıyor, X ise bunun için harici süreçlere ihtiyaç duyuyor. Wayland günümüzde Kernel'de bulunan GEM, evdev (input drivers) ve kms (kernel mode switching) teknolojilerini ve DRI2 (Direct Rendering Infrastructure) kullanıyor.

Arkasında Intel ve RedHat bulunan bu yeni teknoloji X için çözülmesi zor görünen pek çok geleneksel sorunu çözmeye yaklaşmış görünüyor. Ancak NVIDIA gelişitiricilerinin Wayland'ı desteklemek için şimdilik planlarının olmadığına dair bir açıklama yapıldığı söyleniyor ama Linux topluluğunda işler üreticilerin desteği olsa da olmasa da bir şekilde yürür. Ters mühendislik yoluyla geliştirilen Nouveau sürücülerinde Wayland için çalışılıyor. AMD ise bu konuda NVIDIA'dan daha iyi durumda. Birkaç yıldır Fglx (FireGL and Radeon for X) adıyla açık kaynaklı sürücüler üreten firma bu sürücüyü düzenli olarak güncelliyor. Yine de özgür yazılım topluluğunun istekleri bu firmaların yapılacaklar listesinin baş sıralarında değil.

Intel ise sürücülerinin Wayland ile daha performanslı çalışmasını sağlayacak geliştirmeler için Wayland geliştiricilerini kiralayacak kadar büyük destek sunuyor. Belki de buna güvenen Ubuntu yeni sürümlerde yeni masaüstü yöneticisi Unity ile birlikte Wayland'ı kullanılacağını duyurdu.

Hiç yorum yok:

Yorum Gönder