Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Jun 18, 2019 8:12 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Sat Apr 28, 2012 9:09 pm 
Есть такая проблема: нетбук RoverBook U800 имеет не совсем стандартное железо для режима Vesa. Встроенная Flat panel имеет физические размеры 800*480. В то время как ближайший доступный режим это 800*600. Но отображается он 1:1, причем нижняя часть экрана, хоть и существует в видеопамяти, но ее не видно.
Все остальные режимы отображаются либо растяжкой, либо комбинацией растяжки с обрезкой. Нормально пользоваться отображением при этом сложно.

Раньше я пользовался простеньким хаком:
Spoiler: Show
Code:
   movzx eax,word [BOOT_VAR+0x900C]  ; Y max
;start fix for U800L
   cmp   eax,600
   jne   @f
   mov   eax,480
@@:
;end fix for U800L
   dec   eax
   mov   [Screen_Max_Y],eax

О чем уже сообщал тут viewtopic.php?f=25&t=785&start=34
Но переделывать ядро каждый раз несколько неудобно и непрактично.

По этой причине я думаю добавить функцию, которая будет устанавливать ограничение высоты (что требуется мне) и ширины (что может потребоваться кому то еще, а вдруг). В autorun.dat будет добавлена программа, которая по умолчанию не будет делать ничего, а если прописать загрузочные параметры, вызовет эту новую функцию с запрошенными параметрами. К примеру:
Code:
CROPFLAT XSIZE=800 YSIZE=400

Вот собственно вся идея.

Если у кого есть замечания, дополнения, возражения - излагайте.


Top
   
PostPosted: Sat Apr 28, 2012 9:17 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
А когда внешний монитор подключен, как это всё работает?
Шindoшs, я так понимаю, определяет разрешение по тому, что выдает матрица, так?


Top
   
PostPosted: Sat Apr 28, 2012 9:47 pm 
У Шиндовс специальный драйвер, без него она плющит. В драйвере 2 варианта - либо плющить, либо проматывать режим 800*600. Ну и разумеется виртуально созданный режим 800*480 тоже присутствует.

Внешний монитор может иметь те разрешения которые он поддерживает, с поправкой на те что есть в списке режимов Vesa. Если режим не совместимый с Flat panel, то она отключается, а изображение на мониторе остается, однако это требует манипуляций с настройками BIOS.

Если же подразумевались последствия функции на внешнем мониторе, то он будет отображать режим 800*600, но на нижние 80 линий не будет выводиться изображение после вызова функции. Я это уже описывал очень подробно в теме, ссылку на которую я дал в первом посте. Впрочем никто ведь не заставляет использовать функцию и программу - с настройками по умолчанию она будет делать НИЧЕГО. :)


Top
   
PostPosted: Sat Apr 28, 2012 9:56 pm 
Кстати даже особо делать ничего не надо - в ядре уже есть весь нужный функционал (в kernel.asm процедура set_screen), но используется он только драйверами. Остается добавить новый системный вызов и все.


Top
   
PostPosted: Tue May 01, 2012 1:09 am 
SVN r.2654 - установить пределы отрисовки.
Описание читать в документационной части исходников ядра.

Программа будет несколько позднее.


Top
   
PostPosted: Tue May 01, 2012 8:57 pm 
SVN r.2656 - приложение CROPFLAT для установки пределов отрисовки.
Пример запуска с параметрами:
Code:
CROPFLAT XS800 YS480

Я решил сократить синтаксис, по сравнению с первоначально предложенным.


Top
   
PostPosted: Tue May 01, 2012 9:16 pm 
SVN r.2657 - CROPFLAT добавлен в ночные сборки и AUTORUN.DAT, в заремленном состоянии. Т.е. по факту он не загружается при старте и если возникнет потребность можно отредактировать AUTORUN.DAT в своей скачанной ночной сборке, с правильными параметрами.


Top
   
PostPosted: Tue May 01, 2012 9:51 pm 
Для тех кто вдруг все еще не понял, объясняю наглядно что сделано.
Снимки делались с экрана RoverBook U800, так что качество не фонтан.

Режим 640*480 - не сильно напрягаясь можно заметить, что изображение растянуто.
Spoiler: Show
Attachment:
640_480.JPG
640_480.JPG [ 70.19 KiB | Viewed 3133 times ]

Режим 800*600 - не сильно напрягаясь можно заметить, что изображение уходит за пределы экрана.
Spoiler: Show
Attachment:
800_600.JPG
800_600.JPG [ 57.21 KiB | Viewed 3133 times ]

Теперь запуск системы с добавленной в AUTORUN.DAT программой CROPFLAT и нужными параметрами. В синем загрузочном экране, как и в предыдущем случае, выбран режим 800*600.
Spoiler: Show
Attachment:
800_480.JPG
800_480.JPG [ 64.61 KiB | Viewed 3133 times ]


Если вы пользуетесь стандартными дисплеями, или эмуляторами (Qemu, Boch, VirtualBox, VMware и т.д.), или у вас работает какой либо драйвер видеокарты, сделанный для Колибри и позволяющий выбирать видеорежимы - вам эта программа не нужна.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited