Linux下的OpenGL 3D渲染接口是谁提供的?Mesa

2D情况下的渲染比较简单,无论软件渲染还是硬件加速,本质上都是生成图像的像素阵列,只不过一个是由CPU来计算的,而另一个是由GPU来计算的,当然,对于硬件加速的情况,也不是完全用不到CPU,在这种情况下,CPU主要充当一个翻译角色,将数学,几何模型按照GPU的要求翻译为其可以识别的指令和数据。2D渲染的流程大致如下:

运行在X上的2D程序,都将绘制请求发送给X服务器,由X服务器来完成绘制,但是对于3D图形的绘制,X因考古用需要通过套接字向X服务器传递的数据量比较大,这种机制严重影响了图形渲染的效率,为了解决效率问题,X的开发者设计了DRI机制,即X应用不再将绘制请求发送给X服务器了,而是由应用自行绘制。
在嵌入式平台上,OPENGL的实现者是GPU的原厂,比如MALI GPU的OpenGL由于ARM提供,而PowerVR GPU的OPENGL层则要由imagation提供,那么在桌面上呢?

在Linux桌面上,OpenGL的实现是MESA实现的GPU PIPELINE:

上帝视角看GPU(1):图形流水线基础_哔哩哔哩_bilibili

pipeline可完全由软件实现(CPU),也可全部由硬件实现(GPU),或者二者混合,这完全取决于GPU的能力,对于GPU没有3D计算能力的,则PIPELINE完全由软件实现,比如下图中的,每一个PIPELINE阶段均有CPU负责渲染。

mesa的defalut pipeline stage:

RADEON  GPU的PIPELINE

针对各类GPU加速的pipeline stage

途中可以看到INTEL集成显卡 INTEL HD Graphics的Pipeline实现:

通过命令查看:

glxinfo | grep "OpenGL version"

strace  -f -e trace=open,openat glxinfo

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值