А вот если я хочу отрендерить в буфер, который в памяти CPU - то какие есть модные способы стащить результат, кроме glReadPixels?
Сейчас изо всех углов полезут сраные моралисты. Мол, девушка не должна дышать всякой дрянью, мол, дети больные будут, то, сё, ты же не днище-алкашка из белого гетто. Когда-то никто не верил, что это можно запретить — всем же понятно, что за производством отравы стоят целые империи, и вековые картельные сговоры и общественные традиции не сломать какими-то там законами. Были демонстрации, бунты. Начиналось всё довольно мило — давайте ограничим часть прав "наркоманов" в пользу "здоровых" людей. Затем были мелкие штрафы, надо же хоть как-то припугнуть нарушителей. Недавно вот ввели смертную казнь. Ой не стоит делать это на улице, заметут — как пить дать.
А впрочем, хрен с ним. Живем один раз. Лучше умереть счастливым, чем старым и никому не нужным. Live young, die fast, или как оно там было. Я продолжаю опускаться в пучину дегенерации и мучительно убивать себя и окружающих. Вот и очередной клиент. Я делаю глоток свежего воздуха и привычным движением срываю никотиновый респиратор с ничего не подозревающей жертвы. Подыши-ка и ты воздухом, гадина! Это тебе за всё — за таблички "No Breathing", за "один вдох кислорода убивает лошадь" и весь прочий бред, за массовую истерию. Мы — дышальщики, и будем бороться за свои права до последнего!
Суть такова:
драйвер дисплея (DSS) написать я не осилил. Девайс намертво виснет при попытке записи в регистры dss. Поэтому пока что это выглядит так
xloader -> самсунговский SBL -> наш uboot -> кастомное ядро с /sdcard (если зажата кнопка. а если нет — грузит андроид)
в genode тупо вырезан инит дисплея, просто перезаписываем адрес и формат фреймбуфера.
TODO: нормальная инициализация, usb client, тачскрин, звук, 3g, dvfs и прочее энергосбережение
Пока что chainload вместо ядра.
Что могу сказать про девайс и uboot
В девайсе omap4. У нас уже есть портированный uboot на Galaxy Nexus. (https://www.youtube.com/watch?v=tcrNbwwPBkI) Причем, поскольку для Galaxy Nexus есть утилита для прошивки по usb, даже когда стерт бутлодер xloader из emmc (то есть, брикнуть его нельзя) — там uboot грузится сразу, вместо самсунговского бутлодера. Посмотрю — возможно, получится утилиту от Galaxy Nexus адаптировать под этот планшет
В uboot недавно появилась поддержка файловой системы EXT4, и теперь он не виснет при чтении андроидовских ФС. Теперь можно кастомные ядра/скрипты класть в папку во внутреннем хранилище.
Кстати, я перенес на последнюю версию uboot патчи для андроидовского mkbootimg формата — можно залить uboot вместо recovery, например, и использовать ванильные немодифицированные прошивки.
Что неудобно — в uboot для omap нет DFU, и в uboot вообще нет fastboot. Есть только в версиях от ti/omapzoom, которые основаны на коде 2007 года, и там нет ничего. даже фреймбуффера. С фреймбуффером вообще беда на омапах. С клоками все запутано, у меня так и не завелось в omap4 и uboot пока что
Про L4 — видимо, будет отдельный пост. Пока что основные задачи — завести usb (линуксовый драйвер в Genode в целом удалось прикрутить, но данные идут только в configuration EP, а в остальные — нет), и фреймбуффер. На планшете плохо — нет uart (у меня, по крайней мере, кабель не собран по причине лени), и отлаживать тяжело
А о том, что энергосбережение под линуксом всегда оставляло желать лучшего. И тут я заметил, что в простое ноут кушает 7 ватт, а после цикла суспенд-резьюм — 15-19. Это меня никак не устраивало, и я погуглил. Оказываетя, дискретное видео (радевонь) включается втихаря, а acpi и vga_switcheroo об этом не знают.
В интернете предложен workaround — делать ON/OFF через switcheroo. Но тут пробема — видеокарта думает, что она включена, зависает, и ноут на минуту замирает.
Я тут набросал патчик, который игнорит состояние (on/off) в switcheroo и все неактивные карты (к котором не привязаны драйвера) при просыпании ноута отключает. Вроде после нескольких циклов на месте 7 ватт с интелом.
Может кто-нибудь потестить, отписаться в lkml, предложить вариант переделки?
marc.info если что
нашел эпичный тред lkml.org где мейнтейнеры удивленно хлопают глазами типа "а откуда там нулевой указатель? где проебали синхронизацию?". и пока они там думают, как архитектурно красиво решить проблему, проблема остается: делаем на девайсе open, выдергиваем девайс, делаем ioctl — ядру пизда. чувствую, придется выделить на это день и либо натыкать проверок на NULL, либо разбираться в дебрях scsi, чтобы запилить патч, который не стыдно в рассылку кинуть. а то скоро ядра 3.X, udisks и все прелести будут во всех дистрах, и печально, что линукс будет падать от флешек, как какой-нибудь freebsd
на оффсайте была прекомпиленная версия (для FC3, ога), но она хотела readline4 и очень древний libstdc++, так что пришлось перекомпилить. выяснилось, что код древний (2003 год) и написан с забиванием на стандарты. в итоге — clisp работает с кучей варнингов и половину бинарей не компилит. sbcl и cmucl вообще сразу падают (в том числе и потому, что где-то используется пакет user вместо common-lisp-user). я написал автору компилера. он говорит — да забей и скачай CafeOBJ, а я вообще на сайте напишу, что нечего лазить, если не некрофил.
в общем, у меня вопрос — почему люди используют windows на учебных компьютерах, как они умудряются откапывать софт, которым никто не пользуется и насколько адекватно строить учебный курс на базе такого софта.
Можно запускать приложения через лаунчер img40.imageshack.us
Можно пользоваться интернетом img40.imageshack.us
Звонить в справочную МТС img822.imageshack.us
И читать pdf img189.imageshack.us
Если серьезно — то внутри это сборки через openembedded и e17 в качестве гуя (да, иксы). Телефон и железки через freesmartphone.org (и dbus кругом). Сам fso написан на vala и модуляризирован, можно писать плагины для gsm, управления питанием. Я два года ждал такую ОС, с тех пор, как убили кутопию.
В отличии от meego, для работы без тормозов не нужен opengl es 2.0, так что старые мобилки не в прососе. На моем небыстром девайсе гуй рисуется быстрее, чем в ондройеде
В общем, осталось портировать alsa драйвер (вместо андроидного костыля) и портировать девайс на новое ядро (где исправлены баги с wifi) и можно устраивать полевые испытания и интегрироваться в SHR
этот udisks — фееричный пиздец. он на все съемные диски вешается и опрашивает их (как hal polling). только почему-то он часто забывает прекратить прослушку, когда устройство из системы убирают. последствия тут два. первое — проебан файловый дескриптор и вместо sdb в следующий раз создастся sdc. второе — это говно не дает ядру нормально уйти в саспенд (кому интересно, могут загуглить. туча багрепортов и ни одного коментария разработчиков)
в общем, это в очередной раз подтверждает, что fd.o оккупирован пидорасами. и вроде бы все компоненты по отдельности хорошо развиваются (mesa, xorg, dbus, gst), а пользовательское окружение стремительно катится в говно. потому что раз в полтора года стабильно надо выкинуть все, что есть и переписать с нуля
Внезапно — проприетарщина. Оказывается, gps юзает проприетарный протокол MEIF, спецификации которого доступны с жутким NDA. А демон этого дела в андроиде занимает целый мегабайт, так что окучивать эту фигню нет ни малейшего желания. Тем более, что ни разу в андроиде я не дождался фикса и не видел его в работе.
А с bluetooth интересней. Там стоит bcm4329. Понятно, что bluetooth работает, исходники патчрама доступны. Но по одной дискуссии в irc я узнал, что в этом bcm4329 стоит arm7tdmi для управления BT/FM радио и cortex m3 для WiFi. Конечно, речи о том, чтобы запилить линупс туда не идет, но было бы неплохо сдампить из него прошивку и запилить V4L2 драйвера для радио. На большинстве коммерческих девайсов он не используется как радио и I2S интерфейс не подключен, но звук можно перенаправить через pcm транспорт от bluetooth и, скорее всего, через hci транспорт тоже, но тогда придется декодировать программно
Раньше был драйвер evtouch, который хватал эвенты от тачскрина и умел мультитач и эмуляцию правого клика. Потом программисты иксовые решили — негоже в драйвере всякую фигню обрабатывать, лучше сделаем отдельную либу. И таки напилили. Есть базовый драйвер evdev. К нему в юзерспейсе разные обработчики. Есть два вида
Первое — пакет utouch, который содержит библиотеки и какодемона для обработки жестов и мультитачей. Вся эта дребедень требует поддержки со стороны приложений, и описана в стандарте с говорящим названием GEIS (gesture engine interface support, однако), который достиг уже версии дваноль, как и положено любому серьезному проекту.
Второе — программа ginn. Которая "Gesture Injector: No-GEIS, No-Toolkits". Ну раз без геев и тулкитов — уже хорошо. В ней можно в зумле вполне себе декларативно описывать жесты. Кроме того, по дефолту в том зумле написаны популярные жесты. Проверил в evince — скролл двумя пальцами, поворот страницы двумя пальцами. Хотя тайминги можно и подправить под себя