DMA-BUF

flowchart BT
	App@{ img: "/images/dma-buf/window-content.png", label: "vram for rendering", pos: "d", w: 60, h: 60, constraint: "on" }
	Window@{ img: "/images/dma-buf/window-frame.png", label: "vram for window frame", pos: "d", w: 60, h: 60, constraint: "on" }

	subgraph app [glxgears]
		BO_10
	end
	subgraph x11 [Xorg]
		BO_20
		BO_11
	end
	subgraph compositor [kwin_x11]
		BO_21
	end

	App ~~~ BO_10 --Exporter--> App
	App --Importer--> BO_11

	Window ~~~ BO_20 --Exporter--> Window
	Window --Importer--> BO_21
Read more »

winsys有什么用

winsys像一个桥梁,它要将GPU渲染的结果传输到窗口系统的framebuffer,由显示系统将其呈现在屏幕上。

Read more »

Rust Basic

  • Rust的编译器 rustc
  • Rust程序的构建系统或包管理器 cargo

Cargo.toml

[dependencies]

增加rand crate包后再执行构建

cargo update会做些什么

首先要了解的是在安装rustup后,在$HOME下会创建一个.cargo目录,它的目录结构大概如下

/home/luc/.cargo
|-- bin
|   |-- cargo
|   |-- cargo-clippy
|   |-- cargo-fmt
|   |-- cargo-miri
|   |-- clippy-driver
|   |-- rls
|   |-- rust-gdb
|   |-- rust-lldb
|   |-- rustc
|   |-- rustdoc
|   |-- rustfmt
|   `-- rustup
|-- env
`-- registry
    |-- cache
    |   `-- github.com-1ecc6299db9ec823
    |-- index
    |   `-- github.com-1ecc6299db9ec823
    `-- src
        `-- github.com-1ecc6299db9ec823

8 directories, 13 files

cargo update会根据工程目录下的Cargo.tomlDependencies的版本信息下载相应版本的依赖以及依赖的依赖,cargo update后的.cargo目录结构大概如下

/home/luc/.cargo
|-- bin
|   |-- cargo
|   |-- cargo-clippy
|   |-- cargo-fmt
|   |-- cargo-miri
|   |-- clippy-driver
|   |-- rls
|   |-- rust-gdb
|   |-- rust-lldb
|   |-- rustc
|   |-- rustdoc
|   |-- rustfmt
|   `-- rustup
|-- env
`-- registry
    |-- cache
    |   `-- github.com-1ecc6299db9ec823
    |       |-- libc-0.2.98.crate
    |       |-- rand-0.3.23.crate
    |       `-- rand-0.4.6.crate
    |-- index
    |   `-- github.com-1ecc6299db9ec823
    `-- src
        `-- github.com-1ecc6299db9ec823
            |-- libc-0.2.98
            |-- rand-0.3.23
            `-- rand-0.4.6

11 directories, 16 files

udev

udev是Linux系统管理/dev的内核组件,它负责在系统运行时动态的创建和删除/dev下的设备文件(节点)。

  • 当设备被检测到时创建设备文件
  • 当设备被移除时删除设备文件
  • /etc/udev/rules.d允许用户自定义设备文件的权限,路径和符号链接

udev显然是支持Hotplug, 而且保证/dev下的设备节点是实时更新的。而且它强大的用户自定义行为非常灵活。但它的问题是:

  • 用户自定义规则的存在让应用程序很难确定特定的设备文件和设备类型
  • 同一类型的多个设备,设备文件的创建顺序是不确定的

Reference

libudev and sysfs tutorial

Transform Feedback 引入

Transform Feedback首先是DirectX3D引入的,但在DirectX3D中它不叫TF, 而是叫Stream Output Stage. 它第一次被引入OpenGL是在2006年,但当时是以扩展的形式GL_EXT_transform_feedback引入的,它正式成为OpenGL Required Core Features是在OpenGL 3.0(2008), 在这之后,OpenGL 4.0, 4.2, 4.6又分别引入了一些TF相关的新特性。

Read more »
0%