LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

С помощью дополнительного экранного буфера как в Haiku.

Не было в 85-м вычислительной мощности под дополнительный экранный буфер. И в 95-м почти не было.

А какой тогда XRenderComposite без композитора?

  1. У иксов может быть «дополнительный экранный буфер» под капотом, о котором оно сообщать приложению не обязано.
  2. Иксы могут просто планировать начало отрисовки во фреймбуфер сразу за концом развёртки кадра, чтобы он рисовался за время виртуального «обратного хода луча». Не 85-й год, времени для отрисовки хватит в большинстве случаев.

Всё рисовать в дополнительный экранный буфер, а когда вызвали EndPaint, копировать часть занятую окном в фреймбуфер с vsync.

Это всё прекрасно и замечательно, но так как под иксами тулкиты выполняют вывод в экранную поверхность ОДНОЙ командой, то там и костыль в виде EndPaint не нужен.

BeginPaint/EndPaint настраивает область отсечения, это его официальное, документированное предназначение. Ничего про вертикальную синхронизацию там нет. Ну во времена Windows 1.0 другим способом организовать отрисовку не представлялось возможным.

Почему то до этого (Windows Vista - 8.1) всё мигало при изменении окна несмотря на наличие композитора.

Двадцать раз уже обсуждали. Отрисовка должна быть грамотно синхронизирована с границами кадров на всех этапах от тулкита до драйвера. Вон в иксах до сих пор исправить не могут, хотя и композиторы завезли, и чёрта лысого.

Исходная версия wandrien, :

С помощью дополнительного экранного буфера как в Haiku.

Не было в 85-м вычислительной мощности под дополнительный экранный буфер. И в 95-м почти не было.

А какой тогда XRenderComposite без композитора?

  1. У иксов может быть «дополнительный экранный буфер» под капотом, о котором оно сообщать приложению не обязано.
  2. Иксы могут просто планировать начало отрисовки во фреймбуфер сразу за концом развёртки кадра, чтобы он рисовался за время виртуального «обратного хода луча». Не 85-й год, времени для отрисовки хватит в большинстве случаев.

Всё рисовать в дополнительный экранный буфер, а когда вызвали EndPaint, копировать часть занятую окном в фреймбуфер с vsync.

Это всё прекрасно и замечательно, но так как под иксами тулкиты выполняют вывод в экранную поверхность ОДНОЙ командой, то там и костыль в виде EndPaint не нужен.

BeginPaint/EndPaint настраивает область отсечения, это его официальное, документированное, предназначение. Ничего про вертикальную синхронизацию там нет. Ну во времена Windows 1.0 другим способом организовать отрисовку не представлялось возможным.

Почему то до этого (Windows Vista - 8.1) всё мигало при изменении окна несмотря на наличие композитора.

Двадцать раз уже обсуждали. Отрисовка должна быть грамотно синхронизирована с границами кадров на всех этапах от тулкита до драйвера. Вон в иксах до сих пор исправить не могут, хотя и композиторы завезли, и чёрта лысого.