LINUX.ORG.RU

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

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

Из слова «напрямую» я предполагаю, что xft на самом деле является прослойкой к freetype.

Конечно. Xft - X FreeType library. Xft использует FreeType как растеризатор, а потом картинки глифов закидывает на X Server при помощи запросов Render Extension и там их хранит (кеширует) в виде наборов (что-то типа загружаемых шрифтов в web). Вся прелесть Render Extension состоит в том, что это расширение *аппаратно* ускорено! То есть глифы, которые на сервер убегают там спокойно могут уйти в видеопамять и там лежать, а потом когда строчку надо отрисовать, то GPU их выкладывает в картинку по командам (композитинг).

Из общего контекста предполагается, что это быстрее, чем XImage->XPixmap->XImage,

Если использовать FreeType напрямую, то все сведется к пересылке на сервер уже отрендеренных картинок на стороне клиента. Разумеется, все операции (композитинг) ложатся на плечи ЦПУ. И что окажется быстрее: рисовать все на клиенте и отсылать для отображения итоговую картинку или рисовать на сервере, где есть аппаратное ускорение, и забирать отрендеренную картинку назад к клиенту - это еще вопрос. Я такими измерениями не занимался.

Добавлю. Если X Server и клиент на разных машинах, то приложение, которому постоянно надо забирать картинки с сервера, будет работать неэффекивно, так как пиксмапы надо гонять туда-сюда. Но такие приложения редкость. В этом случае разумнее, наверное, на клиенте рисовать.

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

Из слова «напрямую» я предполагаю, что xft на самом деле является прослойкой к freetype.

Конечно. Xft - X FreeType library. Xft использует FreeType как растеризатор, а потом картинки глифов закидывает на X Server при помощи запросов Render Extension и там их хранит (кеширует) в виде наборов (что-то типа загружаемых шрифтов в web). Вся прелесть Render Extension состоит в том, что это расширение *аппаратно* ускорено! То есть глифы, которые на сервер убегают там спокойно могут уйти в видеопамять и там лежать, а потом когда строчку надо отрисовать, то GPU их выкладывает в картинку по командам (композитинг).

Из общего контекста предполагается, что это быстрее, чем XImage->XPixmap->XImage,

Если использовать FreeType напрямую, то все сведется к пересылке на сервер уже отрендеренных картинок на стороне клиента. Разумеется, все операции (композитинг) ложатся на плечи ЦПУ. И что окажется быстрее: рисовать все на клиенте и отсылать для отображения итоговую картинку или рисовать на сервере, где есть аппаратное ускорение, и забирать отрендеренную картинку назад к клиенту - это еще вопрос. Я такими измерениями не занимался.