CN114594993B - 图形渲染指令流处理装置、处理方法、服务器及渲染方法 - Google Patents
图形渲染指令流处理装置、处理方法、服务器及渲染方法 Download PDFInfo
- Publication number
- CN114594993B CN114594993B CN202210500491.0A CN202210500491A CN114594993B CN 114594993 B CN114594993 B CN 114594993B CN 202210500491 A CN202210500491 A CN 202210500491A CN 114594993 B CN114594993 B CN 114594993B
- Authority
- CN
- China
- Prior art keywords
- graphics
- image data
- instruction stream
- rendering instruction
- graphics rendering
- 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.)
- Active
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 172
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 230000005540 biological transmission Effects 0.000 claims abstract description 36
- 238000006243 chemical reaction Methods 0.000 claims description 26
- 239000000126 substance Substances 0.000 claims description 5
- 238000004088 simulation Methods 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 238000003786 synthesis reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种图形渲染指令流处理装置、处理方法、服务器及渲染方法,服务器,包括:外挂的显卡;服务器运行Linux系统,在Linux系统中运行有虚拟机,虚拟机运行Android系统,Android系统的图形渲染指令流通过透传接口透传给图形渲染指令流处理装置,图形渲染指令流处理装置将图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,调用第一API接口以对转换后的图形渲染指令流进行处理;图形渲染指令流处理装置通过显卡驱动的第二API接口获取显卡处理得到的图像数据,将图像数据输出到虚拟显示终端,从虚拟显示终端采集图像数据,通过编码器对图像数据进行编码,将编码后的图像数据推流给终端进行显示,该方案实现简单,不依赖X11和Xorg。
Description
技术领域
本发明涉及计算机领域,具体涉及一种图形渲染指令流处理装置、处理方法、服务器及渲染方法。
背景技术
云应用领域中,云端服务器基本存在两种架构,一种是基于SoC(System on Chip,片上系统)的ARM(Advanced RISC Machines,先进精简指令集机器)阵列,另一种是基于ARM大核服务器并外挂PCI(Peripheral Component Interconnect,外设部件互连标准)显卡。基于ARM大核服务器并外挂PCI显卡的云应用架构下,成熟的云应用方案基本上都是基于开源anbox(在Linux系统中运行安卓Android应用的开源项目)的,该方案依赖Linux系统的X11(X Window System,X窗口系统)和桌面系统Xorg作为底层显示,而X11和Xorg的配置复杂,效率低下。
发明内容
针对现有技术存在的技术问题,本申请实施例提供一种图形渲染指令流处理装置、处理方法、服务器及渲染方法。
第一方面,本申请实施例提供了一种图形渲染指令流处理装置,包括:
图形指令转换库、虚拟显示终端和推流器;其中,
所述图形指令转换库,用于接收虚拟机通过透传接口透传的Android系统的图形渲染指令流,将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载所述显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtual io驱动,并提供所述透传接口;
所述虚拟显示终端,用于通过所述显卡驱动的第二API接口获取显卡处理得到的图像数据,其中,所述显卡为所述虚拟机的宿主机的外挂显卡,所述宿主机为运行Linux系统的服务器;
所述推流器,用于从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
第二方面,本申请实施例提供了一种基于前述图形渲染指令流处理装置的图形渲染指令流处理方法,包括:
所述图形指令转换库接收所述虚拟机通过所述透传接口透传的所述图形渲染指令流,将所述图形渲染指令流转换成所述第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
所述虚拟显示终端通过所述第二API接口获取所述图像数据;
所述推流器从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
第三方面,本申请实施例提供了一种服务器,包括:
外挂的显卡;其中,
所述服务器运行Linux系统,在所述Linux系统中运行有虚拟机,所述虚拟机运行Android系统,所述Android系统的图形渲染指令流通过透传接口透传给图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtual io驱动,并提供所述透传接口;
所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
第四方面,本申请实施例提供了一种基于前述服务器的图形渲染方法,包括:
所述Android系统的图形渲染指令流通过所述透传接口透传给所述图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成所述显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
本申请实施例提供的图形渲染指令流处理装置、处理方法、服务器及图形渲染方法,通过显卡虚拟化技术加载显卡驱动或者加载virtual io驱动,提供透传接口,通过图形渲染指令流处理装置将虚拟机通过透传接口透传的Android系统的图形渲染指令流传给虚拟机的宿主机系统进行处理,并将显卡处理得到的图像数据输出到虚拟显示终端,在编码器对图像数据编码后,通过推流器将编码后的图像数据推流给终端进行显示,整个方案有别于已知的基于anbox的方案,实现简单,不依赖X11和Xorg。
附图说明
图1为本申请实施例提供的一种图形渲染指令流处理装置的结构示意图;
图2为本申请实施例提供的一种基于图1所述的图形渲染指令流处理装置的图形渲染指令流处理方法的流程示意图;
图3为本申请实施例提供的一种服务器涉及的图形渲染指令流的处理流程示意图;
图4为本申请实施例提供的另一种服务器涉及的图形渲染指令流的处理流程示意图;
图5为本申请实施例提供的一种图形渲染方法的流程示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
参照图1所示,为本申请实施例提供的一种图形渲染指令流处理装置,包括:
图形指令转换库10、虚拟显示终端11和推流器12;其中,
所述图形指令转换库10,用于接收虚拟机通过透传接口透传的Android系统的图形渲染指令流,将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载所述显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtual io驱动,并提供所述透传接口;
所述虚拟显示终端11,用于通过所述显卡驱动的第二API接口获取显卡处理得到的图像数据,其中,所述显卡为所述虚拟机的宿主机的外挂显卡,所述宿主机为运行Linux系统的服务器;
所述推流器12,用于从所述虚拟显示终端11采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
本实施例中,可以理解的是,图形渲染指令流处理装置是介于虚拟机和Linux系统之间进行指令转换和图像显示的模块。图形渲染指令流处理装置包括图形指令转换库10、虚拟显示终端11和推流器12,其中,图形指令转换库10会将虚拟机透传的Android系统的图形渲染指令流(包括EGL/OpenGL ES指令流)进行格式转换,转换成显卡驱动的第一API接口可识别的格式,之后通过调用第一API接口将格式转换后的图形渲染指令流传给虚拟机的宿主机的Linux系统的相应处理模块,并借助于宿主机的外挂显卡进行图形渲染。虚拟显示终端11作为Android系统的虚拟显示器,图形渲染的结果可通过显卡驱动的第二API接口传给虚拟显示终端11,之后推流器12会从虚拟显示终端11采集图像数据,将图像数据传给编码器进行编码,获取编码器的编码结果,将编码结果推流给终端进行显示。所述第一API接口和第二API接口可以相同,也可以不同。需要说明的是,如果所述虚拟机采用显卡虚拟化技术加载所述显卡驱动,则Linux系统的相应处理模块可以为图形指令流服务端libgfxstream_backend;如果所述虚拟机加载virtual io驱动,则Linux系统的相应处理模块可以为图形指令流服务端libOpenglRender,此种方式下,虚拟显示终端11可以集成在图形合成渲染模块OpenGL Renderer中,所述OpenGL Renderer通过第二API接口获取图形渲染的结果,对图形渲染的结果进行合成,并将合成后的结果输出到虚拟显示终端11,继而通过推流器12进行推流。
本申请实施例提供的图形渲染指令流处理装置,借助于图形指令转换库10将虚拟机通过透传接口透传的Android系统的图形渲染指令流传给虚拟机的宿主机系统进行处理,并将显卡处理得到的图像数据输出到虚拟显示终端11,在编码器对图像数据编码后,借助于推流器12将编码后的图像数据推流给终端进行显示,整个方案有别于已知的基于anbox的方案,实现简单,不依赖X11和Xorg。
在前述装置实施例的基础上,所述图形指令转换库,可以用于将转换后的图形渲染指令流通过所述第一API接口发送给所述Linux系统的图形指令流服务端;
所述推流器,可以用于将所述图像数据发送给所述Linux系统的编码器,并接收所述编码器对所述图像数据进行编码后的结果。
本实施例中,可以理解的是,图形指令转换库在对虚拟机透传的图形渲染指令流进行格式转换后,可以通过第一API接口将转换后的图形渲染指令流传给Linux系统的图形指令流服务端,之后图形指令流服务端会对转换后的图形渲染指令流进行解码,并通过宿主机的外挂显卡进行图形渲染,从而得到图像数据。然后图像数据可以通过第二API接口传给虚拟显示终端,推流器可以从虚拟显示终端获取到图像数据,将图像数据传给Linux系统的编码器进行编码,并在编码后获取编码结果,将编码结果推流给终端。
参照图2所示,为本申请实施例提供的一种基于前述装置实施例所述的图形渲染指令流处理装置的图形渲染指令流处理方法,包括:
S20、所述图形指令转换库接收所述虚拟机通过所述透传接口透传的所述图形渲染指令流,将所述图形渲染指令流转换成所述第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
S21、所述虚拟显示终端通过所述第二API接口获取所述图像数据;
S22、所述推流器从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
本申请实施例提供的图形渲染指令流处理方法,图形指令转换库将虚拟机通过透传接口透传的Android系统的图形渲染指令流传给虚拟机的宿主机系统进行处理,并将显卡处理得到的图像数据输出到虚拟显示终端,在编码器对图像数据编码后,推流器将编码后的图像数据推流给终端进行显示,整个方案有别于已知的基于anbox的方案,实现简单,不依赖X11和Xorg。
本申请实施例提供了一种服务器,包括:
外挂的显卡;其中,
所述服务器运行Linux系统,在所述Linux系统中运行有虚拟机,所述虚拟机运行Android系统,云应用运行于所述虚拟机中,所述Android系统的图形渲染指令流通过透传接口透传给图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtual io驱动,并提供所述透传接口;
所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
本申请实施例提供的服务器,通过显卡虚拟化技术加载显卡驱动或者加载virtual io驱动,提供透传接口,通过图形渲染指令流处理装置将虚拟机通过透传接口透传的Android系统的图形渲染指令流传给虚拟机的宿主机系统进行处理,并将显卡处理得到的图像数据输出到虚拟显示终端,在编码器对图像数据编码后,将编码后的图像数据推流给终端进行显示,整个方案有别于已知的基于anbox的方案,实现简单,不依赖X11和Xorg。
如图3所示为前述服务器实施例涉及的一种图形渲染指令流的处理流程示意图,参照图3,在前述服务器实施例的基础上,所述透传接口可以包括直接渲染管理器drm接口,所述Android系统可以包括图形组件Graphic,所述Graphic可以包括图形库libEGL和图形模拟库libEGL_emulator,将所述libEGL_emulator作为所述Android系统的图形驱动库,所述图形渲染指令流处理装置包括图形指令转换库EGL/GL translator、虚拟显示终端egl-headless display和推流器Streamer;其中,
所述Android系统在加载所述libEGL后,通过所述libEGL_emulator对图形渲染指令流进行编码,并将编码后的图形渲染指令流通过显卡设备节点,并经所述drm接口透传给所述EGL/GL translator,所述EGL/GL translator对所述编码后的图形渲染指令流进行转换,并将转换后的图形渲染指令流通过所述第一API接口发送给图形指令流服务端libgfxstream_backend,所述libgfxstream_backend对所述转换后的图形渲染指令流进行解码,基于所述Linux系统的图形库libEGL和显卡图形库,通过所述显卡对解码后的图形渲染指令进行处理得到所述图像数据;
所述libgfxstream_backend通过所述第二API接口将所述图像数据发送给所述图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图像数据输出到所述egl-headless display,所述egl-headless display通过所述Streamer将所述图像数据发送给所述编码器,所述编码器对所述图像数据进行编码,并将编码后的图像数据发送给所述Streamer,所述Streamer将所述编码后的图像数据推流给终端进行显示。
本实施例中,可以理解的是,Android系统的图形渲染指令流可以通过图形组件Graphic进行编码,之后通过drm接口传给图形指令流转换模块gfxstream(即图形渲染指令流处理装置)的EGL/GL translator,EGL/GL translator可以对编码后的图形渲染指令流进行格式转换,并通过第一API接口传给libgfxstream_backend,libgfxstream_backend可以对转换后的图形渲染指令流进行解码,通过调用Linux系统的图形库libEGL和显卡图形库(图3中示出的是英伟达图形库libEGL_nvidia),并利用外挂显卡对解码后的图形渲染指令进行处理得到图像数据。之后libgfxstream_backend可以将图像数据通过第二API接口传给egl-headless display。Streamer可以采集传给egl-headless display的图像数据,并将图像数据传给编码器(图3中示出的是编码器FFmpeg加载英伟达标准驱动,通过英伟达编码库libnvidia-encode进行硬件编码)进行编码,获取编码后的图像数据,将编码后的图像数据传给终端的媒体播放器Media Player。
如图4所示为前述服务器实施例涉及的另一种图形渲染指令流的处理流程示意图,参照图4,在前述服务器实施例的基础上,所述透传接口可以包括PCI-E物理层接口pipe,所述Android系统可以包括图形组件Graphic,所述Graphic可以包括图形库libEGL和图形模拟库libEGL_emulator,将所述libEGL_emulator作为所述Android系统的图形驱动库,所述图形渲染指令流处理装置可以包括图形指令转换库EGL/GL translator、图形合成渲染模块OpenGL Renderer和推流器Streamer,所述OpenGL Renderer集成有虚拟显示终端egl-headless display;其中,
所述Android系统在加载所述libEGL后,通过所述libEGL_emulator对图形渲染指令流进行编码,并将编码后的图形渲染指令流通过虚拟图形管道文件,并经所述pipe透传给所述EGL/GL translator,所述EGL/GL translator对所述编码后的图形渲染指令流进行转换,并将转换后的图形渲染指令流通过所述第一API接口发送给图形指令流服务端libOpenglRender,所述libOpenglRender对所述转换后的图形渲染指令流进行解码,基于所述Linux系统的图形库libEGL和显卡图形库,通过所述显卡对解码后的图形渲染指令进行处理得到所述图像数据;
所述libOpenglRender通过所述第二API接口将所述图像数据发送给所述OpenGLRenderer,所述OpenGL Renderer对所述图像数据进行合成,并将合成后的图像数据输出到所述egl-headless display,所述egl-headless display通过所述Streamer将所述图像数据发送给所述编码器,所述编码器对所述图像数据进行编码,并将编码后的图像数据发送给所述Streamer,所述Streamer将所述编码后的图像数据推流给终端进行显示。
本实施例中,虚拟机加载virtual io驱动实现虚拟图形管道文件/dev/qemu_pipe的挂载,并提供pipe接口用于透传Android系统的图形渲染指令流。如图4所示,Android系统的图形渲染指令流可以通过图形组件Graphic进行编码,之后通过pipe接口传给模拟器emulator(即图形渲染指令流处理装置)的EGL/GL translator,EGL/GL translator可以对编码后的图形渲染指令流进行格式转换,并通过第一API接口传给libOpenglRender,libOpenglRender可以对转换后的图形渲染指令流进行解码,通过调用Linux系统的图形库libEGL和显卡图形库(图4中示出的是英伟达图形库libEGL_nvidia),并利用外挂显卡对解码后的图形渲染指令进行处理得到图像数据。之后libOpenglRender可以将图像数据通过第二API接口传给OpenGL Renderer进行合成,并将合成后的数据传输给egl-headlessdisplay(图4未示出)。Streamer可以采集传给egl-headless display的图像数据,并将图像数据传给编码器(图4中示出的是编码器FFmpeg加载英伟达标准驱动,通过英伟达编码库libnvidia-encode进行硬件编码)进行编码,获取编码后的图像数据,将编码后的图像数据传给终端的媒体播放器Media Player。
在前述服务器实施例的基础上,所述编码器可以包括FFmpeg,所述FFmpeg加载显卡编码驱动,通过所述显卡编码驱动对所述图像数据进行硬件编码。
在前述服务器实施例的基础上,所述显卡可以为N卡,所述显卡图形库可以为英伟达图形库libEGL_nvidia,所述显卡驱动可以为英伟达标准驱动,所述FFmpeg通过英伟达编码库libnvidia-encode对所述图像数据进行硬件编码。
本实施例中,可以理解的是,当所述显卡为N卡时,显卡驱动可以为英伟达标准驱动,该驱动提供标准EGL/OpenGL ES接口,Android系统的图形渲染指令流的处理流程可以如图3或图4所示。除此之外,所述显卡可以为A卡,当所述显卡为A卡时,Android系统的图形渲染指令流的处理流程整体与图3或图4所示的处理流程一致,所不同的是,显卡图形库和显卡编码库分别为A卡对应的显卡图形库和显卡编码库。
在前述服务器实施例的基础上,所述显卡虚拟化技术可以为virglrenderer。
本实施例中,需要说明的是,所述虚拟机采用显卡虚拟化技术加载显卡驱动实现显卡设备节点/dev/dri/renderD128的挂载,并提供drm接口用于透传Android系统的图形渲染指令流。
在前述服务器实施例的基础上,所述服务器还可以包括:采用ARM架构的大核CPU,其中,所述Linux系统为采用ARM架构的乌班图ubuntu,所述虚拟机可以为crosvm虚拟机或qemu虚拟机。
本实施例中,需要说明的是,Linux系统除了可以为采用ARM架构的乌班图ubuntu,还可以为采用X86架构的乌班图ubuntu等其它系统。
参照图5所示,为本申请实施例提供的一种基于前述服务器实施例所述的服务器的图形渲染方法,包括:
S50、所述Android系统的图形渲染指令流通过所述透传接口透传给所述图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成所述显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
S51、所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
本申请实施例提供的图形渲染方法,借助于图形渲染指令流处理装置将虚拟机通过透传接口透传的Android系统的图形渲染指令流传给虚拟机的宿主机系统进行处理,并将显卡处理得到的图像数据输出到虚拟显示终端,在编码器对图像数据编码后,将编码后的图像数据推流给终端进行显示,整个方案有别于已知的基于anbox的方案,实现简单,不依赖X11和Xorg。
术语解释:
EGL:OpenGL ES渲染API和本地窗口系统之间的一个中间接口层;
OpenGL ES:OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计;
OpenGL:英文全称为Open Graphics Library,中文译文为开放图形库,其定义了一个跨编程语言、跨平台的编程接口的规格,不同厂商会有不同的实现方法,它主要用于三维图象(二维的亦可)绘制;
API:英文全称为Application Programming Interface,中文译文为应用程序编程接口;
X86架构:英文全称为The X86 architecture,中文译文为微处理器执行的计算机语言指令集;
PCI-E:英文全称为Peripheral Component Interconnect Express,是一种高速串行计算机总线;
crosvm:用于创建虚拟机的应用;
qemu:一款开源的模拟器及虚拟机监管器。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种图形渲染指令流处理装置,其特征在于,包括:
图形指令转换库、虚拟显示终端和推流器;其中,
所述图形指令转换库,用于接收虚拟机通过透传接口透传的Android系统的图形渲染指令流,将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载所述显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtualio驱动,并提供所述透传接口;
所述虚拟显示终端,用于通过所述显卡驱动的第二API接口获取显卡处理得到的图像数据,其中,所述显卡为所述虚拟机的宿主机的外挂显卡,所述宿主机为运行Linux系统的服务器;
所述推流器,用于从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
2.根据权利要求1所述的装置,其特征在于,
所述图形指令转换库,用于将转换后的图形渲染指令流通过所述第一API接口发送给所述Linux系统的图形指令流服务端;
所述推流器,用于将所述图像数据发送给所述Linux系统的编码器,并接收所述编码器对所述图像数据进行编码后的结果。
3.一种基于权利要求1或2所述的图形渲染指令流处理装置的图形渲染指令流处理方法,其特征在于,包括:
所述图形指令转换库接收所述虚拟机通过所述透传接口透传的所述图形渲染指令流,将所述图形渲染指令流转换成所述第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
所述虚拟显示终端通过所述第二API接口获取所述图像数据;
所述推流器从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
4.一种服务器,其特征在于,包括:
外挂的显卡;其中,
所述服务器运行Linux系统,在所述Linux系统中运行有虚拟机,所述虚拟机运行Android系统,所述Android系统的图形渲染指令流通过透传接口透传给图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理,其中,所述虚拟机采用显卡虚拟化技术加载显卡驱动,并提供所述透传接口,或者所述虚拟机加载virtual io驱动,并提供所述透传接口;
所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
5.根据权利要求4所述的服务器,其特征在于,
所述透传接口包括直接渲染管理器drm接口,所述Android系统包括图形组件Graphic,所述Graphic包括图形库l ibEGL和图形模拟库libEGL_emulator,所述图形渲染指令流处理装置包括图形指令转换库EGL/GL translator、虚拟显示终端egl-headless display和推流器Streamer;其中,
所述Android系统在加载所述l ibEGL后,通过所述libEGL_emulator对图形渲染指令流进行编码,并将编码后的图形渲染指令流通过显卡设备节点,并经所述drm接口透传给所述EGL/GL translator,所述EGL/GL translator对所述编码后的图形渲染指令流进行转换,并将转换后的图形渲染指令流通过所述第一API接口发送给图形指令流服务端libgfxstream_backend,所述libgfxstream_backend对所述转换后的图形渲染指令流进行解码,基于所述Linux系统的图形库libEGL和显卡图形库,通过所述显卡对解码后的图形渲染指令进行处理得到所述图像数据;
所述libgfxstream_backend通过所述第二API接口将所述图像数据发送给所述图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图像数据输出到所述egl-headless display,所述egl-headless display通过所述Streamer将所述图像数据发送给所述编码器,所述编码器对所述图像数据进行编码,并将编码后的图像数据发送给所述Streamer,所述Streamer将所述编码后的图像数据推流给终端进行显示。
6.根据权利要求4所述的服务器,其特征在于,
所述透传接口包括PCI-E物理层接口pipe,所述Android系统包括图形组件Graphic,所述Graphic包括图形库libEGL和图形模拟库libEGL_emulator,所述图形渲染指令流处理装置包括图形指令转换库EGL/GL translator、图形合成渲染模块OpenGL Renderer和推流器Streamer,所述OpenGL Renderer集成有虚拟显示终端egl-headless display;其中,
所述Android系统在加载所述libEGL后,通过所述libEGL_emulator对图形渲染指令流进行编码,并将编码后的图形渲染指令流通过虚拟图形管道文件,并经所述pipe透传给所述EGL/GL translator,所述EGL/GL translator对所述编码后的图形渲染指令流进行转换,并将转换后的图形渲染指令流通过所述第一API接口发送给图形指令流服务端libOpenglRender,所述libOpenglRender对所述转换后的图形渲染指令流进行解码,基于所述Linux系统的图形库libEGL和显卡图形库,通过所述显卡对解码后的图形渲染指令进行处理得到所述图像数据;
所述libOpenglRender通过所述第二API接口将所述图像数据发送给所述OpenGLRenderer,所述OpenGL Renderer对所述图像数据进行合成,并将合成后的图像数据输出到所述egl-headless display,所述egl-headless display通过所述Streamer将所述图像数据发送给所述编码器,所述编码器对所述图像数据进行编码,并将编码后的图像数据发送给所述Streamer,所述Streamer将所述编码后的图像数据推流给终端进行显示。
7.根据权利要求5或6所述的服务器,其特征在于,所述编码器包括FFmpeg,所述FFmpeg加载显卡编码驱动,通过所述显卡编码驱动对所述图像数据进行硬件编码。
8.根据权利要求7所述的服务器,其特征在于,所述显卡为N卡,所述显卡图形库为英伟达图形库libEGL_nvidia,所述显卡驱动为英伟达标准驱动,所述FFmpeg通过英伟达编码库l ibnvidia-encode对所述图像数据进行硬件编码。
9.根据权利要求4所述的服务器,其特征在于,还包括:采用ARM架构的大核CPU,其中,所述Linux系统为采用ARM架构的乌班图ubuntu,所述虚拟机为crosvm虚拟机或qemu虚拟机。
10.一种基于权利要求4至9任一项所述的服务器的图形渲染方法,其特征在于,包括:
所述Android系统的图形渲染指令流通过所述透传接口透传给所述图形渲染指令流处理装置,所述图形渲染指令流处理装置将所述图形渲染指令流转换成所述显卡驱动的第一API接口可识别的格式,并调用所述第一API接口以对转换后的图形渲染指令流进行处理;
所述图形渲染指令流处理装置通过所述显卡驱动的第二API接口获取所述显卡处理得到的图像数据,将所述图像数据输出到虚拟显示终端,从所述虚拟显示终端采集图像数据,通过编码器对所述图像数据进行编码,并将编码后的图像数据推流给终端进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500491.0A CN114594993B (zh) | 2022-05-10 | 2022-05-10 | 图形渲染指令流处理装置、处理方法、服务器及渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500491.0A CN114594993B (zh) | 2022-05-10 | 2022-05-10 | 图形渲染指令流处理装置、处理方法、服务器及渲染方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114594993A CN114594993A (zh) | 2022-06-07 |
CN114594993B true CN114594993B (zh) | 2022-08-19 |
Family
ID=81821046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210500491.0A Active CN114594993B (zh) | 2022-05-10 | 2022-05-10 | 图形渲染指令流处理装置、处理方法、服务器及渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114594993B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114758047B (zh) * | 2022-06-14 | 2022-09-13 | 海马云(天津)信息技术有限公司 | 服务器与基于服务器的图形渲染方法 |
CN114756334B (zh) * | 2022-06-14 | 2022-09-30 | 海马云(天津)信息技术有限公司 | 服务器与基于服务器的图形渲染方法 |
CN115793949B (zh) * | 2023-02-09 | 2023-07-21 | 蔚来汽车科技(安徽)有限公司 | 车机系统、共享触摸设备的方法、车辆和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888485A (zh) * | 2012-12-19 | 2014-06-25 | 华为技术有限公司 | 云计算资源的分配方法、装置及系统 |
CN113542757A (zh) * | 2021-07-20 | 2021-10-22 | Oppo广东移动通信有限公司 | 云应用的图像传输方法、装置、服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5952406B2 (ja) * | 2014-01-09 | 2016-07-13 | 株式会社スクウェア・エニックス・ホールディングス | 遠隔描画能力を有するビデオゲーム装置 |
-
2022
- 2022-05-10 CN CN202210500491.0A patent/CN114594993B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888485A (zh) * | 2012-12-19 | 2014-06-25 | 华为技术有限公司 | 云计算资源的分配方法、装置及系统 |
CN113542757A (zh) * | 2021-07-20 | 2021-10-22 | Oppo广东移动通信有限公司 | 云应用的图像传输方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114594993A (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114594993B (zh) | 图形渲染指令流处理装置、处理方法、服务器及渲染方法 | |
US10693935B2 (en) | User interface remoting through video encoding techniques | |
CN110647375A (zh) | 云桌面的图像渲染方法、装置和云服务器 | |
CN111354063B (zh) | 一种三维元素渲染方法、桌面云服务端及桌面云系统 | |
CN107404418B (zh) | 互联网产品测试方法、装置、设备及存储介质 | |
TW200842713A (en) | Computer graphics rendering | |
CN112486609A (zh) | 一种基于云桌面的虚拟显卡实现方法和装置 | |
JP6470766B2 (ja) | 現在の状態に基づいてシェーダプログラムをアップデートするための方法および装置 | |
CN110807111A (zh) | 三维图形的处理方法及装置、存储介质、电子设备 | |
CN112860364A (zh) | 一种基于Linux内核的Android图形显示方法 | |
CN114756334B (zh) | 服务器与基于服务器的图形渲染方法 | |
US9460481B2 (en) | Systems and methods for processing desktop graphics for remote display | |
CN114579255A (zh) | 虚拟机的图像处理方法、装置、系统以及电子设备 | |
CN113655975B (zh) | 图像显示方法、装置、电子设备和介质 | |
CN113379588A (zh) | 容器应用的渲染系统 | |
CN111027333B (zh) | 篇章翻译方法和装置 | |
CN116962813A (zh) | 一种yuv数据渲染系统及方法、电子设备和存储介质 | |
US9064292B1 (en) | System for and method of classifying and translating graphics commands in client-server computing systems | |
CN116880937A (zh) | 互动课堂的桌面截屏数据处理方法、装置、设备及介质 | |
CN114758047B (zh) | 服务器与基于服务器的图形渲染方法 | |
US9183663B1 (en) | System for and method of classifying and translating graphics commands in client-server computing systems | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
CN110365858B (zh) | 信息传输方法、装置、设备、系统及存储介质 | |
CN108235822B (zh) | 虚拟sim卡的实现方法及装置、存储介质、电子设备 | |
CN113157226A (zh) | 远程数据的显示方法、装置、设备及机器可读存储介质 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231224 Address after: 230031 Room 672, 6/F, Building A3A4, Zhong'an Chuanggu Science Park, No. 900, Wangjiang West Road, High-tech Zone, Hefei, Anhui Patentee after: Anhui Haima Cloud Technology Co.,Ltd. Address before: 301700 room 2d25, Building 29, No.89 Heyuan Road, Jingjin science and Technology Valley Industrial Park, Wuqing District, Tianjin Patentee before: HAIMAYUN (TIANJIN) INFORMATION TECHNOLOGY CO.,LTD. |