Chromium Graphics: 3D上下文及其虚拟化(Virtualization) - Part I

摘要:在页面渲染过程中,Chromium需要创建多个3D上下文的实例,这些上下文实例彼此之间不但需要共享资源,还需要在同一个线程中执行GL操作,这就要求Chromium能够有效地处理多上下文的切换。然而,并不是所有的GPU设备都能够很好的支持多个3D上下文,虚拟化3D上下文(Context Virtualization)就是为了解决这个问题而引入的,核心思想是通过对3D上下文的虚拟化,使得多个上下文可以共享同一个真实的3D上下文,同时虚拟上下文的切换并不一定导致真实上下文的切换,从而减少真实上下文的个数,避免不必要的切换。本文介绍OpenGL上下文等基本概念,以及Chromium需要创建多个3D上下文的原因。

OpenGL上下文和渲染表面

OpenGL上下文是对OpenGL运行时渲染状态的抽象。OpenGL运行时的每个实例都可以看做是一台“状态机”,GL命令实际上是在操纵这台状态机,更新其内部的渲染状态。

每个GL命令只会作用于“当前”(current)上下文,而绑定当前上下文的工作则需要通过窗口系统的OpenGL扩展接口完成的,OpenGLAPI本身没有提供这样的接口。不同的窗口系统为支持OpenGL都会定义一套扩展接口标准,例如X11Windows系统的GLX标准,其首要目的就是要定义渲染上下文(RenderingContext),以及如何创建OpenGL上下文和绑定当前上下文。为了存储OpenGL的渲染结果,这些标准还定义了特定于窗口系统的渲染表面(DrawingSurface)。一般至少有两种类型的渲染表面可供使用:

  • 屏上(onscreen)渲染表面,具有前后双缓冲区,前缓冲区用于显示,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值