EGL Off-Screen rendering using GBM

本文介绍了在EGL中使用GBM进行离屏渲染的方法。由于EGL规范并未直接说明如何结合GBM进行离屏渲染,主要探讨了EGL表面类型如窗口、缓冲区和位图在离屏渲染中的角色。EGL支持通过缓冲区创建离屏表面,但不支持Pbuffer。示例代码展示了如何利用gbm_surface创建EGL窗口表面,实现离屏渲染。参考了多个资源,包括Khronos官方文档和示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近研究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

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值