JJ's blog

Mesa/OpenGL 源码分析:Linking、VBO 与 glClear

这篇补记主要回答三个零散但常被忽略的问题:Mesa 7.0 的 linking 阶段如何统一寄存器索引,VBO API 在驱动侧的实现,以及 glClear 到底是 CPU memset 还是 GPU 指令。

继上一篇关于 context 与 shader 编译的记录,我继续沿着 Mesa 7.0 的源码把剩余的零散部分收个尾。因为下一篇准备单独写 DRI 流程,这里就按照「Linking → Buffer → glClear」的顺序做一个阶段性总结。

Read more...

Mesa/OpenGL 源码分析:Context 与 Shader 编译机制

TL;DR;
在 Mesa 早期版本的实现中,OpenGL context 其实就是一个存在 TLS 中的大结构体,保存了诸如固定管线状态、shader 源代码、已编译的 IL 之类的东西。
glShaderSource 只是复制了源代码,glCompileShader 则是对源代码进行预处理、语法语义分析,并生成 Mesa 定义的 IL 代码。

前段时间 AMD 有一个关于 AMDVLK 开源项目 discontinue 的 announcement,其中提到他们准备转向 RADV,这是一个 Mesa 下属的 Vulkan driver。于是借此机会,我也想花点时间来看看这个 Mesa 项目。

Read more...

DNS杂记:resolv.conf, zone, dig

最近因为感兴趣的东西和DNS有关,所以了解了一些零零碎碎的关于DNS的知识,并略做记录,之后又有想了解的时候再进一步补充。
目前包括的内容有:resolv.conf, zone info, dig.

Read more...