XWindow и vsync/hsync

Тема в разделе "WASM.UNIX", создана пользователем kas1e, 10 авг 2005.

  1. kas1e

    kas1e New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    48
    Адрес:
    moskow
    Есть ли в XWindow функции/флаги для сихронизации с обратным ходом луча ? Имеется ввиду без GL и привязки к конкретным картам. Желательно in/out тоже не юзать, чтобы было полностью системно так сказать. Чтонибудь типа XVSync() быть может или чтото такого плана ?
     
  2. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    что-то мне подсказывает что там таких функций не должно быть в принципе...
     
  3. kas1e

    kas1e New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    48
    Адрес:
    moskow
    Ну а софт который с графикой и без GL, както же синхрится наверняка чтобы мигалова не было злого ?
     
  4. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    у тебя есть пример такого софта ? может стоит просто поискать исходники ?
     
  5. kas1e

    kas1e New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    48
    Адрес:
    moskow
    Вот нашел такое: http://www.complang.tuwien.ac.at/sk...dly_xfre e86/eyefriendly_xfree86-1.0.2.tar.gz

    в readme написано мол: This little demo shows how to do flicker-free animations without the effect of tearing on XFree86. This little demo illustrates how an XFree86-extension (XF86VidMode) can be used to synchronize with the vertical retrace (vblank). Unfortunately, this trick does not work with all video-drivers.



    Т.е. можно посмотреть в сторону ViewPort.. но если это не везде будет работать то хреново .. Может чтонить организовать типа double buffering ? Основная проблема у меня в том, что при скроле текста у меня ужасное мигание такое .. вот как бы и думаю если с лучом его синхрить все будет ок.
     
  6. bf_

    bf_ New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2005
    Сообщения:
    1


    Именно. Делаем pixmap1, pixmap2. "циклируем". bitblt в окно. Без фликов - всё красиво :)
     
  7. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Нет и почти наверняка никогда не будет. По той простой причине, что вывод с иксового сервера может осуществляться на устройство далеко в сети. И вообще пора забыть про слова "ход луча" - мониторы давно уже не только CRT.
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Ход луча полезен и на LCD мониторах :derisive:

    И синхронизация по VSync как-то возможна, т.к. wine эмулирует WaitForVerticalBlank.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    kas1e

    Ага, пока сигнал синхронизации попадёт на удалённый терминал, "луч" неоднократно успеет пройтись по фосфору :)





    Он наверняка обращается к харду непосредственно, в обход сервера X.
     
  10. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    S_T_A_S_

    Ход луча полезен и на LCD мониторах :derisive:

    Абсолютно бесполезен.



    И синхронизация по VSync как-то возможна, т.к. wine эмулирует WaitForVerticalBlank.

    А разве это не монитор его эмулирует? Чтобы обеспечить работоспособность окаменевших фекалий, без вариантов ожидающих наступления пресловутого "обратного хода".
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    CyberManiac >




    Моё утверждение про полезность VSync основывается на опыте :derisive:

    Ну а кому нравятся jerking эффекты, пусть их наблюдает =)



    >




    При использовании DVI монитор похоже синхронизирует обновление по какому-то внутреннему источнику, и из-за этого видно косяки на правильно синхронизированной програмными средствами анимации (по крайней мере, на моём мониторе :dntknw:)

    Как там обстоят дела в *nix не знаю, но в виндосе WaitForVerticalBlank реалезован на уровне драйвера видеокарты. которая собственно и генерирует синхросигналы для монитора.

    Даже GDI по возможности использует синхронизацию.
     
  12. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    S_T_A_S_

    Моё утверждение про полезность VSync основывается на опыте :derisive:

    Опыт проводился со всем существующим спектром устройств видеовывода? А ведь их много: плазма, проекторы, намордники ВР, да просто сетевые терминалы.



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

    Значит, она синхронизирована _неправильно_ по определению :) Может, не стоило возиться с самостоятельной синхронизацией, а надо было переложить весь геморрой на ОС/драйвера? Факт то, что единственное, где я в Линухе видел синхронизацию по VSync - это в фирменном драйвере nVidia, и я ее вырубил нафиг, чтобы не тормозила :) Хотя где-нибудь в дебрях драйверов, входящих в состав Иксов она тоже может присутствовать для внутреннего употребления.



    Как там обстоят дела в *nix не знаю, но в виндосе WaitForVerticalBlank реалезован на уровне драйвера видеокарты.

    Важно не то, где реализовано ожидание (в ДОС это ожидание вообще делалось вручную и не удивлюсь, если и в Винде опрашивается тот же самый порт, который опрашивали 10 лет назад), важно то, откуда вообще берется "беганье луча, которого нет", особенно на DVI-устройствах, на которых физика монитора полностью отвязана от цифрового сигнала.
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    CyberManiac >




    А какая разница, весь или не весь? Мне кажется в любом случае лучше, если картинка обновляется через равные промежутки времени, чем когда придётся.



    >




    Тот же самый монитор в аналоговом режиме нормально отображал, а при использовании DVI наблюдался эффект, как при сьёмке экрана ТВ видеокамерой, только несовпадение частот было оч маленьким, поэтому "хреновая" линия проезжала медленно и плавно :) Думаю, в мониторе свой генератор, и он просто выбирает ближайшую подходящую частоту из дискретных возможных значений. не понятно, почему бы не перезапускать генератор по каждому VSync.



    >




    Да, писюк это жуткое устройство, вот в Спеке единственное преравание было по VSync, ничего ждать не нужно было :) Почему бы и сейчас не сделать возможным регистрацию какой-нибудь callback функции, которая будет вызываться каждый кадр, многие вещи были бы проще, а не через [beep] :)
     
  14. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    S_T_A_S_

    А какая разница, весь или не весь? Мне кажется в любом случае лучше, если картинка обновляется через равные промежутки времени, чем когда придётся.

    Так ведь это... Сам же жаловался, что синхронизация по лучу - "правильная", а на DVI - артефакты. А скорее всего при подключенном на DVI девайсе видеокарта и эмулирует VSync, просто выдавая в порт сигнал через определенные промежутки времени, а что там на ЛСД-матрице нарефрешилось - это уже другая песня.



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

    Это надо у спецов по DVI спросить. Может, там обратная связь как таковая не предусмотрена. А может просто данный конкретный монитор или модель монитора с тараканами в мозгах.



    Почему бы и сейчас не сделать возможным регистрацию какой-нибудь callback функции, которая будет вызываться каждый кадр, многие вещи были бы проще, а не через [beep] :)

    Уж лучше двойную буферизацию непосредственно в недрах монитора. И не ожидать VSync или чего-то там еще, а наоборот - сообщать монитору о завершении отрисовки. Что делают на современных видеокартах текстовые режимы - одной НВидии с АТИ известно, в Линухе консоль уже давно во фреймбуфере живет без проблем, а эти рукодельцы все еще совместимость с MDA на кой-то пенис обеспечивают. Но это уже светлые мечты из области "а если выкинуть из процессоров 16-битные режимы, да сделать все команды равной длины, да добавить регистров, чтобы как в Альфе...". Но реально сейчас имеем, что все хреново, зато совместимость со старыми багами не пострадала :)
     
  15. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    CyberManiac





    ...





    Как хорошо, что ты не занимаешь какой-нить руководящий пост в нвидиа/ати/микрософт/etc. :))
     
  16. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _BC_

    Как хорошо, что ты не занимаешь какой-нить руководящий пост в нвидиа/ати/микрософт/etc. :))



    Что же хорошего? Али протухшие фекальки а-ля CGA-режимы в шестой Гейфорсине так сильно радуют? Нет, тут всю систему надо менять. ЯЯ был бы беспощаден к врагам рейха... Тьфу! Железной рукой ввел бы человечество в светлое будущее... Не, опять не то. Вот: подавив сопротивление ретроградов, преодолев косность и инертность обывательского мышления, обеспечил бы внедрение наиболее передовых и современных технологий на благо всего человечества! Так правильно.
     
  17. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Вот этого я и боялся. :) Не дай божЕ text-mode исчезнет. Аппаратный курсор и аппаратный знакогенератор куда лучше, нежели это рисование "консоли" в окне по пикселам.
     
  18. Nimnul

    Nimnul New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    136
    Адрес:
    не Китай
    > Не дай божЕ text-mode исчезнет



    Боишся влюбиться в разработку интерфейсов GUI? :)