openxr runtime Monado 源码解析 源码分析:InitializeSession client native multi_compositor client_compositor

monado系列文章索引汇总:
openxr runtime Monado 源码解析 源码分析:源码编译 准备工作说明 hello_xr解读
openxr runtime Monado 源码解析 源码分析:整体介绍 模块架构 模块作用 进程 线程模型 整体流程
openxr runtime Monado 源码解析 源码分析:CreateInstance流程(设备系统和合成器系统)Compositor comp_main client compositor
openxr runtime Monado 源码解析 源码分析:Prober设备发现和管理 system device HMD target instance
openxr runtime Monado 源码解析 源码分析:openxr runtime Monado 源码解析 源码分析:InitializeSession client native multi_compositor client_compositor
openxr runtime Monado 源码解析 源码分析:CreateSwapchain 画布 HardwareBuffer共享纹理 渲染线程 xrEndeFrame comp_renderer

目录

模块目的

主要类和关系

主要流程

要点

1 非native compositor创建

2 EGL环境共享

时序和代码注解

总结


模块目的

完成session对象创建,涉及两个对象:native组合器和非native组合器创建,前者用于共享画布创建,后者用于client侧纹理创建,client渲染环境可以是gles gl vk d3d,本次讨论gles。

主要类和关系

native compositor:native组合器,CreateInstance篇说明过,native离vk跟近,这里为multi_compositor对象。用于Swapchain对象创建,后续文章会介绍。

非native compositor:响应client事件,并中转给native compositor,这里是client_egl_compositor。

主要流程

要点

1 非native compositor创建

在oxr_session.c的oxr_session_create_impl()函数里,根据客户端图形平台的不同,非native compositor创建会走不同的分支,目前有:

oxr_session_populate_gl_xlib()

oxr_session_populate_gles_android()

oxr_session_populate_gl_win32()

oxr_session_populate_vk()

2 EGL环境共享

App侧InitializeDevice创建的EGL环境,共享给runtime comp_client模块。

时序和代码注解

核心包含三个步骤,如下图:

总结

本文重点是创建session,包含两个native组合器multi_compositor和非native组合器client_egl_compositor创建。

前者离vk跟近,并开启监听client layer提交的线程,后续文章会介绍。

后者持有app侧创建的EGL环境,用于swapchain画布的创建,后续文章会介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值