总结
首先,我想说,十分荣幸可以入选CSDN开源夏令营,可以为一个很酷的开源项目贡献代码。这一个月来,我从对在linux下工作几乎一无所知,到现在可以熟练使用linux下各种命令。从对2D渲染、并行计算不甚了解,到现在有了一个初步的感性的认识,感觉自己有很大的收获。在此,我对这一个月的主要工作做一总结。
mesa3D的安装
由于这个项目需要使用mesa3D来联合编译开发,所以我需要自己在linux上build、install mesa。由于之前不怎么在linux上开发,所以我感觉有些困难。而且最新版的mesa3D的依赖库也需要自己build,这几乎形成了一个树状结构。我在导师的帮助下最终完成了安装。期间,由于自己的疏忽,导致linux整个图形界面崩溃,在和导师的沟通下,最终顺利解决了问题。
mesa和beignet的整合
对于beignet,它可以与mesa9.x相兼容编译,但是由于mesa3d 10.x之后,与opengl texture mipmap相关的部分被大规模重构,导致beignet无法与最新版本mesa的源代码一起编译。造成这一问题的主要来源有两个:
- 新版mesa的头文件引用目录发生改变;
- 新版mesa的许多结构被重组与合并;
在这一过程中,我熟悉了gcc的相关命令,和CMakeList和MakeFile的基本规则。
Cairo的初步了解
在导师的指导下,我编译安装了最新版的cairo。通过自己编写一些小的sample,并阅读官网上的文档,我大致了解了cairo在绘制过程中牵扯到的一些基本概念和绘制模式。同时,我学会了通过cairo-trace来分析渲染的benchmark。之后,在导师的指导下,我阅读了cairo关于gl backend的渲染的代码,并试图从中找到优化的对象。
OpenCL渲染算法的实现
在第一个月的后期,我开始学习OpenCL kernel的相关内容, 并逐步尝试使用beignet来编写矢量图形的渲染与填充。