Ako kreslit na obrazovku rovnako ako X Server

Sekcia: Programovanie 02.12.2005 | 09:07
dvh   Návštevník
Ahoj. Mam taku trochu zvlastnu otazku. X Server je v podstate program ktory kresli na obrazovku v grafickom rezime. Zabudnime teraz ze obsahuje sietove rozhranie. Existuje viacero "grafickych driverov" pre X ak to tak mozem povedat. Napr. framebuffer alebo S3, mozno vesa, ... Ako by som mohol napisat najjednoduchsi program ktory by dajme tomu nastavil graficky mod a na obrazovku nakreslil jednu ciaru. Program by samozrejme startoval z textovej konzoly a na danom stroji by nebol nainstalovany X Window System. Existuje SVGAlib ale na to zabudnite. Ziaden X server nepouziva svgalib. Asi najdolezitejsie je aby to mohli spustit aj obycajny uzivatelia, nie len root. dvh
    • Re: Ako kreslit na obrazovku rovnako ako X Server 30.11.2005 | 17:47
      azurIt   Návštevník
      obycajni POuzivatelia to spustit urcite nebudu moct (aspon nie takym sposobom ako to robia iXi), museli by mat povoleny priamy pristup na graficku kartu a este ine veci.
    • Re: Ako kreslit na obrazovku rovnako ako X Server 30.11.2005 | 20:25
      peter golis   Návštevník
      ak potrebujes spravit program co nastavi graficky mod a vykresli zakladne graficke entity, tak mas na vyber. mozes pouzit svga lib ktoru z mne neznamych pricin odmietas, ale mozes pouzit napriklad klasicky frame buffer a zapisovat do neho. ak by si potreboval nejake rozhranieco je plne kompatibilne s xwindows, tak existuje http://www.directfb.org/ ale jeho instalaciou a nastavenim clovek zabije nejaky ten cas pretoze nie je standardnou a podporovanou sucasou vecsiny distribucii ... otazne je na co to potrebujes. skus byt konkretnejsi ;-) ps.: ak hladas nieco ako bola BGI Library v dosovom c-cku alebo paskale od Borlandu, tak by aj mna zaujimalo ci niekto vytvoril jej nahradu pre ine operacne systemy.
      • Re: Re: Ako kreslit na obrazovku rovnako ako X Ser 01.12.2005 | 09:16
        dvh   Návštevník
        Ok budem konkretnejsi Chcem napisat vlastne "cosi" ako X Server. NEBUDE to nijako kompatibilne so ziadnou veriziou X. Ani protokolovo. Na rozdiel od X v tom mojom budu komponenty (tlacitka, memo, menu, okna, ...) implementovane na strane servra a ku klientovi pojde co "najuzsia cesta", samozrejme cez siet ako v X. Napr. animovane tlacitko ktore navyse reaguje na to ked nad to pridete mysou bude s klientom komunikovat len po stlaceni. Teraz v X je to tak ze vsetko musi robit klient, VSETKO musi posielat po sieti a preto je to pomale. Dalsi priklad - memo - celu agendu bude riesit server, uzivatel napr. pol hodinu pise nejaky text a za celu tu dobu netreba komunikovat s klientom, az ked to bude chciet ulozit alebo nejak dalej spracovat. Teraz sa s X servrom komunikuje po stlaceni kazdeho znaku. Teraz k vasim pripomienkam: - obycajny user to nepusti lebo bude potrebovat prava ku grafike --> ak to bude napisane TAK AKO X SERVER tak to bude most spustit aj OBYCAJNY uzivatel! - preco nechces pouzit svgalib - lebo v svgalib som onoho casu napisal jednu hru (cca 30'000 riadkov kodu) a bol to porod, nekonecne zamrznutia linux, nekonecne restarty, stale preinstalovavat linux lebo program zblbol a ako root prepisal co sa dalo... - framebuffer - ano existuje X Server pre FB ale napr. S3 nepodporuje framebuffer! Vseobecne velmi malo kariet podporuje FB. A ja bezim na S3 v X uplne v pohode. - naco to robis ved uz take nieco urcite existuje resp. X je v pohode a pouzivaju to vsetci a to tvoje nebude asi nikto --> Linux je o slobode. Mozem si robit co chcem. Navyse X nedavno oslavil 20 rokov a niektore veci v nom su uz prezite. - aby ste vedeli ze X celkom nezatracujem, tak aj ja v nom programujem, velmi casto a rad (napr. vlastny toolkit co teraz robim) ale jednoducho chcem ist vlastnou cestou. dvh
        • Re: Re: Re: Ako kreslit na obrazovku rovnako ako X 01.12.2005 | 12:28
          peter golis   Návštevník
          koli plnemu pristupu na grafiku bude musiet byt graficky interface spustany pod rootom. samozrejme ze zvysna cast engine moze byt uz spustana pou uzivatelom (koli security). ale, v tomto pripade ak clovek nepouzije hotove moduly pre kazdy typ grafiky, tak bude musiet pracovat v vesa (alebo vga) mode. nie vsetky grafiky plne zvladaju vsetky vesa mody a niektore nemaju ani plnu podporu vga modov. pristup do graficky je osetreny napriklad v jadrovom ovladaci pre FB. BTW ktora S3 nepodporuje framebuffer? je pravda ze nie vsetky S3ky budu podporovat vsetky rozlisenia pre FB, ale to uz je dane limitaciou karty. takze keby si to chcel robit uplnen od zakladu (bez pouzitia funkcnych ovladacov), tak musis riesit pracu s kazdym typom grafickej karty. a to je podla mna strata casu. ale to je len moj nazor ktory sa nemusi zhodovat s nazormi ostatnych. ps.: na 1Mb video ram si predsa clovek nespusti 1024x768x32 pretoze v tomto pripade ma len bitova mapa vecsiu velkost. a k tomu treba ratat aj s RGB paletou.
          • Re: Re: Re: Re: Ako kreslit na obrazovku rovnako a 01.12.2005 | 14:22
            dvh   Návštevník
            "koli plnemu pristupu na grafiku bude musiet byt graficky interface spustany pod rootom" - kedy si naposledy spustal X Server ako root? Ja za posledny mesiac ani raz a to mam X zapnute denne, X Server ma zrejme setuid na roota ale niesom si v tomto isty... "hotove moduly pre kazdy typ grafiky" - X Server to robi presne tak, pri instalacii vam ponuka X Server pre rozne grafiky, medzi inymi aj S3. Myslim si ze ak to robi X Server tak je to dobre riesenie aj pre mna. "BTW ktora S3 nepodporuje framebuffer? " - S3 Trio 64V+ PCI (1 MB) nepodporuje FB, ver mi viem o com hovorim uz som sa co-to nainstaloval DirectFB, GGI, FBUI a podobnych srandiciek... - jedna z mala moznosti je pouzit nejaky neoficialny kernel patch na VESA v1.2, nasiel som vsak len pre kernel 2.0.35 co je onicom... Zda sa mi ale ze sa konecne dostavame k jadru veci. Este tak zohnat nejaky "hello world" co ked spusti obyc. user tak mu to na S3 grafike nakresli ciarku na obrazovku.... Takze uz len aby niekto povedal: Robi sa to cez tzv. "NazovNiecoho" a mozem googlovat...
            • Re: Re: Re: Re: Re: Ako kreslit na obrazovku rovna 01.12.2005 | 21:55
              pzad   Návštevník
              Zdrojaky xorg. xc/programs/Xserver/hw/xfree86/driver su tam 2D drivery na grafiku staci si len vybrat (vesa nemusi byt zly zaciatok).
            • Re: Re: Re: Re: Re: Ako kreslit na obrazovku rovna 01.12.2005 | 22:10
              peter golis   Návštevník
              cast x servra ktora robi zapis do hardware grafickej karty je spustana s pravomocami roota. obycajny uzivatel nema pravo priamo pristupovat na hardware. ale moze tam pristupovat cez ovladace. toto je osetrovane modularitou xwindows takze si to clovek ani nevsimne ... ak budes chciet priamo zapisat nieco do grafiky, tak budes potrebovat bud ovladac ktory ta tam pusti (napriklad frame buffer), alebo rozhranie (svgalib, xwindows,...). alebo das danemu uzivatelovi prava aby dokazal priamo pristupovat na hardware a tym padom ho de facto spravis rootom (ci uz na stalo, alebo sa da suid na program). sme v zacarovanom kruhu a nedostaneme sa z neho. viem, toto je jedna z nevyhod linuxovych distribucii. menovite ze nemaju odlahcenu verziu kompaktneho GUI ktora zabera iba par blokov pamete. alebo mozno aj ano, ved linux sa dava aj s grafikou aj do vreckovych pocitacov.
              • Re: Re: Re: Re: Re: Re: Ako kreslit na obrazovku r 02.12.2005 | 09:07
                dvh   Návštevník
                Existuje jeden 32KB kernel modul ktory robi vyssi graficky interface k framebufferu. Tusim su tam aj okna a podobne srandy. Vola sa FBUI. Problem je ale s S3 trio 64 V+ PCI u ktorej je podpora FB taka ze sa mi to este nepodarilo rozbehat ale ja sa nevzdavam...