CN109949201A - 一种Linux容器的图像渲染加速方法 - Google Patents

一种Linux容器的图像渲染加速方法 Download PDF

Info

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
Application number
CN201910085415.6A
Other languages
English (en)
Other versions
CN109949201B (zh
Inventor
晏华
李琦
范旭峰
连寿哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Douduoyun Technology Co Ltd
Original Assignee
Fujian Douduoyun Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Douduoyun Technology Co Ltd filed Critical Fujian Douduoyun Technology Co Ltd
Priority to CN201910085415.6A priority Critical patent/CN109949201B/zh
Publication of CN109949201A publication Critical patent/CN109949201A/zh
Application granted granted Critical
Publication of CN109949201B publication Critical patent/CN109949201B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

一种Linux容器的图像渲染加速方法
技术领域
本发明涉及图像处理技术领域,特别涉及一种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指令将图形合成渲染到窗口图形缓冲区。
CN201910085415.6A 2019-01-29 2019-01-29 一种Linux容器的图像渲染加速方法 Active CN109949201B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 中国人民解放军战略支援部队航天工程大学 基于图形集群的远程实时渲染平台构建方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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