LINUX.ORG.RU

X.Org Server 1.17

 , ,


0

2

Состоялся очередной выпуск графического сервера X.Org за номером 1.17.

Особенности выпуска:

  • Интеграция DDX-драйвера xf86-video-modesetting, являющегося аналогом универсального драйвера vesa, но работающего поверх KMS. Драйвер позволяет использовать любое оборудование, умеющее работать с KMS, но не имеющее собственного драйвера. Для 2D-ускорения используется подсистема GLAMOR.
  • Множественные оптимизации поддержки GLAMOR.
  • Удалены тысячи строк сломанного и устаревшего кода.

Следует заметить, что в этом выпуске был изменён ABI (поддержка нового ABI уже присутствует в бинарном драйвере Nvidia версии 346.22 и выше).

Получить новую версию можно отсюда

>>> Подробности



Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от Deleted

WinAPI. Писал на чистом нем около года. С виду как будто документировано на MSDN, но в виде «А пишется так, Б пишется так. Как писать АБ вот есть пример в комментариях.» А тут надо БА написать. И начинаются танцы с бубнами. И подсмотреть негде и неделю так дергаешься, пока где-то на каком-нибудь форуме не натыкаешься на пост какого-то чувака, который попробовал БффЫк-Кы-КыА и вроде-бы что-то получилось.

sambist ★★
()
Ответ на: комментарий от sambist

WinAPI

Оно ведь не изменяется, как и иксы, не? Технически, баг в иксах может повредить видеоадаптер? Я сам не в курсе, но когда доки толком нет, всякое может быть.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

видимо ещё не закоммитили

Закоммитили. Этот драйвер теперь интегрирован в код Xserver, о чем новость и говорит:

Интеграция DDX-драйвера xf86-video-modesetting

http://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting

То есть с 1.17 должен автоматом по идее.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Но я не очень понимаю, зачем его использовать. Если есть родной драйвер, то в нем все то же самое будет и даже побольше. Все равно они все, современные, KMS используют и могут использовать GLAMOR. Надо самый новый nouveau попробовать.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Deleted

Оно ведь не изменяется, как и иксы, не?

Му-ха-ха. Уж не помню, как функция называется, в общем возвращала версию шинды. Возвращала и возвращала, хрен с ней. Потом оказалось, что с обновлением шинды они ее то-ли забыли поменять, то-ли им показалось что инфы в ней стало мало, сделали точно такую-же, только с постфиксом GetVersionEx. Они вообще любят делать <name>Ex функции. В общем работало оно какое-то время. Потом кто-то обратил внимание, что в функции косяк и она неправильно возвращает версию (различается с !Ex вариантом). А все потому, что GetVersion возвращает все по чесноку, а GetVersionEx за каким-то хреном ту, которая поставлена галочкой в свойствах совместимости. Получается, что когда старенькое приложение, использующее GetVersion (написанное под 95\98\2000\ME) запускается под например XP в режиме совместимости с 95\98\2000\ME, оно получает запредельное значение версии ОСи и говорит пользователю пройти в пешее эротическое. Вместо того, чтобы исправить Ex (или наоборот) вариант, они объявили его deprecated (а впоследствие и выкинули нахрен, отчего тонна программ под 8.1 просто упала в SegFault), а вместо него... Парам-пам-пам, макросы!. При этом вы все равно этой функцией ничего не узнаете, потому что... Парам-пам-пам:

Windows 8 is 6.2.
Windows Server 2012 is also 6.2.
Ну и как написано в MSDN:

In short: GetVersion(Ex) lies to you unless you explicitly embed a manifest to indicate your app is compatible with Windows 8.1.

Но при всем при этом вы не знаете, когда использовать макросы, а когда GetVersion, потому что... Да потому что вы не знаете версию, а для того, чтобы узнать версию вам нужно... Ну вы поняли. А еще их макросы-хелперы, которыми они заставляют спрашивать версию... Парам-пам-пам:

BOOL WINAPI IsWindows7SP1OrGreater(void);

Remarks

This function does not differentiate between client and server releases. It will return true if the current OS version number is equal to or higher than the version of the client named in the call. For example, a call to IsWindowsXPSP3OrGreater will return true on Windows Server 2008.

Ну вы поняли, да? Это только всего-лишь функция получения версии шинды.

Еще есть EnumCalendarInfoExEx, EnumCalendarInfoEх, EnumCalendarInfo, причем ExEx не работает ни на чем ниже висты, EnumCalendarInfoEx нужно прогонять через другую функцию, причем только под Win8., а чтобы узнать, что это win8.1...

Технически, баг в иксах может повредить видеоадаптер?

С учетом современных реалий может быть всякое. Но по идее - нет. Вообще насчет всех этих штук с повредить. Есть такая плавающая бага на аудикартах. Под виндой работает. Если грузануться в линукс - нет. Если сразу грузиться в линукс (сразу после старта компа на-холодную) то работает. Прикол в том, что линуксовый драйвер что-то неправильно иницилизирует и какие-то битики в карте неправильно становятся. Лечение - либо заземлять кампютер (иногда помогает) либо не грузиться в шинду первой, тысячи их.

sambist ★★
()
Ответ на: комментарий от Zubok

XkbKeycodeToKeysym

Что-то в мане по поводу group-параметра ничего нет. Где можно по поводу этого всего окончательно вкурить? И я так понимаю, что Xkb* это уже отдельные библиотеки?

sambist ★★
()
Ответ на: комментарий от sambist

Что-то в мане по поводу group-параметра ничего нет. Где можно по поводу этого всего окончательно вкурить? И я так понимаю, что Xkb* это уже отдельные библиотеки?

О-о-о-о, этот man всем man'ам man. :) Да, это XKB - зона Ада. :) Библиотеки все те же - X11, но только это расширение протокола.

Не сломай свой мозг: http://www.x.org/releases/current/doc/libX11/XKB/xkblib.pdf :)

Еще иногда полезно не API, а сам протокол посомтреть. ТАм бывают комментарии, которые упускают иногда в описании функций

Протокол. http://www.x.org/docs/XKB/XKBproto.pdf

XKeycodeToKeysym - это core protocol. Эта функция никуда, скорее всего, не денется, но использовать ее в новых проектах не рекомендуют. Если warnings включить при сборке, то он должен предупредить об этом.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от sambist

Которое может не у всех стоять?

Уже нет давно таких реализаций, в которых этого нет. Но проверять наличие расширения надо все равно. Если его нет, то выкручиваться при помощи того, что есть. То есть fallback на core protocol и т. д. Про группы, кстати, в описании протокола написано. В раздел 2.0-2.1. В описании API не смотрел.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от sambist

Ну, я не смотрел. Если хочешь, то заведи тему в Development и что за задача. То есть почему тебе нужен этот XKeycodeToKeysym. Даже если эта функция deprecated, то не западло ее использовать.

В html:

http://www.x.org/releases/current/doc/libX11/XKB/xkblib.html

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Если хочешь, то заведи тему в Development и что за задача. То есть почему тебе нужен этот XKeycodeToKeysym. Даже если эта функция deprecated, то не западло ее использовать.

Да тут на весь ЛОР всего 3.5 человека вообще в жизни xlib руками подключали. Мне вообще по приходящему коду надо юникодный символ (код) вернуть - согласно с модификаторами\раскладкой и пр. Т.е. получая на входе event.xkey.keycode и event.xkey.state, перевести в int-код символа unicode.

Очень хотелось бы обойтись без xkb, поскольку, как я понял, его надо не параллельно со стандартныйм подключением иксов подключать, а вместо. И все функции эвентов менять и все остальные иксовые прибамбасы. Или я сильно не прав?

sambist ★★
()
Последнее исправление: sambist (всего исправлений: 1)
Ответ на: комментарий от sambist

Очень хотелось бы обойтись без xkb, поскольку, как я понял, его надо не параллельно со стандартныйм подключением иксов подключать, а вместо. И все функции эвентов менять и все остальные иксовые прибамбасы. Или я сильно не прав?

Если в общем, то очень сильно не прав. Ничего менять не надо. Это все тот же протокол X11, но только его расширение по работе с клавиатурой. Вся работа идет через то же самое подключение к X Server. Только хидеры указать нужные.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от sambist

Да тут на весь ЛОР всего 3.5 человека вообще в жизни xlib руками подключали. Мне вообще по приходящему коду надо юникодный символ (код) вернуть - согласно с модификаторами\раскладкой и пр. Т.е. получая на входе event.xkey.keycode и event.xkey.state, перевести в int-код символа unicode.

Засрем тут тему тогда не по делу. Лучше создай новую, если действительно важно. Или сразу дам варианы, а ты сам разбирайся: либо XkbKeycodeToKeysym, либо можно еще попробовать функцию из Core Protocol:

http://tronche.com/gui/x/xlib/input/XGetKeyboardMapping.html

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

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

В общем покурил я ваш документ, покурил последнюю ссылку, разгуглился хорошенько, принял дозу кофеина и нагуглил такой код:
http://stackoverflow.com/a/18288346

Проверил, работает на Xlib-core. Даже если просто в printf приткнуть такой полученный буфер то при системно кодировке в UTF8 нормальный текст выводится (русский, немецкий и пр.). Но тут я понял, что уперся в другую стену. Вот у меня поле ввода. Вот я когда оно в фокусе нажал кнопку «Ф». Этот код перевел этот «Ф» в UTF-8 {-38, -79} (цифры точно не помню, по-моему эти). Теперь мне нужно этот текст нарисовать. Для этого использую FreeType:

SmlErrors SmlRasterText(SmlIndex  index , SmlIndex  font,
                            SmlPoint  pos   , uint32_t  size,
                            char    * string, SmlColour colour)
{
    SML_CHECKELEM(index, SML_ELEM_IMAGE, SML_ERR_BADIMAGE);

    SML_CHECKELEM(font, SML_ELEM_FONT, SML_ERR_BADFONT);

    if (size == 0)
        return SML_ERR_BADVALUE;

    int32_t c_x;
    int32_t c_y;


    FT_Set_Pixel_Sizes(warehouse.elem[font].data.fnt.face, 0, size);

    uint32_t startcolour;
    unsigned char value;

    uint32_t i;
    for (i = 0; i < strlen(string); i++)
    {
        if (FT_Load_Char(warehouse.elem[font].data.fnt.face,
                         string[i], FT_LOAD_RENDER))
            return SML_ERR_BADCHAR;

        for (c_y = 0; c_y < warehouse.elem[font].data.fnt.slot->bitmap.rows;  c_y++)
        for (c_x = 0; c_x < warehouse.elem[font].data.fnt.slot->bitmap.width; c_x++)
        {
             value = warehouse.elem[font].data.fnt.slot->bitmap.buffer[
                        c_y * warehouse.elem[font].data.fnt.slot->bitmap.width +
                        c_x];

            SmlPoint t = (SmlPoint)
            {
                pos.x + c_x + warehouse.elem[font].data.fnt.slot->bitmap_left,
                pos.y + c_y - warehouse.elem[font].data.fnt.slot->bitmap_top
            };

            SmlRasterPixelGet(index, &startcolour, t);
            SmlRasterPixelSet(index, SML_COL_MIX(startcolour, colour, value), t);
        }

        pos.x += warehouse.elem[font].data.fnt.slot->advance.x >> 6;
    }

    return SML_ERR_SUCCESS;
}

Тут, разумеется, есть косяк - оно не будет рисовать что-то у чего код больше чем ASCII. FreeType работает строго в UTF-32, поэтому если я сюда пошлю UTF-8, то будут квадратики. Поэтому я сижу и балдею - то ли гонять на каждую отрисовку дорогостоящий UTF-8toUTF-32, который еще предстоит написать или скоммуниздить, либо всегда оперировать UTF-32, что для пользователя не удобно, что неудобно для получения с экрана с помощью xlib и пр.

sambist ★★
()
Ответ на: комментарий от sambist

Лучше создай отдельную тему. По выводу текста см. XRender и Xft.

Zubok ★★★★★
()
Ответ на: комментарий от sambist

Может это поможет: man mbtowc ?

Когда-то использовал для преобразования из utf-8 при выводе в иксах.

anonymous
()
Ответ на: комментарий от anonymous

Она, насколько я понял, только один символ конвертит, так?

Типа такого?

while (*line)
{
    uint32_t character;
    line += mbtowc(&character, line, MB_CUR_MAX);
    processcharacter(character);
}

sambist ★★
()
Ответ на: комментарий от Zubok

у меня и так nouveau со всеми потрохами из git

на modeset насколько заметил opengl и vdpau в самом деле работают так же. но вот что интересно, результаты gtkperf:

nouveau
Total time:  2,41
Total time:  2,40
Total time:  2,40

modeset glamor
Total time:  2,61
Total time:  2,60
Total time:  2,60

ВНЕЗАПНО modeset с Option «AccelMethod» «none»
Total time:  1,62
Total time:  1,66
Total time:  1,63

примерно как на блобе, но так не работает opengl

anonymous
()
Ответ на: комментарий от sambist

Ну да. Вот, откопал:

int     mbs_to_xchar2b(XChar2b *xws, char *mbs, int max_len)
{
    int         i, k, m, len;
    wchar_t     wc;

    wc = m = k = 0;
    for(i = 0; i < max_len; i++)
    {
        k = mbtowc(&wc, mbs + m, 4);    // utf8 - 4 bytes max.
        xws[i].byte1 = (wc & 0xff00) >> 8;
        xws[i].byte2 = wc & 0x00ff;
        len = i;
//      printf("0x%04x(%d), ", wc, k);
        if(mbs[m] == 0 || k < 0)
            break;
        m += k;
    }
    return(len);
}



Это для 16-битных иксовых строк.
anonymous
()
Ответ на: комментарий от anonymous

у меня и так nouveau со всеми потрохами из git

А если там выбрать AccelMethod «glamor» (там по умолчанию, наверное, «exa»)? Новый nouveau понимает такую опцию? (я не смотрел).

UPD. посмотрел. Понимает уже.

ВНЕЗАПНО modeset с Option «AccelMethod» «none»

А если на nouveau с AccelMetod «none»? Предполлагаю, что результат такой же будет. Проверь-ка.

Вполне возможно, что операции рисования быстрее в software, чем через glamor. На данный момент может быть любое объяснение. Например, что glamor тупо еще не оптимизирован. А ты какой тест гонял?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от anonymous

Походу придется все-таки костыль городить, ибо:

        wchar_t character;

        string += mbtowc(&character, string, MB_CUR_MAX);

        if (FT_Load_Char(warehouse.elem[font].data.fnt.face,
                         (FT_ULong)character, FT_LOAD_RENDER))
            return SML_ERR_BADCHAR;
Таки не UTF32.

mbtowc почему-то сразу всю строку сжирает и возвращает 0, кстати.

sambist ★★
()
Последнее исправление: sambist (всего исправлений: 1)
Ответ на: комментарий от sambist

SmlRasterText

inn твой ник? :) Кажется, мы как раз выясняли это все тут по отрисовке: Перевод человекочитаемого имени шрифта в X-формат

Я рекомендую: сделай отдельную тему, а то новость засоряется абсолютно нерелевантными вещами. Это тема для Development. Не все читают новости.

Zubok ★★★★★
()
Ответ на: комментарий от sambist

Так я приводил работающий пример для конкретного случая. Из него надо выкинуть XChar2b и оставить только wchar.

А чем wchar_t отличается от UTF-32 ?

anonymous
()
Ответ на: комментарий от Zubok

наркоман?
[code]
strings ./radeon_drv.so |grep glam
glamor_egl_exchange_buffers
glamor_egl_destroy_textured_pixmap
glamor_glyphs_init
glamor_egl_create_textured_screen_ext
glamor_egl_init
glamor_egl_create_textured_pixmap
glamor_create_pixmap
glamor_init
glamor_egl_init_textured_pixmap
glamor_block_handler
glamor_xv_init
Set up textured video (glamor)
Failed to set up textured video (glamor)
glamor sharing todo
glamor
glamoregl
glamor not available
Failed to initialize glamor.
EXA not supported, using glamor
glamor requires R300 or higher GPU, disabling.
glamor may not work (well) with GPUs < RV515.
glamor requires depth >= 24, disabling.
Incompatible glamor version, required >= 0.3.0.
glamor detected, initialising EGL layer.
glamor detected, failed to initialize EGL.
Failed to get PRIME drawable for glamor pixmap.
Failed to initialize textured pixmap of screen for glamor.

strings ./intel_drv.so |grep glam

[/code]
http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/log/?qt=grep&q=g...
кури последние 4 коммита.

Option «AccelMethod» «string» Select acceleration method. There are a couple of backends available for accelerating the DDX. «UXA» (Unified Acceleration Architecture) is the mature backend that was introduced to support the GEM driver model. It is in the process of being superseded by «SNA» (Sandybridge's New Acceleration). Until that process is complete, the ability to choose which backend to use remains for backwards compatibility. In addition, there are a pair of sub-options to limit the acceleration for debugging use. Specify «off» or «none» to disable all acceleration, or «blt» to disable render acceleration and only use the BLT engine.

Default: use SNA (render acceleration)

Novell-ch ★★★★★
()
Последнее исправление: Novell-ch (всего исправлений: 1)
Ответ на: комментарий от Zubok

В общем, повозиться придется.
Zubok ★★★★★ (21.11.2013 0:38:49)

Ну так я и повозился.

То есть выкладывать текст, учитывать расстояния между символами и пр. тебе придется самому

Выкладываю, учитываю.

С того времени немного поразвивал все это дело. Есть то, что на скрине + чтение файлов тем с расширеным интерпретируемым синтаксисом (можно, например, задать координату как [W * 2 / 3 + 0x44 + (W > 100) * 50] ) + эвенты, таймеры, работа с окном, кнопками.
Скрин: https://dl.dropboxusercontent.com/u/31471800/p2p/Screenshot - 06.02.2015 - 07...
Вот так выглядят кнопки с натянутой темой: https://dl.dropboxusercontent.com/u/31471800/p2p/Screenshot - 06.02.2015 - 07...
Еще веду бложик, в котором вроде как сам с собой обсуждаю действия, и выкладываю интересные алгоритмы (например целочисленный квадратный корень быстрее интеловского асмовского fsqrt).

с уникодом много чего интересного всплывает

Вот оно и всплывает.

Я рекомендую: сделай отдельную тему, а то новость засоряется абсолютно нерелевантными вещами. Это тема для Development.

А мы уже закончили. Спасибо.

Не все читают новости.

Ну и правильно, меньше знают - лучше спят.

sambist ★★
()
Ответ на: комментарий от Novell-ch

кури последние 4 коммита.

Ага, верно. У меня, оказывается, был старый git на винте. Думал, что обновил. Во времена 1.16 был в коде еще, а сейчас все вычистили нафиг к выходу 1.17. Аргумент принимается: из intel ускорение через glamor удалили в конце 2014 г. полностью. Остались radeon, nouveau и modesetting.

З.Ы.

наркоман?

У меня все равно нет никакой возможности научить тебя вежливости, поэтому «наркомана» я без труда проглотил. Но у тебя всегда есть возможность сохранить реноме - ивиниться.

Zubok ★★★★★
()
Ответ на: комментарий от sambist

Мало писал, WinAPI божественны, посравнению с каким-нить GTK

anonymous
()
Ответ на: комментарий от Zubok

А если на nouveau с AccelMetod «none

пробовал, тормозит

А если там выбрать AccelMethod «glamor

то же самое, что modeset с glamor

какой тест гонял

gtkperf. попугаи в нём вроде сходятся с тем как визуально всё быстро отрисовывается

anonymous
()
Ответ на: комментарий от FireFighter

FireFighter> Зачем одни и теже люди пилят и вяленого и Иксы?

Слишком толсто.

Quasar ★★★★★
()
Ответ на: комментарий от FireFighter

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

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Сейчас актуальная версия - X11R7.

Прирезать бы таких, кто так говорит. И винда у вас самая последняя и оборудование вы каждые 3 месяца меняете, вот все у вас актуальное. И софт, который из-за несовместимости перестает работать сами переписываете.

sambist ★★
()
Ответ на: комментарий от Zubok

лол, за что извинятся? за то что у тебя старый гит? glamor удалили(причем не вчера и не сегодгя), я видел коммиты а ты говорил что в гите (значит ты его таки смотрел) glamor через uxa, какое еще у меня может быть впечатление о таком человеке?

Novell-ch ★★★★★
()
Ответ на: комментарий от kirk_johnson

если они приведут код в порядок — может и напишут

предположение о том, что до них код писали менее способные и грамотные программисты требует явного доказательства.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.