Chromium的GPU进程启动过程分析
Chromium除了有Browser进程和Render进程,还有GPU进程。GPU进程负责Chromium的GPU操作,例如Render进程通过GPU进程离屏渲染网页,Browser进程也是通过GPU进程将离屏渲染好的网页显示在屏幕上。Chromium之所以将GPU操作运行在独立进程中,是考虑到稳定性问题。毕竟GPU操作是硬件相关操作,硬件的差异性会引发一定的不稳性。本文分析GPU进程的启动过程。
GPU进程由Browser进程负责启动,它的启动过程与Render进程的启动过程是类似的,因此在阅读本文之前,最好先阅读一文。不过,GPU进程启动之后,Browser进程会与它建立两个IPC通道。一个IPC通道用来传输普通的IPC消息,另一个IPC通道专门用来执行GPU操作,称为GPU通道。类似地,Render进程需要执行GPU操作时,也会通过Browser进程与GPU进程建立一个专门用来执行GPU操作的IPC通道。Render进程之所以要通过Browser进程间接地与GPU进程建立GPU通道,是因为GPU进程是由Browser进程启动的,Render进程对它一无所知。
以上描述的Browser进程、Render进程和GPU进程的关系可以通过图1概括,如下所示:
在图1中,Browser进程与Render进程的IPC通道的建立过程可以参考前面一文,本文只分析以下三部分内容:
1. Browser进程与GPU进程的IPC通道的建立过程。
2. Browser进程与GPU进程的GPU通道的建立过程。
3. Render进程与GPU进程的GPU通道的建立过程。
Browser进程通过一个GpuProcessHost对象描述由它启动的GPU进程。GPU进程启动起来之后,会创建一个GpuProcess对象用来与Browser进程进行IPC。接下来,Browser进程中的GpuProcessHost对象会通过已经建立起来的IPC通道请求GPU进程中创建一个GPU通道,以便以后可以执行GPU操作。
Render进程需要通过GPU渲染网页的时候,会通过之前与Browser进程建立的IPC通道请求Browser进程为它创建一个GPU通道,并且将该GPU通道封装在一个WebGraphicsContext3DCommandBufferImpl对象,以后就可以通过该WebGraphicsContext3DCommandBufferImpl对象向GPU进程请求执行GPU操作了。
GPU进程在启动的过程中,也会像Browser进程和Render进程一样,启动一个IO线程,专门用来执行IPC。以后每当GPU进程通过上述IPC通道接收到一个创建GPU通道的请求的时候,都会在内部创建一个OpenGL上下文。这个OpenGL上下文通过一个GLContext对象描述。这样在GPU进程中,就会存在若干个OpenGL上下文。这些OpenGL上下文都运行在同一个线程中,这个线程称为GPU Child Thread。这样就会涉及到一个OpenGL上下文调度问题,即每当GPU进程接收到一个GPU操作请求时,都要先切换到请求的GPU操作所在的OpenGL上下文,然后才能执行请求的GPU操作。关于GPU进程的OpenGL上下文调度问题,我们在下一系列的文章中再详细分析。
接下来,我们就先分析Browser进程启动GPU进程的过程。这个过程主要是涉及到Browser进程和GPU进程的IPC通道的建立过程。
在前面一文中,我们提到,Browser进程,也就是Chromium应用程序的主进程,在启动的时候,会调用BrowserMainLoop类的成员函数CreateStartupTasks。BrowserMainLoop类的成员函数CreateStartupTasks会请求启动一个GPU进程,相关的代码如下所示:
[cpp] view plain copy
void BrowserMainLoop::CreateStartupTasks() {
......
// First time through, we really want to create all the tasks
if (!startup_task_runner_.get()) {
startup_task_runner_ = make_scoped_ptr(new StartupTaskRunner(
base::Bind(BrowserS
您可能关注的文档
- Chem3D常用功能使用教程方案.ppt
- chinajoy会展案例分析方案.ppt
- Chp9第九章成立新企业方案.ppt
- Chromium为视频标签全屏播放的过程分析方案.doc
- Chromium扩展(Extension)的ContentScript加载过程分析方案.doc
- Chromium网页FrameTree创建过程分析方案.doc
- Chromium网页GraphicsLayerTree创建过程分析方案.doc
- Chromium网页LayerTree创建过程分析方案.doc
- Chromium网页RenderLayerTree创建过程分析方案.doc
- Chromium网页URL加载过程分析方案.doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 2024-2025学年人教版八年级数学下册期末模拟试卷(含答案).pdf VIP
- 小学三年级语文上册课外阅读叶圣陶地球.docx VIP
- 马工程教学课件《管理学》(第二版)第十六章 组织变革与创新.pptx VIP
- 马工程教学课件《管理学》(第二版)-第一章 管理与管理活动.pptx VIP
- 2025年高考文科综合真题卷(附答案解析).docx VIP
- 马工程教学课件《管理学》(第二版)第九章-领导的一般理论.pptx VIP
- 马工程教学课件《管理学》(第二版)第十章-激励.pptx VIP
- 2022年11月12日事业单位联考A类《职业能力倾向测验》答案+解析.pdf VIP
- 山东省危险化学品企业事故隐患源头治理要素管理指南(试行).pdf VIP
- 医学统计学-参数估计与假设检验 PPT.pptx VIP
原创力文档

文档评论(0)