Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Multimedia ja grafiikka => Aiheen aloitti: aapo - 24.06.14 - klo:09.42

Otsikko: Osittain rikkinäisen näytön käyttö?
Kirjoitti: 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?
Otsikko: Vs: Osittain rikkinäisen näytön käyttö?
Kirjoitti: nm - 24.06.14 - klo:10.05
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
Otsikko: Vs: Osittain rikkinäisen näytön käyttö?
Kirjoitti: aapo - 24.06.14 - klo:21.51
[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.

Koodia: [Valitse]
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
Koodia: [Valitse]
|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ää:
Koodia: [Valitse]
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ää:
Koodia: [Valitse]
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
Koodia: [Valitse]
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.
Otsikko: Vs: Osittain rikkinäisen näytön käyttö?
Kirjoitti: aapo - 24.06.14 - klo:23.50
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:
Koodia: [Valitse]
#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]