GdkDmabufTextureBuilder

自:4.14

描述 [源码]

final class Gdk.DmabufTextureBuilder : GObject.Object
{
  /* No available fields */
}

GdkDmabufTextureBuilder是用于从DMA缓冲区构建GdkTexture对象的构建器。

DMA缓冲区通常称为dma-buf

DMA缓冲区是Linux内核的一个特性,用于实现硬件(如编解码器、GPU、显示器、摄像头及其控制它们的内核驱动程序)之间的有效缓冲区和内存共享。例如,解码器可能希望其输出直接与显示服务器共享,以便在没有副本的情况下渲染。

任何参与DMA缓冲区共享的设备驱动程序都可以作为缓冲区的导出方或导入方(或两者兼有)。

通过DMA缓冲区共享的内存通常存储在非系统内存中(可能是设备的本地内存或其他无法直接通过CPU访问的内容),并且从CPU访问此内存可能会产生高于通常的开销。

对于图形数据,数据由多个独立的内存块组成并不罕见,比如,分别为红色、绿色和蓝色通道的块。这些块被称为平面DMA 缓冲区最多可以有四个平面。即使内存是一个单独的块,数据也可以通过从数据开头指定偏移量,组织成多个平面。

DMA 缓冲区向用户空间公开为文件描述符,以便在进程之间传递。如果DMA 缓冲区有多个平面,则每个平面都有一个文件描述符。

数据格式(对于图形数据,主要是其颜色空间)由一个 32 位整数描述。这些格式标识符在头文件 drm_fourcc.h 中定义,并且通常称为fourcc 值,因为它们由 4 个 ASCII 字符标识。此外,每个 DMA 缓冲区都有一个修饰符,它是一个 64 位整数,描述内存布局的驱动程序特定的详细信息,比如平铺或压缩。

出于历史原因,一些 dma-buf 的生成器不会提供显式修饰符,而是返回 DMA_FORMAT_MOD_INVALID 来表明它们的修饰符是隐式的。GTK 尝试接受 DMA_FORMAT_MOD_INVALID 作为修饰符,来适应这种情况。

GdkDmabufTextureBuilder 的操作非常简单:创建一个纹理生成器,设置所有必需的属性,然后调用 gdk_dmabuf_texture_builder_build() 来创建新纹理。

dma-buf 纹理的必需属性为:

  • 以像素为单位的宽度和高度

  • 标识 dma-buf 的格式和内存布局的 fourcc 代码和 modifier

  • 每个平面的文件描述符、偏移量和步长

GdkDmabufTextureBuilder 既可用于快速一次性构建纹理,也可保留并重复使用以构建多个纹理。

如需更多信息,请查看:

自版本 4.14 起可用

层次结构

hierarchy this GdkDmabufTextureBuilder ancestor_0 GObject ancestor_0--this

祖先

构造函数

gdk_dmabuf_texture_builder_new

创建一个新纹理生成器。

自:4.14

实例方法

gdk_dmabuf_texture_builder_build

使用生成器中设置的值构建一个新 GdkTexture

自:4.14

gdk_dmabuf_texture_builder_get_color_state

获取先前通过 gdk_dmabuf_texture_builder_set_color_state() 设置的颜色状态。

自 4.16 起提供

gdk_dmabuf_texture_builder_get_display

返回此纹理生成器关联的显示器。

自:4.14

gdk_dmabuf_texture_builder_get_fd

获取某个平面的文件描述符。

自:4.14

gdk_dmabuf_texture_builder_get_fourcc

获取先前通过 gdk_dmabuf_texture_builder_set_fourcc() 设置的格式,或在未设置格式时获取 0。

自:4.14

gdk_dmabuf_texture_builder_get_height

获取先前通过 gdk_dmabuf_texture_builder_set_height() 设置的高度,或在未设置高度时获取 0。

自:4.14

gdk_dmabuf_texture_builder_get_modifier

获取修饰符值。

自:4.14

gdk_dmabuf_texture_builder_get_n_planes

获取平面的数量。

自:4.14

gdk_dmabuf_texture_builder_get_offset

获取某个平面的偏移量值。

自:4.14

gdk_dmabuf_texture_builder_get_premultiplied

数据是否是预乘的。

自:4.14

gdk_dmabuf_texture_builder_get_stride

获取一定平面的跨距值。

自:4.14

gdk_dmabuf_texture_builder_get_update_region

获取先前通过 gdk_dmabuf_texture_builder_set_update_region()NULL(如果没有设置)设置的区域。

自:4.14

gdk_dmabuf_texture_builder_get_update_texture

获取先前通过 gdk_dmabuf_texture_builder_set_update_texture()NULL(如果没有设置)设置的纹理。

自:4.14

gdk_dmabuf_texture_builder_get_width

获取先前通过 gdk_dmabuf_texture_builder_set_width() 设置的宽度,或在没有设置宽度时获取 0。

自:4.14

gdk_dmabuf_texture_builder_set_color_state

设置纹理的色态。

自 4.16 起提供

gdk_dmabuf_texture_builder_set_display

设置这个纹理生成器关联的显示器。

自:4.14

gdk_dmabuf_texture_builder_set_fd

设置一定平面的文件描述符。

自:4.14

gdk_dmabuf_texture_builder_set_fourcc

设置纹理的格式。

自:4.14

gdk_dmabuf_texture_builder_set_height

设置纹理的高度。

自:4.14

gdk_dmabuf_texture_builder_set_modifier

设置修饰符。

自:4.14

gdk_dmabuf_texture_builder_set_n_planes

设置纹理的平面数。

自:4.14

gdk_dmabuf_texture_builder_set_offset

设置一定平面的偏移量。

自:4.14

gdk_dmabuf_texture_builder_set_premultiplied

设置数据是否预乘。

自:4.14

gdk_dmabuf_texture_builder_set_stride

设置一定平面的跨距。

自:4.14

gdk_dmabuf_texture_builder_set_update_region

设置这个纹理要更新的区域。通过 GdkDmabufTextureBuilder:update-texture 结合使用,可以描述先前纹理的更新。

自:4.14

gdk_dmabuf_texture_builder_set_update_texture

设置这个纹理要更新的纹理。参见 gdk_dmabuf_texture_builder_set_update_region() 了解说明。

自:4.14

gdk_dmabuf_texture_builder_set_width

设置纹理的宽度。

自:4.14

GObject (43) 继承的类方法

请参见 GObject 以获取完整的方法清单。

属性

Gdk.DmabufTextureBuilder:color-state

纹理的色态。

自 4.16 起提供

Gdk.DmabufTextureBuilder:display

这个纹理要在这个显示器上使用。

自:4.14

Gdk.DmabufTextureBuilder:fourcc

纹理的格式,用 fourcc 值表示。

自:4.14

Gdk.DmabufTextureBuilder:height

纹理的高度。

自:4.14

Gdk.DmabufTextureBuilder:modifier

修饰符。

自:4.14

Gdk.DmabufTextureBuilder:n-planes

纹理的平面数。

自:4.14

Gdk.DmabufTextureBuilder:premultiplied

alpha 通道是否被预乘到其他通道。

自:4.14

Gdk.DmabufTextureBuilder:update-region

GdkDmabufTextureBuilder:update-texture 的更新区域。

自:4.14

Gdk.DmabufTextureBuilder:update-texture

GdkDmabufTextureBuilder:update-region 是其更新的纹理。

自:4.14

Gdk.DmabufTextureBuilder:width

纹理的宽度。

自:4.14

信号

GObject (1) 继承的信号
GObject::notify

当对象通过 g_object_set_property()、g_object_set() 等方式设置其一个属性的值时,就会对它发出 notify 信号。

类结构

struct GdkDmabufTextureBuilderClass {
  /* no available fields */
}

没有可用的描述。