EGL Off-Screen rendering using GBM

最近研究EGL的off-screen rendering,特别是使用GBM这块,网上资料很少。综合搜集到的资料,整合了一个小demo。很多注意事项都写在代码注释里面了。


EGL Spec的介绍,没有提及如何使用GBM进行off-screen rendering。因为这属于native platform的实现。
EGLSurfaces:
1. windows: used for onscreen rendering
2. pbuffers: used for offscreen rendering
3. pixmaps: used for offscreen rendering into buffers that may be accessed through native APIs.
EGL windows and pixmaps are tied to platform windows and pixmaps.
EGL supports off-screen rendering surfaces in pbuffers. Pbuffers differ from windows in the followings ways:
1. Pbuffers are typically allocated in offscreen(non-visible) graphics memory and are intended only for accelerated
   offscreen rendering.
2. Pbuffers are EGL resources and have no associated native window or native window type. It may not by possible to
   render to pbuffers using native rendering APIs.

更多参考资料:
https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_platform_gbm.txt
This extension defines how to create EGL resources from native GBM resources using the functions defined by EGL_EXT_platform_base.
(GBM is a Generic Buffer Manager for Linux).

https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_platform_gbm.txt  (EGL 1.5 is required.)
This extension defines how to create EGL resources from native GBM resources using the EGL 1.5 platform functionality
(GBM is a Generic Buffer Manager for Linux).

EGL/GBM does not support Pbuffers. It doesn't support Pixmaps either.
To create an offscreen surface with EGL/GBM, you must pass a gbm_surface to eglCreateWindowSurface. "Window" is a misnomer.
No real "window" gets created. The resultant buffer will remain offscreen unless you use the kernel's KMS APIs to post it to the display.
// eglGetDisplay((EGLNativeDisplayType)my_gbm_device);
// eglCreateWindowSurface(egl_dpy, egl_config, (EGLNativeWindowTy

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值