gf_surface_info_t

Информация о поверхности

Формат:

#include <gf/gf.h>
typedef struct {
gf_sid_t sid;
int w;
int h;
gf_format_t format;
unsigned stride;
uint64_t paddr;
uint8_t* vaddr;
gf_palette_t palette;
unsigned flags;
} gf_surface_info_t;

Описание:

Структура gf_surface_info_t имеет как минимум следующие поля:

sid
Уникальный идентификатор графической поверхности, созданной io-display. Уникальность гарантируется в пределах графического устройства. Если поверхность была создана не менеджером io-display (например, при использовании gf_surface_attach()), поле устанавливается в значение GF_SID_INVALID.
w, h
Ширина и высота поверхности в пикселях.
format
Формат данных (пикселей) в поверхности. Список доступных форматов указан на странице gf_format_t.

Note: Формат, возвращаемый функцией gf_surface_get_info() будет endian-specific.

stride
Число байт на одну строку данных (scanline).
paddr
Физический адрес ассоциированного с поверхностью буфера. Поле актуально только при установленном флаге GF_SURFACE_PHYS_CONTIG в поле flags данной структуры.
vaddr
Виртуальный адрес ассоциированного с поверхностью буфера. Поле актуально только если поверхность создавалась при установленном флаге GF_SURFACE_CREATE_CPU_LINEAR_ACCESSIBLE.
palette
Палитра поверхности. См. тип gf_palette_t. Поле актуально только для формата поверхности GF_FORMAT_PAL8.
flags
Флаги, характеризующие дополнительные атрибуты поверхности:
GF_SURFACE_DISPLAYABLE
Повехность может использоваться в качестве базовой для контроллера дисплеев.
GF_SURFACE_CPU_LINEAR_READABLE
Возможно прямое чтение данных в поверхности со стороны CPU.
GF_SURFACE_CPU_LINEAR_WRITEABLE
Возможна прямая запись данных в поверхность со стороны CPU.
GF_SURFACE_2D_READABLE
Поверхность доступна для чтения со стороны 2D ускорителя.
GF_SURFACE_2D_TARGETABLE
Поверхность доступна для рендеринга со стороны 2D ускорителя.
GF_SURFACE_3D_READABLE
Поверхность доступна для чтения со стороны 3D ускорителя (флаг не носит практического характера и сохранен лишь из соображений обратной совместимости).
GF_SURFACE_3D_TARGETABLE
Поверхность доступна для рендеринга со стороны 3D ускорителя (флаг не носит практического характера и сохранен лишь из соображений обратной совместимости).
GF_SURFACE_ALPHA_MAP
Поверхность может использоваться 2D ускорителем в качестве альфа-карты.
GF_SURFACE_SCALER_DISPLAYABLE
Поверхность может использоваться скейлером видео-оверлея (флаг не носит практического характера и сохранен лишь из соображений обратной совместимости).
GF_SURFACE_VMI_TARGETABLE
Поверхность может использоваться встроенным видео ядром для записи кадров (флаг не носит практического характера и сохранен лишь из соображений обратной совместимости).
GF_SURFACE_DMA_SAFE
Поверхность доступна DMA устроствам в качестве непрерывного блока памяти.
GF_SURFACE_PAGE_ALIGNED
Память поверхности выделена от начала страницы памяти и ее линейный размер кратен размеру страницы.
GF_SURFACE_BYTES_REVERSED
Порядок байт в поверхности обратный. Флаг актуален только для 16- и 32- битных поверхностей.
GF_SURFACE_NON_CACHEABLE
Память данной поверхности должна маппироваться как не кешируемая.
GF_SURFACE_WT_CACHEABLE
Память данной поверхности может быть смаппирована как WT-кешируемая (write-through cacheable), но не WB-кешируемая (write-back cacheable).
GF_SURFACE_PHYS_CONTIG
Память поверхности физически непрерывна.
GF_SURFACE_DRIVER_NOT_OWNER
Драйвер графической подсистемы не является владельцем этой поверхности и не создавал ее.

Note: В большинстве случаев есть однозначная взаимосвязь перечисленных флагов со значениями GF_SURFACE_CREATE_xxxx параметра flags, передаваемого функциям gf_surface_create() и gf_surface_create_layer(). Так, перечисленные ниже флаги создания будут представлены в структуре gf_surface_info_t следующими значениями:
GF_SURFACE_CREATE_2D_ACCESSIBLE
При успешном создании поверхности превратятся в комбинацию GF_SURFACE_2D_READABLE и/или GF_SURFACE_2D_TARGETABLE флагов.
GF_SURFACE_CREATE_3D_ACCESSIBLE
При успешном создании поверхности превратятся в комбинацию GF_SURFACE_3D_READABLE и/или GF_SURFACE_3D_TARGETABLE флагов.
Все остальные флаги, доступные через поле flags структуры gf_surface_info_t и не имеющие соответствующего отражения на этапе создания поверхности, используются только для уведомления о дополнительных возможностях поверхности. Любые иные попытки связать две совокупности флагов являются потенциальным источником ошибок.

Классификация:

Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework

Тематические ссылки:

gf_surface_get_info()




Предыдущий раздел: GF API