Kirjoittaja Aihe: Osittain rikkinäisen näytön käyttö?  (Luettu 2932 kertaa)

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Osittain rikkinäisen näytön käyttö?
« : 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?
« Viimeksi muokattu: 24.06.14 - klo:23.14 kirjoittanut aapo »

nm

  • Käyttäjä
  • Viestejä: 16250
    • Profiili
Vs: Osittain rikkinäisen näytön käyttö?
« Vastaus #1 : 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, 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
« Viimeksi muokattu: 24.06.14 - klo:10.10 kirjoittanut nm »

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Vs: Osittain rikkinäisen näytön käyttö?
« Vastaus #2 : 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, 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.
« Viimeksi muokattu: 24.06.14 - klo:23.21 kirjoittanut aapo »

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Vs: Osittain rikkinäisen näytön käyttö?
« Vastaus #3 : 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]