Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Multimedia ja grafiikka => Aiheen aloitti: aapo - 24.06.14 - klo:09.42
-
Tapaus: Monitorin toinen puoli on rikki.
Helppo ratkaisu: Monitorilla heitto vesilintua ja uusi tilalle.
Tällä kertaa kuitenkin etsin älykkäämpää haastetta: Kuinka Ubuntua voisi käyttää näytöllä, jonka oikean puolen kaikki pikselit ovat kuolleet?
Tavoitteet:
-Mikään ikkuna (tai muu elementti) ei saa yrittää mennä kuolleelle alueelle
-Ikkunoiden 'maximize' on puolet fyysisestä näytöstä
-Pelien/videoiden full-screen on puolet fyysisestä näytöstä
(Muita?)
Olen varautunut lähdekooditason muutoksiin (kielestä riippumatta). Ei haittaa vaikka virittely ottaisi 100 tuntia ja näyttö kestäisi hengissä enää kymmenen. Kyse on enemmänkin (/täysin) akateemisesta kysymyksestä: Mikä (mitkä) järjestelmässä päättävät mihin osaan monitoria piirretään?
Mistä lähtisi liikkeelle: Xorg, video-ajurit, window-manager (mikä niistä), xrandr, xinerama?
-
Vastaavaa työpöydän alan rajaamista tarvitaan overscan-kompensoinnissa (eli underscanissa), joka on yleisemmin kaivattu ominaisuus. X.org ei taida tukea tätä muuten kuin ajurin avustuksella ja eri ajurit vaativat eri temput. Vaihtoehtoja on käyty läpi tässä keskustelussa (http://forum.ubuntu-fi.org/index.php?topic=47060.msg361986#msg361986), lähtien xrandr:n underscan-parametreista, joita ainakin avoin ati/radeon-ajuri ilmeisesti tukee.
Nvidian suljetun ajurin ViewPort-säädöt: http://forum.ubuntu-fi.org/index.php?topic=47060.msg362025#msg362025
Intelin ajuri ja intel_panel_fitter: http://forum.ubuntu-fi.org/index.php?topic=47060.msg362053#msg362053
-
[edit] merkkasin tämän jo kerran ratkenneeksi, mutta ei ollutkaan [/edit]
Kiitos linkeistä, niillä pääsin hyvin oikeaan suuntaan. Ongelma ei ollutkaan yhtään niin uniikki kuin olin pelännyt.
Sain jotain tuloksia jo pelkällä xrandrilla.
xrandr --output VGA1 --fb 1024x600 --mode 1280x1024 --panning 1024x600 --rotate right --transform 1.00,0,0,0,1.00,-680,0,0,1
Selitys: Näytöstä noin puolet oikealta on rikki. Koska haluan, että näkyvä kuva on vaaka- eikä pystyasennossa, sekä näyttö että kuva on keikautettu. Kuva olisi ollut suoraviivaisempi saada ruudun yläosaan, mutta halusin sen mieluummin alas (ja rikkinäisen osan ylös).
--output VGA1 = jostakin syystä output on oltava, vaikka ainut näyttö
--rotate right = kääntää kuvaa oikealle
--fb 1024x600 = tämä on nyt käytössä oleva resoluutio (käännön jälkeen)
--panning 1024x600 = tähän tulee sama arvo kuin fb
--mode 1280x1024 = (tämä ei ole ihan selvä) se resoluutio jota näyttö käyttäisi natiivisti
--transform 1.00,0,0,0,1.00,-680,0,0,1 = tällä tehdään siirto alemmas. Tästä lisää.
Manuaalin mukaan panningissä olisi muoto, jolla kuvaa voisi myös siirtää:1024x600+680+0 (tai 1024x600-680-0), mutta en saa sitä tekemään mitään.
Myöskin manuaalista löytyy --pos niin kuin position, mutta se taitaa toimia vain monen näytön kanssa.
Transformille annetaan 3x3 matriisi, jolla voi tehdä vaikka ja mitä (keystone, skew, rotate, suoraan sanottuna 2-ulotteisen homogeenisen koordinaatiston affiinikuvaus (http://en.wikipedia.org/wiki/Affine_transformation), jonka käsittelyssä auttaa tutkinto matematiikassa), mutta manuaalista puuttuu yksinkertainen esimerkki:
--transform 1.05,0,10,0,0.95,-680,0,0,1
joka vastaa matriisia
|1.05 0 10 |
|0 0.95 -680 |
|0 0 1 |
Tämä skaalaa x-akselin suunnassa 105%, y-akselin suunnassa 95%. Ja lisäksi siirtää kuvaa vaakasuunnassa 10 pikseliä vasemmalle (varmaankin) ja alaspäin 680 pikseliä.
-----
Ongelmia:
*Tällainen virheilmoitus tulee kun tuon xrandr loitsun heittää:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 29 (RRSetPanning)
Serial number of failed request: 30
Current serial number in output stream: 30
btw: jos koko ja offsetit ei täsmää niin virhe näyttää:
xrandr: specified screen 1024x800 not large enough for output VGA1 (1024x1280+0+0)
*Alt+tab ikkunanvaihtaja (gnome) ei tule keskelle näkyvää aluetta, vaan liian alas
*Alapalkki (gnomen palkki, joka sattuu olemaan alareunassa) ei näy, vaan siitä näkyy taustakuva läpi. (se ilmeisesti piirtyisi jonnekin aivan liian alas, jonnekin mihin hiirellä ei edes pääse)
*Näytöllä osio, joka on jätetty pois käytöstä ei välttämättä ole musta, vaan siinä näkyy haamukuvia siitä mitä siinä sattui olemaan.
*VLC -fullscreen menee liian alas (eli 'fullscreen-alue' ei ole sama kuin 'maximized-window -alue')
*Ruutu.fi (flash) fullscreen menee liian alas.
*supertux2 (sdl) kaatuu heti startista
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 153 (XFree86-VidModeExtension)
Minor opcode of failed request: 10 (XF86VidModeSwitchToMode)
Value in failed request: 0x7d
Serial number of failed request: 166
Current serial number in output stream: 168
*supertuxkart (irrlicht) ei välitä yhtään säädöistäni, vaan käyttää koko näyttöä pystyasennossa.
-
Lähestymistapa 2
Näytönohjain on neljännen sukupolven intel (82G965), kokeilen intel_panel_fitter.
Kuten tuolla aiemmin linkatussa todettiin, sen pitäisi olla paketissa intel-gpu-tools, mutta se onkin päätetty jättää pois [ http://forum.ubuntu-fi.org/index.php?topic=47060.msg362061#msg362061 ]
Tässä ehkä enempi ubuntu-tyylinen tapa:
#riippuvuudet
sudo apt-get build-dep intel-gpu-tools
#lähdekoodi
apt-get source intel-gpu-tools
cd intel-gpu-tools-1.3
#käännä
dpkg-buildpackage
#käynnistä
sudo build/tools/intel_panel_fitter
-> "This tool was only tested on Ironlake and newer"
Ja Ironlakehan on viidennen sukupolven intel [http://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_unit]