Speed comparison for frambuffer drivers (uvesafb, vesafb) in two modes: - with 8bpp (1680x1050-8@60) and - with 32bpp (1680x1050-32@60). *========*=============================================================================================* # \ # scroll method # # \ #-------------------------------*------------------------------*------------------------------* # mtrr \# redraw | ypan | ywrap # *--------*===============================*==============================*==============================* # # uvesafb # # # --------- # # 0 # # # (2.180s, --) @ (12.261s, fb) # # 2 (wb) # (15.010s, --) @ (58.550s, fb) # (2.180s, --) @ (12.155s, fb) # (2.180s, --) @ (12.157s, fb) # # 3 (wc) # (2.202s, --) @ (4.230s, --) # (1.011s, --) @ (6.715s, -b) # (1.011s, --) @ (6.720s, -b) # *========*=============================================================================================* # # vesafb # # # -------- # # 0 # # # # # 2 (wb) # # # (3.181s, ??) @ (12.305s, ??) # # 3 (wc) # (2.256s, ??) @ (4.312s, ??) # (0.235s, ??) @ # (0.289s, ??) @ (6.762s, ??) # *========*=============================================================================================* vga text console = (1.263s, --) where (`cat`_time, [forward_scroll_lag][backward_scroll_lag]) @ ( ... ) 8 bpp @ 32 bpp (TIMEs, [f-][b-]) @ (..) () @ before @ is measurements for 8bpp mode. @ () after @ is measurements for 32bpp mode. TIME is real time for command `time cat kernel-parameters.txt`. f means that forward scroll lags in `less` or `vim`. b means that backward scroll lags in `less` or `vim`. - means that scroll in corresponding direction does not lag. Notes: - As expected 'ypan'/'ywrap' scroll methods are faster than 'redraw' for both 8bpp and 32bpp with mtrr=2. But with mtrr=3 for 32bpp unexpectedly 'redraw' scroll method becomes the fastest. Though for 8bpp situation remains the same. - Also, that's strange, but i don't notice any scroll lag with 'redraw' scroll and mtrr=2 for 8bpp, though `cat` time for this mode is long enough. - results for vesafb is almost the same as for uvesafb, though `cat` time for 8bpp with mtrr=3 and 'ywrap'/'ypan' scroll is even lesser (and, also, suprisingly lesser, than for vga text console). - For mtrr=4 results are the same as for mtrr=2.
DISCLAIMER. English language used here only for compatibility (ASCII only), so any suggestions about my bad grammar (and not only it) will be greatly appreciated.
понедельник, 31 января 2011 г.
Speed comparison for some framebuffer drivers
Notes for XFree86 Video Timings howto
Some typo in Chapter 11.2 in time to ticks conversion formulas Should be VR = VAT * HSF (but not VSF!); (VFL - VR) = VBT * HSF (but not VSF!); Definition notes {{{ dot clock tick = horizontal tick dot = raster dot All four terms used here interchangeable. Though dot clock tick generally refers to time needed to process (draw?) one dot, here it's also used to measure horizontal scan line length: we take scan line length as number of dot clock ticks passed until monitor have finished to draw it. scan line tick = vertical tick scan line These three terms here also used interchangeable. Scan line tick is time needed to process (draw?) one horizontal scan line, but it's also can be used to measure vertical screen length. }}} Frames and frequencies (in ticks) {{{ DCF = RR * HFL * VFL, (RR == VSF) DCF = HFL * HSF HSF = VFL * VSF where {{{ DCF (driving clock frequency / dot clock frequency) Number of dots (pixels) per second video adapter can emit. DCF should match to monitor's video bandwidth - higher DCF will have no effect. RR (refresh rate) Number of times per second entire screen is repainted. (RR is the same as VSF); HSF (horizontal sync frequency) Number of times per second the monitor can write a horizontal scan line (HFL dot clock ticks in length). VSF (vertical sync frequency) Number of times per second the monitor can write a full screen (VFL scan line ticks in length). (The same as RR); HFL (horizontal frame length) Number of dot clock ticks needed for monitor to scan one horizontal line, including the inactive left and right borders; VFL (vertical frame length) Number of scan line ticks needed for monitor to scan entire screen, including the inactive top and bottom borders; }}} On the one hand, HFL is simply number of dots in one horizontal scan line and VFL is simply number of scan lines in the entire screen. But we know time required to scan one raster dot (duration of one dot clock tick) (1 / DCF), and time required to scan one horizontal line (duration of one scan line tick) (1 / HSF) so we also can represent HFL and VFL in seconds (see below). }}} Sync pulses (in ticks) {{{ HFL = HR + HGT1 + HSP + HGT2 VFL = VR + HGT2 + VSP + VGT2 HB = HGT1 + HSP + HGT2 VB = VGT1 + VSP + VGT2 where {{{ HR (horizontal resolution) Number of visible horizontal ticks (dot clock ticks). Or simply number of visible raster dots; VR (vertical resolution) Number of visible vertical ticks (scan line ticks). Or simply number of visible horizontal scan lines; HGT1 (horizontal guard time 1) Number of dot clock ticks to wait before sending HSP; HSP (horizontal sync pulse) Length in dot clock ticks of horizontal sync pulse; HGT2 (horizontal guard time 2) Number of dot clock ticks between end of HSP and end of horizontal frame; VGT1 (vertical guard time 1) Number of vertical ticks (scan lines) to wait before sending VSP; VSP (vertical sync pulse) Length in vertical ticks (scan lines) of vertical sync pulse; VGT2 (vertical guard time 2) Number of vertical ticks (scan lines) between end of VSP and end of vertical frame; HB (horizontal blanking) Length of horizontal blanking interval (see below) in dot clock ticks. VB (vertical blanking) Length of vertical blanking interval (see below) in scan line ticks. }}} HGT1 (VGT1) also called Front Porch and HGT2 (VGT2) - Back Porch. Horizontal (vertical) blanking interval - is interval, when beam turned off. It consists from three phases: Front porch, Sync pulse, Back porch. - Front porch - the beam is black (== blank) and still moving right (past the end of the visible part of scan line, but still at the same scan line); - Sync pulse - the beam is blacker than black and rapidly moving from right physical screen edge to the left to start scan next line; - Back porch - the beam is black (== blank) and moving right again (already at the next (now current) scan line, but before the start of its visible part); Hence, actually what we call horizontal frame locates on two scan lines, but if we map all its parts onto one line, they will not overlap. Here is illustration: time ------------------------------------------------------------------> | Scan line N | Between | Scan line (N + 1) | | scanlines | | | | >> HR >> Front >> sync >> Back >> HR >> .. >> >> porch >> pulse >> porch >> >> .. >> (visible) >> (black) >> (blacker) >> (black) >> (visible) >> .. | | | Horizontal frame N | and here is another one illustration: | HR (visible) || Front | | || porch | | || (black) | R =====>=====>======>==___>___>___R R /R - sync pulse, R ..<.........<.........<.........<........ R - move beam to the left R/ R - (blacker than black) R___>___>___=====> R | Back | | porch | | (black) | where = Beam turned on, visible ticks. _ Beam turned off, black. . Beam turned off, blacker than black. R Physical screen borders. < Beam moving to the right. > Beam moving to the left. }}} Frames and syncs in seconds {{{ HR = HAt * DCF HB = HBt * DCF VR = VAt * HSF VB = VBt * HSF HFL = HFt * DCF VFL = VFt * HSF where {{{ HAt (horizontal active time) Time (in seconds) needed by monitor to scan HR raster dots. Or, in other words, time required for HR dot clock ticks. VAt (vertical active time) Time (in seconds) needed by monitor to scan VR scan lines. Or, in other words, time required for VR scan line ticks. HBt (horizontal blank time) Time (in seconds) needed for HB dot clock ticks. VBt (vertical blank time) Time (in seconds) needed for VB scan line ticks. HFt (horizontal frame time) Time (in seconds) needed for HFL dot clock ticks. VFt (vertical frame time) Time (in seconds) needed for VFL scan line ticks. }}} }}} Common notes {{{ HFL is overall number of raster dots in one horizontal frame, or, in other words, in the one horizontal scan line. But the screen physical dimensions are constant, though HFL (as well as HR) may vary. So, physical length (in milimeters) of one raster dot depends from overall number of raster dots in horizontal frame, i.e. depends from HFL. If we increase HFL, then physical length of one raster dot will decrease, and, hence, with constant HR, physical length of visible area will decrease and black margins will increase. And vice versa: if we decrease HFL, then physical length of one raster dot will increase, and, hence, with constant HR, physical length of visible part of horizontal frame will increase and black margins will decrease. Duration of Front porch controls the size of right black margin. Duration of Back porch controls the size of left black margin. Hence, to move image to the right (left), we should move sync signal relative to HB interval to the left (right), effectively changing front and back porches. To squeeze (stretch) image in both (right/left or up/down) directions (with constant HR or VR) we should change HFL (VFL) and move sync signal in the same relative position in the HB interval, as it was before, effectively changing raster dot physical length, and hence area occupied by visible part of horizontal (vertical) frame. To change all four visible area's dimensions (with constant RR), we should change DCF, effectively changing (HFL * VFL) product. }}}
четверг, 13 января 2011 г.
Отчет о Новогоднем путешествии "Новогодний Quest 3-8 января 2011 года". Экипаж №40
(отформатированная версия оригинала с форума "Магистрали" )
3 января. Первый день путешествия Москва - Покров - Владимир
Мы совсем новички - пилот сел за руль три месяца назад. В таких поездках никогда не участвовали.
В 8-00 получили задание. Посмотрели карты, бегло пробежали контрольные точки, определили маршрут, около 13 часов выехали. Хотелось поскорее куда-нибудь доехать и отгадать загадку. Первым на нашем пути был Покров. В придорожном магазине нам указали, где стоит памятный крест и шоколадная фея. Радостно взяв свои первые КП, мы бросились к первому встречному мужчине с вопросом об островном монастыре. Мужчина оказался иностранцем, а женщина с ним - его жена - журналисткой. Они давно хотели съездить на остров, но никак не получается. Так в чем же дело? Поехали с нами! По пути наши новые знакомые рассказали нам историю монастыря. Журналистка в свое время сняла о нем фильм. В монастыре, поговорив с сестрами и объяснив кто мы, к нам пригласили матушку, которая открыла нам двери уже запертой церкви. В церкви нас попросили помочь перенести к алтарю целый ящик свечей. Мы, конечно, все сделали, и нам пообещали за это прощение грехов. Если бы все было так просто! Потом мы привезли наших знакомых домой, пообещали выслать им фотографии и поехали во Владимир, поскольку там была забронирована гостиница ( "Золотое кольцо"), которая на ближайшее время становилась нашей базой. С третьего раза заехали на парковку (все куда-то не туда тянуло), поселились в двухместном стандарте (горячая вода + завтрак + интернет, только распечатать несколько листов нам нигде в городе так и не удалось).
4 января. Второй день путешествия Владимир - Лакинск - Петушки - Покров - Новоселово - Владимир
Был посвящен городам на трассе Москва - Владимир. Лакинск особых трудностей не вызвал. Первые встречные мужики подробно рассказали, где найти памятный камень Лакину и как он выглядит. Спортсменов сами заметили. Поразились и порадовались их энергии и напору. Уличные КП в Петушках нашли быстро, посетили неохваченные в первый день музеи и собрали музейные КП. Пожалели, что нет времени отведать горячего шоколода. Решили обязательно приехать потом.
А вот памятник Гагарину поискали. Сначала проскочили поворот на мемориал, потом заехали слишком далеко к Андреевской церкви. Там встретили других участников автопробега. Служитель музея рассказал, где стоит стела, и после фотографирования мы уехали. Тихое торжественное место.
5 января. Третий день путешествия Владимир - Суздаль - Гаврилов Посад - Суздаль
Утром собрали все КП по Владимиру. Трижды пытались попасть с улицы Горького на Большую московскую, чтобы выехать в начало Октябрьского проспекта к памятнику воинам-интернационалистам (КП-58), но безуспешно. Один раз упилили по Судогодскому шоссе в поселок Коммунар, но потом все-таки пробрались куда надо по другим улицам. Дворника (КП-59) искали недолго - примерно знали, где он. А вот из Владимира в Суздаль выехали не той дорогой: выскочили на дорогу на Юрьев-Польский. Возвращаться не хотелось - надоело кружить. Решили продолжить движение, и в Старом дворе повернули по указателю направо. Дорога шла через небольшие деревни Малининский, Тарбаево, Туртино. Лед. Ветер свистит. Метель переметает. На горизонте земля соединяется с небом. Мы одни. А дорога вьется вверх-вниз и вдали уходит в небо. Вот так - дорога в небо... Замечтались-загляделись, и на вершине подъема на льду снесло нас на обочину в сугроб. Прочно так сели, по самое брюхо. Никто не проедет, одни мы, расчитывать не на что. Достали лопату - раскапывать! И вдруг - чудо: встречный джип! Останавливается. Спрашивает нас про трос, и через 20 минут после совместных усилий мы снова на дороге и в строю! Ура, мы спасены из снежного плена. Спасибо-спасибо.
Благополучно проезжаем Суздаль, мчимся в Гаврилов Посад, по пути замечая какая красота проносится мимо. Быстро находим там все точки и возвращаемся на ночевку в Суздаль (забронирована гостиница "Золотой ручей", напротив Кремля, все хорошо, но дороговато). Вечером погуляли по городу.
6 января. Четвертый день путешествия Суздаль - Юрьев-Польский - Городище - Подолец - Юрьев-Польский
Утро было посвящено памятникам в Суздале. Звонница в Спасо-Ефимьевском монастыре (КП-48) трудностей не вызвала. Удалось даже послушать звоны. Церковь Александра Невского нам указали жители (очень понравилась), а вот церковь Николая Чудотворца (КП-51) в Музее деревянного зодчества не нашли. Пришлось поехать в Кремль и на Кремлевской улице потолкаться с лошадьми. Это нас позабавило, мы быстренько сняли церковь и направились дальше.
Путь наш лежал в Юрьев-Польский. Поехали дорогой через Крапивье - Гавриловское - Цибеево - Обращиха. Эта дорога оказалась более оживленной, чем через Старый двор, и тоже очень красивой. В Юрьев-Польском сняли нужные точки быстро и поехали по деревням. Там тоже нашли все без проблем. Очень понравился Подолец, полюбовались и поехали назад. В пути поснимали закаты и дорогу. Канун Рождества. В гостинице нас ждала бутылка шампанского - подарок от администрации в честь праздника.
7 января. Пятый день путешествия Юрьев-Польский - Кольчугино - Киржач - Александров - Сергиев Посад - Александров
В этот день мы объехали наибольшее количество точек. В Кольчугино искали долго главную площадь с бюстом Кольчугина (КП-17), проверили три из четырех въездов в город в поисках сталевара, а вот Ильича нашли быстро - знали, где он спрятался. В Завалино произвела впечатление переправа через мостик из труб, а в Карабаново - проезд через арки под ж.д.
Очень понравился Махрищский монастырь, Киржач. Вечером прибыли в Александров. Музей уже был закрыт. Чтобы сэкономить время на следующий день, решили съездить в Сергиев Посад. Около Лавры быстро собрали все точки, скит нашли тоже легко, а вот скульптуру Николая Чудотворца пришлось поискать: спросить не у кого, сами найти не можем, темно, собаки воют, страшно. Огорченные, даже уезжать собрались, но вдруг по пустынной улице идет человек, мы - к нему. Рассказал нам все, оказалось - священник, нас расспросил - кто такие, зачем пожаловали. Мы ему про свой долгий путь поведали. Одобрил, благословил. К 12 часам ночи мы вернулись в гостиницу в Александров.
8 января. Шестой день путешествия Александров - Лукьянцево - Сергиев Посад-Москва
С утра - в Лукьянцево. Там на ледяной дороге встретили деда на велосипеде "Украина" и пообщались с местными молодыми людьми, которые смотрели на нас с завистью: Вы из "Магистрали"? Да. Здорово. Мы тоже хотим так же путешествовать. Следующий раз обязательно поедем.
Музей в Александрове очень понравился, а дороги - нет, самые разбитые. Нам сказали, что 31 декабря мэра города посадили за взятки. "Тебя посодют, а ты не воруй!" К 13-30 подъехали к Мытищам, потолкались в пробке. Вот мы и дома. Общий пробег составил 1334 км.
Послесловие.
Понравилось. Очень. Большое спасибо организаторам, работникам музеев, местным жителям, которые знают и любят свои города. Глоток свободы и свежего воздуха. Заряд надолго. Обязательно вернемся.
А также отдельная благодарность создателям открытой и бесплатной карты OpenStreetMap и навигационной программы Navit.
С уважением, экипаж № 40.