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 »

Talk About

  • OpenGL Extensions有哪些分类?
  • Conformant OpenGL implementation是什么?
  • OpenGL Extensions和OpenGL Versions有什么关系?
  • OpenGL Extensions和conformant OpenGL implementation有什么关系?
Read more »

__attribute__

__attribute__ is a keyword introduced by GCC. It is regarded as an extension of a language. It helps the compiler optimize calls, check code more carefully for correctness, control memory placement and code generation options.

Read more »

DRM driver features

新DRM驱动的特性

  • DRIVER_GEM

使用GEM内存管理器,所有新的驱动都应该支持。

  • DRIVER_MODESET

支持Kernel Modesetting Interfaces

  • DRIVER_RENDER

支持专门的渲染节点, 即**/dev/dri/renderD**

  • DRIVER_ATOMIC

支持所有的Atomic Modesetting用户空间API

  • DRIVER_SYNCOBJ

支持drm_syncobj, 用于渲染命令提交的显式同步。

  • DRIVER_SYNCOBJ_TIMELINE

支持drm_syncobjtimeline特性

旧DRM驱动的特性

  • DRIVER_USE_AGP
  • DRIVER_LEGACY
  • DRIVER_PCI_DMA
  • DRIVER_SG
  • DRIVER_HAVE_DMA
  • DRIVER_HAVE_IRQ
  • DRIVER_KMS_LEGACY_CONTEXT

内核 DRM 子系统是如何维护的

内核 DRM 子系统的代码仓库托管在cgit上,Upstream DRM Subsystem Repository, 这个仓库最主要的两个分支

  • drm-next

    这个分支的补丁包括 DRM 核心和所有 GPU 驱动的新特性

  • drm-fixes

参考

Gallium Framework

引用 Mesa3D 官方文档的话,Gallium 本质上是一种应用程序接口,用于编写与设备基本无关的图形驱动程序。它提供了多个对象,以简单明了的方式封装了图形硬件的核心服务。据说,Gallium 的设计是借鉴了 DirectX。

Read more »

Shader Object

创建和使用Shader Object的API:

  • GLuint glCreateShader(GLenum shaderType);
  • void glShaderSource(GLuint shader, GLsizei count, const GLchar **string, const GLint *length);
  • void glCompileShader(GLunit shader);
Read more »

Vulkan 是一个低开销、跨平台的二维和三维图形与计算的应用程序接口,由 Khronos 在2015年在 GDC 上首次发布。它旨在提供高效能和更均衡的 CPU 和 GPU 占用,类似于 Direct3D 12 和 AMD Mantle。

在这里主要收集一些与 Vulkan 强相关的一些项目,便于 Vulkan 的学习和使用。

Read more »
0%