Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс апр 23, 2017 11:03 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 8 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Сб апр 28, 2012 9:09 pm 
Есть такая проблема: нетбук RoverBook U800 имеет не совсем стандартное железо для режима Vesa. Встроенная Flat panel имеет физические размеры 800*480. В то время как ближайший доступный режим это 800*600. Но отображается он 1:1, причем нижняя часть экрана, хоть и существует в видеопамяти, но ее не видно.
Все остальные режимы отображаются либо растяжкой, либо комбинацией растяжки с обрезкой. Нормально пользоваться отображением при этом сложно.

Раньше я пользовался простеньким хаком:
Спойлер: Показать
Код:
   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 будет добавлена программа, которая по умолчанию не будет делать ничего, а если прописать загрузочные параметры, вызовет эту новую функцию с запрошенными параметрами. К примеру:
Код:
CROPFLAT XSIZE=800 YSIZE=400

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

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


Вернуться к началу
   
СообщениеДобавлено: Сб апр 28, 2012 9:17 pm 
Не в сети

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


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

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

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


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


Вернуться к началу
   
СообщениеДобавлено: Вт май 01, 2012 1:09 am 
SVN r.2654 - установить пределы отрисовки.
Описание читать в документационной части исходников ядра.

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


Вернуться к началу
   
СообщениеДобавлено: Вт май 01, 2012 8:57 pm 
SVN r.2656 - приложение CROPFLAT для установки пределов отрисовки.
Пример запуска с параметрами:
Код:
CROPFLAT XS800 YS480

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


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


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

Режим 640*480 - не сильно напрягаясь можно заметить, что изображение растянуто.
Спойлер: Показать
Вложение:
640_480.JPG
640_480.JPG [ 70.19 КБ | 2147 просмотров ]

Режим 800*600 - не сильно напрягаясь можно заметить, что изображение уходит за пределы экрана.
Спойлер: Показать
Вложение:
800_600.JPG
800_600.JPG [ 57.21 КБ | 2147 просмотров ]

Теперь запуск системы с добавленной в AUTORUN.DAT программой CROPFLAT и нужными параметрами. В синем загрузочном экране, как и в предыдущем случае, выбран режим 800*600.
Спойлер: Показать
Вложение:
800_480.JPG
800_480.JPG [ 64.61 КБ | 2147 просмотров ]


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


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 8 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB