CN109949201A - 一种Linux容器的图像渲染加速方法 - Google Patents
一种Linux容器的图像渲染加速方法 Download PDFInfo
- Publication number
- CN109949201A CN109949201A CN201910085415.6A CN201910085415A CN109949201A CN 109949201 A CN109949201 A CN 109949201A CN 201910085415 A CN201910085415 A CN 201910085415A CN 109949201 A CN109949201 A CN 109949201A
- Authority
- CN
- China
- Prior art keywords
- container
- linux
- xserver
- host
- display device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Generation (AREA)
Abstract
本发明涉及图像处理技术领域,特别涉及一种Linux容器的图像渲染加速方法。所述一种Linux容器的图像渲染加速方法,包括步骤:创建Android容器,并将显示设备节点映射至容器内部;映射Linux主机的XServer通信地址至容器内部;创建用于显示Android容器系统的窗口,并将此窗口句柄发送至容器内部;将XServer通信协议移入至图形资源分配器;根据XServer通信协议实现在容器内对图形资源的直接访问。通过以上方式,实现了容器直接访问Linux主机图形硬件。消除了图形指令数据发送,图形结果回传通信开销。使得CPU、内存占用都大幅度减少,实现了容器和主机系统图形系统的融合,使得容器内图形渲染达到了本地主机的性能。
Description
技术领域
本发明涉及图像处理技术领域,特别涉及一种Linxu容器的图像渲染加速方法。
背景技术
虚拟化是目前应用非常广泛的一种技术。通过虚拟化技术,可以在主机操作系统中(Windows,Linux)中运行独立的客户系统(Windows,Linux,Android等等)。
容器(LXC)是近些年由Linux内核支持的一种轻量级虚拟技术。通过容器技术可以在Linux系统运行一个新的Linux系统(包括其他基于Linux系统定制的系统如Android),LXC实现了进程,文件系统,IPC,网络通信,用户等名字空间,使得客户机系统和主机系统相互隔离。与传统的基于虚拟机技术的方案不同,在容器技术中,客户系统与主机系统共享CPU,内存,存储等资源,资源开销很低。此外,通过适当的配置,还能使客户系统直接访问主机的硬件资源,进一步提升客户系统的性能。
图形渲染是用户交互的一个重要方面,其性能好坏直接关系到用户体验。传统的虚拟机技术采用了在客户系统和主机系统建立通信管道,将图形渲染指令和数据发送到主机端程序,利用主机的图形硬件进行渲染,然后再将渲染结果回传到客户机系统。这种半虚拟方式相比全虚拟图形硬件,性能要好很多。目前主流的虚拟机VMware,vbox,qemu等都采用了这种基于通信的方案。
在LXC虚拟化技术里,主要关心的是各种名字空间的隔离,对于图形渲染加速并没有特别的设计和实现。目前已有产品采用了和传统虚拟机技术相同的方法:通过本地套接字将图形渲染命令和数据,传送到容器外,由主机完成渲染,回传到容器里面。这种方式显著的缺点是通信数据量大,系统开销高,性能不高。在Linux主机中运行Android系统容器,测试发现,上述的图形渲染性能只有主机性能的10%~30左右。
发明内容
为此,需要提供一种Linux容器的图像渲染加速方法,用以解决现有Linux容器图形渲染通信数据量大、系统开销大及性能不高的问题。具体技术方案如下所示:
一种Linux容器的图像渲染加速方法,包括步骤:创建Android容器,并将显示设备节点映射至容器内部;映射Linux主机的XServer通信地址至容器内部;创建用于显示Android容器系统的窗口,并将此窗口句柄发送至容器内部;将XServer通信协议移入至图形资源分配器;在容器内对显示设备资源直接访问。
进一步的,所述“根据XServer通信协议实现在容器内对图形资源的直接访问”,还包括步骤:图像资源分配器打开显示设备节点,获取设备文件描述符;图像资源分配器与主机端XServer建立连接请求授权令牌;图像资源分配器将授权令牌发送给显示设备驱动,获得对显示设备资源的直接访问权限。
进一步的,还包括步骤:容器内图形合成器对图层进行合成,并将合成的图形绘制至用于显示Android容器系统的主机窗口。
进一步的,在容器内根据XServer通信协议获取窗口句柄对应的图形缓冲区,并调用OpenGL指令将图形合成渲染到窗口图形缓冲区。
本发明的有益效果是:通过将XServer通信地址映射至容器内部,将XServer通信协议移入至图形资源分配器,使得Android容器系统内部应用可与XServer进行通信,而在打开图像设备后,可通过与XServer通信获得授权令牌,将该令牌发送至显示设备驱动,即可获得对显示资源的直接访问,实现了Android容器直接访问Linux主机图形硬件。消除了图形指令数据发送,图形结果回传等通信开销。使得CPU、内存占用都大幅度减少,实现了容器和主机系统图形系统的融合,使得容器内图形渲染达到了本地主机的性能。
且通过以上方式,使得在Linux桌面即可体验到原生的Android 3D图形应用。同时性能上的缩减,使得对于服务器,可以使得单台服务器运行更多的安卓容器。
附图说明
图1为具体实施方式所述一种Linux容器的图像渲染加速方法的流程图。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,在本实施方式中,一种Linux容器的图像渲染加速方法具体实施方式如下:
步骤S101:创建Android容器,并将显示设备节点映射至容器内部。
步骤S102:映射Linux主机的XServer通信地址至容器内部。
步骤S103:创建用于显示Android容器系统的窗口,并将此窗口句柄发送至容器内部。
步骤S104:将XServer通信协议移入至图形资源分配器。
步骤S105:在容器内对显示设备资源直接访问。
上述步骤具体可采用如下方式:
在Linux主机上创建1个或者多个容器,每个容器都运行一个Android系统。通过容器配置方法,将显示设备节点(/dev/dri/card0,/dev/dri/renderD128)映射到容器内部。将Linux主机的XServer的通信地址(通常是一个本地socket,比如/tmp/.X11-unix/X0)映射到容器内部。
在Linux主机端,创建一个用于显示Android容器系统的窗口,并将此窗口句柄发送到容器内部。将XServer通信协议移入至Android容器的图形资源分配器。
需要说明的是,容器内的安卓系统实现了图形资源分配器(Gralloc)。该图形资源的分配器是图形客户端和图形硬件的一个桥梁。Gralloc需要实现图形缓冲器(BufferObject,简称BO)的分配,释放,映射,解除映射,锁定,解除锁定。
图形资源是一种硬件资源,由操作系统内核显示设备驱动管理。为了安全,只有特定的应用程序才能直接操作这些资源。在Linux系统中,XServer负责对图形资源的直接管理和操作。其他应用程序必须通过XServer才能访问图形资源。在Android系统中SurfaceFlinger也是一个图形资源的管理者。显然Linux主机中的XServer和Android容器中的SurfaceFlinger同时对显示设备进行管理,必然会产生冲突。因此必须对Gralloc进行改造。
Linux主机系统启动以后,XServer作为图形管理者,会首先打开显示设备节点(/dev/dri/card0),将自己设置为Master。Master对显示设备具有完整的访问权限。其他应用只有得到XServer授权,才能对显示设备进行有限访问。
在Android容器内,对Gralloc进行改造,将X通信协议移入Gralloc。因步骤S102中已经将XServer的通信地址映射到容器内。这样容器内应用就可以与XServer进行通信,得到对显示设备资源的访问授权。
其中所述“在容器内对显示设备资源直接访问”,还包括步骤:图像资源分配器打开显示设备节点,获取设备文件描述符;图像资源分配器与主机端XServer建立连接请求授权令牌;图像资源分配器将授权令牌发送给显示设备驱动,获得对显示设备资源的直接访问权限。
具体可采用如下方式:对于每一个图形客户端(app),gralloc在首次打开图形设备时,需要先与XServer通信获得一个授权令牌,然后将此令牌发送到图形驱动,此后该应用便获得了对图形资源的直接访问权限。
在获得对图形资源的直接访问权限后,还包括步骤:容器内图形合成器对图层进行合成,并将合成的图形绘制至用于显示Android容器系统的窗口。通过窗口句柄获取显示窗口对应的图形缓冲区,并调用OpenGL进行硬件渲染。
上述步骤具体可采用如下方式:
各个App绘制的图层(Layer)需要交给容器图形合成器(SurfaceFlinger)进行合成才能最终显示出来。
SurfaceFlinger将合成的图形通过X扩展协议DRI2(Direct RenderingInterface)绘制到用于显示Android容器系统的窗口。在步骤S103中,已经将窗口句柄传递到容器内部。通过此句柄,根据X扩展DRI2可以获取窗口对应的图形缓冲区。有了图形缓冲区,即可建立OpenGL渲染环境,之后就可以调用OpenGL指令进行硬件渲染。
Android系统和Linux主机采用了不同的图形格式。前者图形格式为RGBA8888,后者为BGR格式。此外,Android容器内的分辨率、屏幕角度与Linux主机端目标窗口也可能不同。因此必须经过变换(旋转、缩放、图形格式转换),才能显示到Linux目标窗口。
在上述步骤中通过编写OpenGL Shader,利用图形硬件实现变换处理。
通过将XServer通信地址映射至容器内部,将XServer通信协议移入至图形资源分配器,使得在Android容器系统内应用可与XServer进行通信;在打开显示设备时,Android容器内的图形资源管理器可与XServer通信获得授权令牌,将该令牌发送至显示设备驱动,得到设备资源的访问权限,从而获得对显示设备的直接访问,实现了容器直接访问Linux主机图形硬件。消除了图形指令数据发送,图形结果回传通信开销。CPU、内存占用都大幅度减少,实现了容器和主机系统图形系统的融合,使得容器内图形渲染达到了本地主机的性能。
且通过以上方式,使得在Linux桌面即可体验到原生的Android 3D图形应用。同时性能开销上的缩减,使得对于服务器,可以使得单台服务器运行更多的安卓容器。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。
Claims (4)
1.一种Linux容器的图像渲染加速方法,其特征在于,包括步骤:
创建Android容器,并将显示设备节点映射至容器内部;
映射Linux主机的XServer通信地址至容器内部;
创建用于显示Android容器系统的窗口,并将此窗口句柄发送至容器内部;
将XServer通信协议移入至图形资源分配器;
在容器内对显示设备资源直接访问。
2.根据权利要求1所述的一种Linux容器的图像渲染加速方法,其特征在于“在容器内对显示设备资源直接访问”,还包括步骤:
图像资源分配器打开显示设备节点,获取设备文件描述符;
图像资源分配器与主机端XServer建立连接请求授权令牌;
图像资源分配器将授权令牌发送给显示设备驱动,获得对显示设备资源的直接访问权限。
3.根据权利要求1所述的一种Linux容器的图像渲染加速方法,其特征在于,还包括步骤:
容器内图形合成器对各图层进行合成,并将合成的图形绘制至用于显示Android容器系统的主机窗口。
4.根据权利要求3所述的一种Linux容器的图像渲染加速方法,其特征在于,还包括步骤:
在容器内根据XServer通信协议获取窗口句柄对应的图形缓冲区,并调用OpenGL指令将图形合成渲染到窗口图形缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910085415.6A CN109949201B (zh) | 2019-01-29 | 2019-01-29 | 一种Linux容器的图像渲染加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910085415.6A CN109949201B (zh) | 2019-01-29 | 2019-01-29 | 一种Linux容器的图像渲染加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109949201A true CN109949201A (zh) | 2019-06-28 |
CN109949201B CN109949201B (zh) | 2023-04-07 |
Family
ID=67007878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910085415.6A Active CN109949201B (zh) | 2019-01-29 | 2019-01-29 | 一种Linux容器的图像渲染加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109949201B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111445381A (zh) * | 2020-03-20 | 2020-07-24 | 福州瑞芯微电子股份有限公司 | 一种基于exa的rga图形加速方法和存储设备 |
CN112379955A (zh) * | 2020-11-17 | 2021-02-19 | 北京麟卓信息科技有限公司 | 一种安卓应用在横屏显示器中的显示方法及装置 |
CN112860364A (zh) * | 2021-02-07 | 2021-05-28 | 麒麟软件有限公司 | 一种基于Linux内核的Android图形显示方法 |
CN112860363A (zh) * | 2021-02-07 | 2021-05-28 | 麒麟软件有限公司 | 一种基于Linux系统的Android应用窗口状态动态更新方法 |
CN113110910A (zh) * | 2021-04-20 | 2021-07-13 | 上海卓易科技股份有限公司 | 一种安卓容器实现的方法、系统及设备 |
CN115482144A (zh) * | 2022-07-12 | 2022-12-16 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
WO2023065740A1 (zh) * | 2021-10-21 | 2023-04-27 | 北京字节跳动网络技术有限公司 | 窗口显示方法、装置、设备和存储介质 |
CN116567273A (zh) * | 2023-07-10 | 2023-08-08 | 海马云(天津)信息技术有限公司 | 发送容器系统的显示画面的方法、服务器设备和存储介质 |
CN116862749A (zh) * | 2023-06-20 | 2023-10-10 | 北京麟卓信息科技有限公司 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100277484A1 (en) * | 2009-04-30 | 2010-11-04 | Antony Arciuolo | Managing Three Dimensional Scenes Using Shared and Unified Graphics Processing Unit Memory |
CN103631634A (zh) * | 2012-08-24 | 2014-03-12 | 中国电信股份有限公司 | 实现图形处理器虚拟化的方法与装置 |
CN104737129A (zh) * | 2012-08-23 | 2015-06-24 | 思杰系统有限公司 | 用于对来宾虚拟机的硬件资源进行虚拟化的专用虚拟机 |
US20170371835A1 (en) * | 2016-06-24 | 2017-12-28 | Vmware, Inc. | Remote direct memory access in a virtualized computing environment |
CN107533469A (zh) * | 2015-05-29 | 2018-01-02 | 英特尔公司 | 对图形处理单元资源的容器访问 |
CN108388460A (zh) * | 2018-02-05 | 2018-08-10 | 中国人民解放军战略支援部队航天工程大学 | 基于图形集群的远程实时渲染平台构建方法 |
-
2019
- 2019-01-29 CN CN201910085415.6A patent/CN109949201B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100277484A1 (en) * | 2009-04-30 | 2010-11-04 | Antony Arciuolo | Managing Three Dimensional Scenes Using Shared and Unified Graphics Processing Unit Memory |
CN104737129A (zh) * | 2012-08-23 | 2015-06-24 | 思杰系统有限公司 | 用于对来宾虚拟机的硬件资源进行虚拟化的专用虚拟机 |
CN103631634A (zh) * | 2012-08-24 | 2014-03-12 | 中国电信股份有限公司 | 实现图形处理器虚拟化的方法与装置 |
CN107533469A (zh) * | 2015-05-29 | 2018-01-02 | 英特尔公司 | 对图形处理单元资源的容器访问 |
US20170371835A1 (en) * | 2016-06-24 | 2017-12-28 | Vmware, Inc. | Remote direct memory access in a virtualized computing environment |
CN108388460A (zh) * | 2018-02-05 | 2018-08-10 | 中国人民解放军战略支援部队航天工程大学 | 基于图形集群的远程实时渲染平台构建方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111445381A (zh) * | 2020-03-20 | 2020-07-24 | 福州瑞芯微电子股份有限公司 | 一种基于exa的rga图形加速方法和存储设备 |
CN112379955A (zh) * | 2020-11-17 | 2021-02-19 | 北京麟卓信息科技有限公司 | 一种安卓应用在横屏显示器中的显示方法及装置 |
CN112860364A (zh) * | 2021-02-07 | 2021-05-28 | 麒麟软件有限公司 | 一种基于Linux内核的Android图形显示方法 |
CN112860363A (zh) * | 2021-02-07 | 2021-05-28 | 麒麟软件有限公司 | 一种基于Linux系统的Android应用窗口状态动态更新方法 |
CN113110910A (zh) * | 2021-04-20 | 2021-07-13 | 上海卓易科技股份有限公司 | 一种安卓容器实现的方法、系统及设备 |
CN113110910B (zh) * | 2021-04-20 | 2024-01-23 | 上海卓易科技股份有限公司 | 一种安卓容器实现的方法、系统及设备 |
WO2023065740A1 (zh) * | 2021-10-21 | 2023-04-27 | 北京字节跳动网络技术有限公司 | 窗口显示方法、装置、设备和存储介质 |
CN115482144A (zh) * | 2022-07-12 | 2022-12-16 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
CN115482144B (zh) * | 2022-07-12 | 2024-03-22 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
CN116862749A (zh) * | 2023-06-20 | 2023-10-10 | 北京麟卓信息科技有限公司 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
CN116862749B (zh) * | 2023-06-20 | 2023-11-21 | 北京麟卓信息科技有限公司 | 一种基于自适应解码缓存的压缩纹理渲染优化方法 |
CN116567273A (zh) * | 2023-07-10 | 2023-08-08 | 海马云(天津)信息技术有限公司 | 发送容器系统的显示画面的方法、服务器设备和存储介质 |
CN116567273B (zh) * | 2023-07-10 | 2023-10-10 | 海马云(天津)信息技术有限公司 | 发送容器系统的显示画面的方法、服务器设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109949201B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109949201A (zh) | 一种Linux容器的图像渲染加速方法 | |
US10635468B2 (en) | Displaying graphics for local virtual machine by allocating and mapping textual buffer | |
CN108776949B (zh) | 用于图形处理环境中的存储器管理的设备和方法 | |
US7299320B2 (en) | Message based inter-process for high volume data | |
TWI610269B (zh) | 用於管理虛擬圖形處理器單元(vgpu)的設備、方法及非暫時性機器可讀媒體 | |
US5915113A (en) | Visual application partitioning for creating distributed object oriented applications | |
AU2006268251A1 (en) | Resource management for virtualization of graphics adapters | |
EP3964949B1 (en) | Graphics processing method and apparatus | |
CN107395762A (zh) | 一种基于Docker容器的应用服务访问系统及方法 | |
US20020095479A1 (en) | Method and apparatus for virtual namespaces for active computing environments | |
US20060028479A1 (en) | Architecture for rendering graphics on output devices over diverse connections | |
US20110242117A1 (en) | Bindless texture and image api | |
CN112785485A (zh) | 用于有效的结构附接存储器的技术 | |
EP2622461A2 (en) | Shared memory between child and parent partitions | |
TW200537395A (en) | Model 3D construction application program interface | |
CN114500623B (zh) | 网络靶场互联互通方法、装置、设备及可读存储介质 | |
JPH09507320A (ja) | オブジェクト指向タスク・セキュリティ・フレームワーク | |
CN106776960A (zh) | 基于微容器实现的大数据云平台 | |
EP2802982A1 (en) | Para-virtualized domain, hull, and geometry shaders | |
US7162719B2 (en) | Method and apparatus for aggregate resource management of active computing environments | |
JP2003233600A (ja) | ボリュームレンダリング処理方法、ボリュームレンダリング処理システム、計算機及びプログラム | |
DE112020000286T5 (de) | Sicheres ein-/auslagern mit seitenänderungserkennung | |
US6271864B1 (en) | Representing a path as an object with transformation capability | |
US20200285758A1 (en) | Secure interface control high-level page management | |
US20100085367A1 (en) | Graphics processing method and apparatus implementing window system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |