论文部分内容阅读
近年来,随着图形处理器在计算系统中的应用越来越广泛,图形处理器驱动程序的设计与开发显得格外重要。图形处理器驱动程序是图形应用程序对图形处理器硬件的编程接口的实现,它对于发挥图形处理器的计算性能具有重要意义。本文结合PKUnity86系统芯片异构多核结构特点,开展图形处理器驱动程序的实现和验证方法研究。 首先,本文调研了图形处理器驱动程序的实现方法,包括Windows操作系统下的图形处理器驱动程序和Linux操作系统下的图形处理器驱动程序。然后,本文结合PKUnity86系统中集成的图形处理器硬件特点,在Linux操作系统下基于开源Mesa图形库设计并实现了图形处理器驱动程序。驱动程序的实现分为硬件抽象层,三维图形驱动和二维图形驱动三个部分。其中,硬件抽象层驱动实现了对Mesa图形库的支持,它包含用户态和内核态两个模块。内核态模块实现了显存管理、命令提交、中断处理、消息传递等功能,用户态模块为上层提供了显存结点的分配与回收、硬件命令的写入与提交等操作接口。三维图形驱动实现了对标准图形编程接口OpenGLES/EGL的支持,实现了光照计算、可编程着色、多重纹理采样、Mipmap以及离屏渲染等功能。二维图形驱动实现了画线、颜色填充、块搬移、缩放、滤波等功能。 最后,本文对图形处理器驱动程序的二维/三维图形功能进行了验证与评测。在三维图形驱动的验证中,本文采用了开源测试集glmark2_es2,验证结果表明驱动能够正确运行所有测试用例,glmark2_es2中所有测试场景的平均得分为110。在三维图形驱动的评测中,本文采用了Mesa提供的9个OpenGLES测试用例,性能评测结果表明相对于使用CPU渲染,使用图形处理器渲染可获得平均302倍的加速比。在二维图形驱动验证中,验证覆盖了二维绘图与块搬移引擎支持的画线、颜色填充、块搬移、缩放块搬移、滤波块搬移等5种命令以及256种ROP运算符。在二维图形性能的评测中,本文对图形处理器的像素填充率进行了评测,评测结果表明图形处理器的平均像素填充率可以达到375.3MB/s。