close

VirtualGL

Navigasyona git Aramaya git
VirtualGL
Genel bilgi
program türüuzaktan yönetim yazılımı
Lisans GNU Genel Kamu Lisansı (GPL), wx Windows Kitaplık Lisansı
Gerçek durum gelişmekte
Diller ingilizce
Teknik Bilgiler
Zamanlanmış C , C++ , Unix Kabuğu
Sürümler
En son kararlı sürüm 2.3 (13 Aralık 2011 (10 yıl, 10 ay ve 5 gün))
Bağlantılar

VirtualGL , Unix ve Linux OpenGL 3D uygulama oluşturma komutlarını özel bir sunucudaki 3B hızlandıran donanıma yeniden yönlendiren ve oluşturulan sonucu ağ üzerinde herhangi bir yerde bulunan ince bir istemciye etkileşimli olarak görüntüleyen açık kaynaklı bir programdır.

Sorun

Tipik olarak, Unix ve Linux için VNC ve diğer ince istemci ortamları, OpenGL uygulamalarını hiç desteklemez veya OpenGL uygulamalarını OpenGL donanım hızlandırmasından yararlanmadan işlemeye zorlar. Donanım hızlandırmalı 3D uygulamaların uzaktan görüntülenmesi geleneksel olarak "dolaylı işleme" kullanımını gerektirmiştir. Dolaylı oluşturma, OpenGL komutlarını X11 protokol kaynağı içinde kapsüllemek ve bunları bir uygulamadan bir X ekranına göndermek için x Pencere Sistemine ("X11" veya "X") GLX uzantısını kullanır.Geleneksel olarak , uygulama uzaktan konumlandırılan bir uygulamada çalışır sunucu ve x'in gösterimi kullanıcının masaüstünde çalışır. Bu senaryoda, tüm OpenGL komutları kullanıcının masaüstünde yürütülür, bu nedenle makinenin hızlı bir 3D grafik hızlandırıcısına sahip olması gerekir. Bu, bu yöntemi kullanarak bir 3B uygulamayı uzaktan görüntüleyebilen makine türünü sınırlar.

Ağ yeterince hızlıysa ( örneğin Gigabit Ethernet kullanarak ), uygulama oluşturulan nesnenin geometrisini dinamik olarak değiştirmiyorsa, uygulama görüntüleme listeleri kullanıyorsa ve uygulama çok kullanıyorsa, dolaylı oluşturma yeterince işlevsel olduğunu kanıtlayabilir. dokular . _ Ancak, birçok OpenGL uygulaması bu kriterleri karşılamamaktadır. Sorunları daha da karmaşık hale getirmek için, bazı OpenGL uzantıları dolaylı bir oluşturma ortamında çalışmaz. Bu uzantılardan bazıları, 3D grafik donanımına doğrudan erişim yeteneği gerektirir ve bu nedenle dolaylı olarak çalışmak asla mümkün değildir. Diğer durumlarda, kullanıcının X ekranı, gerekli bir OpenGL uzantısı için açık destek sağlamayabilir veya uzantı, kullanıcının masaüstünde mevcut olmayan belirli bir donanım yapılandırmasına bağlı olabilir.

Uygulama sunucusunda işleme (rendering) OpenGL, uygulama artık 3B işleme donanımına hızlı, doğrudan erişim yoluna sahip olduğundan, dolaylı oluşturmanın getirdiği sorunları ortadan kaldırır. 3B oluşturma uygulama sunucusunda gerçekleşirse, yalnızca elde edilen 2B görüntülerin kullanıcının masaüstüne teslim edilmesi gerekir. Görüntüler, onları oluşturmak için kullanılan 3B verilerin boyutundan bağımsız olarak aynı kare hızında teslim edilebilir, bu nedenle uygulama sunucusunda 3B işleme (renderleme) yapmak, 3B performans sorununu etkili bir şekilde bunun yerine bir performans sorununa dönüştürür. . Sorun, etkileşimli kare hızlarında bir ağdaki 1-2 megapiksel görüntü verisi akışıyla nasıl başa çıkılacağıdır , ancak meta teknolojileri ( birini adlandırmak gerekirse HDTV ) bu sorunu zaten çözmektedir.

OpenGL çözümü

Kitaplık (bilgi işlem) VirtualGL, uygulama sunucusunda OpenGL oluşturma işlemini gerçekleştirmek için "GLX çiftliğini" kullanır. Normalde, UNIX ve Linux OpenGL uygulamaları aynı x ekranına GLX komutları ve sıradan X11 komutları gönderir. GLX komutları, OpenGL oluşturma bağlamlarını belirli bir x penceresine bağlamak, x ekranının desteklediği piksel biçimlerinin bir listesini almak vb. için kullanılır. VirtualGL, Unix ve Linux'ta bir kitaplığı bir uygulama gerçekten, uygulamanın normalde bağlantılı olduğu paylaşılan kitaplıklarda gerçekleştirebileceği belirli bir işlev çağrılarını engeller (AKA "araya girer") . VirtualGL, bir Unix veya Linux OpenGL uygulamasına önceden yüklendiğinde, GLX uygulamasının işlev çağrılarını durdurur ve bunları, karşılık gelen GLX komutlarının, muhtemelen bir 3D donanım hızlandırıcısının bağlı olduğu x görüntü uygulama sunucusuna gönderileceği şekilde yeniden yazar. Böylece VirtualGL, GLX komutlarının ağ üzerinden kullanıcıya veya VNC gibi GLX'i desteklemeyen bir sanal ekrana ("X proxy") gönderilmesini engeller. GLX çağrılarını yeniden yazma sürecinde, VirtualGL ayrıca OpenGL oluşturmayı ekran dışı piksel arabelleklerine ("Pbuffers.") yönlendirir. değişiklik yapmadan VirtualGL aracılığıyla.

Dahili olarak, VirtualGL aracı motoru ayrıca, hedef ekran X ile 3B oluşturmanın gerçekleşeceği ekran X arasındaki görsel nitelikleri eşleyen ve bir dizi başka karma işlevi gerçekleştiren Pbuffers'a bir pencere haritası sağlar. GLX yönlendirmesi şeffaftır. Ancak esasen, X uygulama sunucusu ekranında OpenGL bağlamı oluşturulduğunda, VirtualGL yoldan çıkar ve sonraki tüm OpenGL komutlarının uygulama sunucusunun 3D donanımına engellenmeden geçmesine izin verilir. Böylece uygulama, uygulama sunucusu donanımı ve sürücüleri tarafından sağlanan OpenGL özelliklerini ve uzantılarını otomatik olarak kullanabilir.

glXSwapBuffers()GLX komut sıralaması ve Pbuffer yönetiminin yanı sıra, VirtualGL ayrıca işlenmiş pikselleri uygun zamanda (genellikle veya izleyerek glFinish()) geri okur ve ardından x çizim komutlarını kullanarak pikselleri uygulamanın X penceresinde çizer.Standart X görüntüsü VirtualGL, GLX komutlarını yeniden yönlendirir hedef X ekranından uzaktaysa, X proxy sunucularına (VNC gibi) hızlandırılmış 3D desteği eklemek ve ayrıca bir uzak X ekranı kullanılırken OpenGL'nin dolaylı olarak oluşturulmasını önlemek için kullanılabilir.

Image
X11 Image Transport (önceden "Proxy modu") kullanılırken, uygulama sunucusunda 3B ve 2B oluşturma gerçekleşir. VirtualGL, 3B komutları uygulamadan 3B hızlandırıcı donanımına yönlendirir, oluşturulan görüntüleri geri okur ve bunları X proxy'sinde (VNC veya benzeri sistem) bir dizi sıkıştırılmamış bitmap olarak çizer. Bu arada, uygulamadan gelen 2D çizim komutları (X11 komutları) doğrudan X proxy sunucusuna gönderilir. Görüntülerin sıkıştırılmasından ve uzak istemcilere gönderilmesinden yalnızca X proxy'si sorumludur.

VirtualGL'yi VNC veya başka bir X proxy ile birlikte kullanmak, birden çok kullanıcının aynı anda tek bir uygulama sunucusunda 3D uygulamaları çalıştırmasına ve birden çok istemcinin her oturumu paylaşmasına olanak tanır. Bununla birlikte, VNC ve ilki, geniş düz renk alanları, birkaç renk ve birkaç çerçeve arası farklılık içeren 2B uygulamaları işlemek üzere ayarlanmıştır. 3D uygulamalar ise ince taneli, karmaşık renk desenleri ve sonraki kareler arasında çok daha az korelasyon içeren görüntüler üretir. Bir X penceresinde bir OpenGL uygulamasından işlenen görüntülerin çizilmesiyle oluşturulan iş yükü, temelde bir video oynatıcının iş yüküyle aynıdır ve mevcut ince istemci yazılımı, genellikle bu yükü kaldıracak kadar hızlı görüntü kodeklerinden

VirtualGL, tüm bu sorunu iki şekilde çözer:

  1. TurboVNC ile
  2. CFR görüntü aktarımı yoluyla

TurboVNC

TurboVNC , libjpeg'in SIMD ile hızlandırılmış bir sürümü olan libjpeg -turbo'dan yararlanarak TightVNC'nin Tight ve JPEG kodlama yollarını hızlandıran TightVNC'nin bir dalıdır . 100 megabit Ethernet ağlarında TurboVNC , saniyede 20 kareden fazla algılanabilir kayıpsız görüntü kalitesiyle tam ekran görüntüleri (1280 x 1024 piksel) görüntüleme yeteneğine sahiptir. TurboVNC, tam ekran görüntülerin geniş bantta saniyede 7-10 kare hızında, belirgin şekilde daha düşük ancak kullanılabilir görüntü kalitesiyle görüntülenmesini sağlayan ek optimizasyonlar içerir. TurboVNC ayrıca TightVNC'yi istemci tarafı çift arabelleğe alma ve 3D uygulamaları hedefleyen diğer özellikleri ve Solaris platformlarıyla tam uyumluluğu içerecek şekilde genişletir . TurboVNC ve VirtualGL, Austin'deki Texas Üniversitesi'ndeki Texas Academic Computing Center (TACC) tarafından TeraGrid kullanıcılarının Longhorn görüntü kümesinin 3B oluşturma özelliklerine uzaktan erişmeleri için kullanılır .

VGL görüntü aktarımı (önceden "doğrudan mod")

Image
CFR görüntü aktarımını (önceden "doğrudan mod") kullanırken, uygulama sunucusunda 3B oluşturma gerçekleşir, ancak istemci bilgisayarda 2B oluşturma gerçekleşir. VirtualGL, 3B uygulamadan oluşturulan görüntüleri sıkıştırır ve bunları, video akışını gerçek zamanlı olarak açan ve görüntüleyen istemciye bir video akışı olarak gönderir.

VGL Image Transport kullanılırken VirtualGL , TurboVNC'nin kullandığı aynı optimize edilmiş JPEG codec bileşenini kullanarak işlenmiş 3D görüntüleri işlem sırasında sıkıştırır . VirtualGL daha sonra sıkıştırılmış görüntüleri özel bir TCP soketi üzerinden istemci makinede çalışan bir VirtualGL istemci uygulamasına gönderir. VirtualGL istemcisi, görüntülerin sıkıştırmasını açmaktan ve pikselleri uygun X penceresinde çizmekten sorumludur. Bu arada, uygulamanın OpenGL olmayan ekran öğeleri, standart X11 uzaktan kontrol protokolü kullanılarak ağ üzerinden gönderilir ve istemci makinede işlenir.

Bu yaklaşım, istemci makinede bir X ekranının bulunmasını ve 2B oluşturmayı gerçekleştirmek için uzak X11 protokolüne güvenilmesini gerektirir; bu, birçok uygulamanın yüksek gecikmeli ağlarda VGL Görüntü Aktarımı kullanırken düşük performans göstereceği anlamına gelir. Ayrıca, VGL görüntü aktarımı, görüntüler çekilmek yerine kullanıcıların makinelerine 'itildiğinden', işbirliğine (oturum başına birden çok istemci) doğal olarak izin vermez. Ancak VGL görüntü aktarımını kullanmak, her uygulama penceresinin masaüstünde tek bir pencereye karşılık geldiği tam entegre bir uygulama deneyimi sağlar. VGL görüntü aktarımı, istemci bilgisayarda 2B oluşturma gerçekleştiğinden ve VGL görüntü aktarımı, dörtlü arabellekli stereo gibi gelişmiş OpenGL özelliklerinin kullanılmasına izin verdiğinden, sunucunun CPU yükünü de azaltır .

VirtualGL geliştiricileri, VGL görüntü aktarımının birincil kullanıcılarının 802.11g kablosuz internete veya uygulama sunucusuna hızlı bir Ethernet bağlantısına sahip dizüstü bilgisayar kullanıcıları olacağını öngördü .

VirtualGL kullanan ticari çözümler

VirtualGL ve TurboVNC, Nisan 2009'da üretimi durdurulan Sun Microsystems'in Sun Display System ürününün ana bileşenleriydi . İki açık kaynak paketi , VirtualGL'nin istemcilere sıkıştırılmış görüntüler göndermesine izin veren bir kapalı kaynak eklentisi ile birleştirildi . VirtualGL'yi Sun Grid Engine ile entegre eden , kaynak yönetimi ve uzaktan 3D iş planlaması sağlayan başka bir kapalı kaynak paketi . "Sun Shared Visualization" ("Sun Shared Visualization of Sun") adı verilen bu paketlerin kombinasyonu ücretsiz olarak indirilebiliyordu (Sun destek yardımı için ücretlendirilir).

HP'nin Ölçeklenebilir Görselleştirme Dizisi yazılımının v2.1 sürümü ayrıca VirtualGL ve TurboVNC ile entegre olan ve 3B işlerin uzaktan planlanmasına ve bir görselleştirme kümesinden görüntülenmesine olanak tanıyan bileşenler içerir .

ThinLinc v3.0.0 , VirtualGL ile birlikte çalışmak üzere tasarlanmıştır.

Referanslar

Ayrıca

Dış bağlantılar