CN103559078A - Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 - Google Patents
Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 Download PDFInfo
- Publication number
- CN103559078A CN103559078A CN201310554845.0A CN201310554845A CN103559078A CN 103559078 A CN103559078 A CN 103559078A CN 201310554845 A CN201310554845 A CN 201310554845A CN 103559078 A CN103559078 A CN 103559078A
- Authority
- CN
- China
- Prior art keywords
- vertex
- buffer area
- vertex data
- data
- instruction
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置,图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器以根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令,并发送至图形服务器以根据分解的顶点数组类指令渲染出图片,通过上述方式,本发明能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
Description
技术领域
本发明涉及虚拟化技术领域,特别是涉及一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置。
背景技术
GPU(Graphic Processing Unit,图像处理器单元)主要是进行浮点运算和并行计算的,常用于专业的图形运算。GPU虚拟化技术就是要让运行在数据中心服务器上的虚拟化实例共享同一块或多块GPU处理器进行图形运算。从目前已经实现的产品来看,基于DirectX3d的虚拟化解决方案已经比较成熟,无论是性能、体验等方面都已经接近于物理机的水平;而在更广泛应用的高清制图领域,绝大部分3D软件更多的是基于Opengl(Open Graphics Library,开放的图形程序接口)规范来实现的,这一领域才是企业最迫切希望解决的应用难题。
基于Opengl指令的GPU虚拟化技术的实现目前现存的有开源代码Chromium,Chromium本质上是实现了一种跨网络远程渲染过程。在Chromium架构中,顶点数组允许Opengl驱动程序直接从应用程序的内存中获取顶点、颜色、法线向量等属性。顶点数组的使用能最小化函数调用的开销,减少必须打包到显示驱动中命令缓存区的数据量。但是,在远程渲染过程中,从应用层截获到的顶点数组指针是在图形客户端分配出来的,若直接将顶点数组指针透传到图形服务器进行使用会产生错误。Chromium将一个glArrayElement指令调用分解为等价的glVertex3f、glNormal3f、glColor3f或glTexCoord2f调用,即把glArrayElement的传指针类参数指令转化为一系列传值类参数指令,分解后的指令数目是分解前指令数目的100多倍,会使网络传输的数据量陡然增加,会产生大量的延时,占用传输通道的带宽,增加内存共享对CPU的消耗,造成VM(Virtual Machine ware,虚拟机)密度低,成本较高。
发明内容
本发明实施方式提供一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置,能大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
第一方面提供一种GPU虚拟化实现方法,包括:图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器,以使得图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令并发送至图形服务器,以使得图形服务器根据分解的顶点数组类指令渲染出图片,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。
在第一方面的第一种可能的实现方式中,方法还包括:图形客户端通过数据通道接收图形服务器发送的图片并贴至图形设备接口;通过图形设备接口将顶点数组类指令重定向至TC端以执行顶点数组类指令并生成屏幕画面。
在第一方面的第二种可能的实现方式中,进行顶点数据缓存以创建第一缓存区包括:如果新增的顶点数据为历史数据,但缓存的第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则创建临时缓存区;将新增的顶点数据拷贝到临时缓存区中;将顶点数据从临时缓存区拷贝至第一缓存区。
在第一方面的第三种可能的实现方式中,进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系包括:进行顶点数据缓存,并创建第一缓存区;发送同步指令给图形服务器以创建第二缓存区,同步指令包括顶点数组指针,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系。
在第一方面的第四种可能的实现方式中,第一缓存区位于图形客户端中。
在第一方面的第五种可能的实现方式中,第一缓存区位于共享内存中。
第二方面提供一种GPU虚拟化实现方法,包括:接收同步指令并创建第二缓存区以进行顶点数据缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,顶点数据包括顶点数组指针和顶点数组长度;根据顶点数组指针判断第二缓存区是否缓存有对应的顶点数据,如果有,则接收图形客户端通过数据通道发送经打包的顶点数组类指令,并根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端;如果没有,则接收图形客户端发送的经分解后的顶点数组类指令,并根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端。
在第二方面的第一种可能的实现方式中,接收同步指令并创建第二缓存区以进行顶点数据缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系包括:接收图形客户端发送的同步指令,其中,同步指令包括顶点数组指针;根据同步指令创建第二缓存区以进行顶点数据缓存,第二缓存区通过顶点数组指针与图形客户端的第一缓存区形成顶点数据的映射关系。
在第二方面的第二种可能的实现方式中,第二缓存区位于图形服务器中。
在第二方面的第三种可能的实现方式中,第二缓存区位于共享内存中。
第三方面提供一种GPU中顶点数据缓存的方法,包括:通过图形客户端创建第一缓存区,进行顶点数据缓存,其中,顶点数据包括顶点数组指针和顶点数组长度;发送同步指令至图形服务器,其中,同步指令包括顶点数组指针;通过图形服务器根据同步指令创建第二缓存区,进行顶点数据缓存,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系。
在第三方面的第一种可能的实现方式中,进行顶点数据缓存是以缓存单元模式为载体进行学习、预测和校正,包括顶点数组指针以及顶点数组长度的学习、预测和校正。
在第三方面的第二种可能的实现方式中,缓存单元模式包括:指明顶点数组的首地址和每字节的长度;根据首地址的偏移量绘制几何单元。
在第三方面的第三种可能的实现方式中,顶点数组指针的学习、预测和校正包括:获取顶点数组类指令;用顶点数组指针作Hash查找;判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;透传缓存数据指针。
在第三方面的第四种可能的实现方式中,顶点数组长度的学习、预测和校正包括:获取画顶点指令;判断顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传画顶点指针,如果否,则分解画顶点指针;如果顶点数据未做缓存,则判断顶点数组长度是否需要更新,如果需要,则更新顶点数组长度,如果不需要,则分解画顶点指针,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。
第四方面提供一种GPU图形客户端,包括指令获取模块、第一缓存模块、查询模块以及发送模块,其中:指令获取模块用于截获顶点数组类指令;第一缓存模块用于进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;查询模块用于在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则发送模块将顶点数组类指令打包并发送至图形服务器,以使得图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则发送模块分解顶点数组类指令并发送至图形服务器,以使得图形服务器根据分解的顶点数组类指令渲染出图片,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。
在第四方面的第一种可能的实现方式中,图形客户端还包括第一接收模块和图形设备接口,其中:第一接收模块用于通过数据通道接收图片并贴至图形设备接口;图形设备接口将顶点数组类指令重定向至TC端以执行顶点数组类指令并生成屏幕画面。
在第四方面的第二种可能的实现方式中,发送模块还发送同步指令给图形服务器,同步指令包括顶点数组指针,第一缓存区通过顶点数组指针与图形服务器的第二缓存区形成顶点数据的映射关系。
在第四方面的第三种可能的实现方式中,如果新增的顶点数据为历史数据,但缓存的第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则第一缓存模块还用于:创建临时缓存区;将新增的顶点数据拷贝到临时缓存区中;将顶点数据从临时缓存区拷贝至第一缓存区。
第五方面提供一种GPU图形服务器,包括第二缓存模块、第二接收模块以及渲染模块,其中:第二缓存模块用于创建第二缓存区以进行顶点数据缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,顶点数据包括顶点数组指针和顶点数组长度;第二接收模块用于根据顶点数组指针判断第二缓存区是否缓存有对应的顶点数据,如果有,则接收图形客户端发送的经打包的顶点数组类指令,并且渲染模块根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端;如果没有,则第二接收模块接收图形客户端发送的经分解后的顶点数组类指令,并且渲染模块根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端。
在第五方面的第一种可能的实现方式中,第二缓存模块还接收图形客户端发送的同步指令,其中,同步指令包括顶点数组指针;第二缓存模块根据同步指令创建第二缓存区以进行顶点数据缓存,第二缓存区通过顶点数组指针与图形客户端的第一缓存区形成顶点数据的映射关系。
第六方面提供一种GPU中顶点数据缓存的装置,包括:第一缓存模块,用于在图形客户端创建第一缓存区,进行顶点数据缓存,其中,顶点数据包括顶点数组指针和顶点数组长度;发送模块,用于发送同步指令至图形服务器,其中,同步指令包括顶点数组指针;第二缓存模块,用于通过图形服务器根据同步指令创建第二缓存区,进行顶点数据缓存,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系。
在第六方面的第一种可能的实现方式中,第一缓存模块以缓存单元模式为载体对顶点数组指针以及顶点数组长度的学习、预测和校正。
在第六方面的第二种可能的实现方式中,缓存单元模式包括指明顶点数组的首地址和每字节的长度;根据首地址的偏移量绘制几何单元。
在第六方面的第三种可能的实现方式中,对顶点数组指针学习、预测和校正时,第一缓存模块用于:获取顶点数组类指令;用顶点数组指针作Hash查找;判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;透传缓存数据指针。
在第六方面的第四种可能的实现方式中,对顶点数组长度的学习、预测和校正进,第一缓存模块用于:获取画顶点指令;判断顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是致,则透传画顶点指针,如果否,则分解画顶点指针;如果顶点数据未做缓存,则判断顶点数组长度是否需要更新,如果需要,则更新顶点数组长度,如果不需要,则分解画顶点指针,其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。
本发明通过图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器,以使得图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令,并发送至图形服务器,以使得图形服务器根据分解的顶点数组类指令渲染出图片;第二缓存区与第一缓存区形成顶点数据的映射关系后,就不需要对顶点数组类指令进行分解,可以解决在图形服务器使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本发明第一实施例的GPU虚拟化的实现系统的结构示意图;
图2是本发明第一实施例的GPU虚拟化实现方法的流程示意图;
图3是本发明第二实施例的GPU虚拟化实现方法的流程示意图;
图4是本发明第一实施例的GPU中顶点数据缓存的方法的流程示意图;
图5是本发明第一实施例的GPU中顶点数据缓存的方法的缓存单元模式结构示意图;
图6是本发明第一实施例的GPU中顶点数据缓存的方法中顶点数组指针的学习、预测和校正方法流程示意图;
图7是本发明第一实施例的GPU中顶点数据缓存的方法中顶点数组长度的学习、预测和校正方法流程示意图;
图8是本发明第一实施例的GPU中顶点数据缓存的方法中更新顶点数组长度的流程示意图;
图9是本发明第一实施例的GPU图形客户端的结构示意图;
图10是本发明第一实施例的GPU图形服务器的结构示意图;
图11是本发明第一实施例的GPU中顶点数据缓存的装置的结构示意图;
图12是本发明第二实施例的GPU图形客户端的结构示意图;
图13是本发明第二实施例的GPU图形服务器的结构示意图;
图14是本发明第二实施例的GPU虚拟化的实现系统的结构示意图。
具体实施方式
下面结合附图和实施方式对本发明进行详细说明。
首先请参见图1,图1是本发明第一实施例的GPU虚拟化的实现系统的结构示意图。如图1所示,该GPU虚拟化的实现系统10包括图形客户端11、图形服务器12、数据通道13、显卡14、TC(Thin Client,瘦客户)端15,其中,图形客户端11包括GDI(Graphic Device Interface,图形设备接口)110。图形客户端11与图形服务器12通过数据通道13连接,显卡14与图形服务器12连接,TC端15与图形客户端11的图形设备接口110连接。
在本实施例中,图形客户端11截获顶点数组类指令,创建第一缓存区111,进行顶点数据缓存,并通过数据通道13发送同步指令给图形服务器12。其中,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度,同步指令包括顶点数组指针和顶点数组的内容。图形服务器12接收到同步指令后即创建第二缓存区121,第二缓存区121通过顶点数组指针与第一缓存区111建立顶点数据的映射关系。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。图形客户端11还在本地数据中进行查询,若本地数据中存在一顶点数据与截获的所述顶点数据一致,则对顶点数组类指令进行缓存优化,即将所述顶点数组类指令打包并发送至所述图形服务器,图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片;若不存在,则分解顶点数组类指令,并发送至图形服务器,图形服务器根据分解的顶点数组类指令渲染出图片,其中,本地数据为预存在图形客户端11的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器12。渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。具体地,图形客户端11以缓存单元模式为载体对顶点数组指针以及顶点数组长度进行学习、预测和校正,进而判断缓存的顶点数据是否存在于本地数据中,若存在,则对顶点数组类指令进行缓存优化,若不存在,则分解顶点数组类指令,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化。在GPU虚拟化技术中,分解后的指令数目是分解前指令数目的100多倍,这会使网络传输的数据量陡然增加,进而产生大量的延时,占用传输通道的带宽。在本实施例中,在截获的顶点数据与本地数据一致时,对顶点数组类指令进行缓存优化,从而不需要对顶点数组类指令进行分解,可以解决在图形服务器12直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此在确保缓存的顶点数据的一致性的同时,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
在本实施例中,本地数据中存在一顶点数据与截获的顶点数据一致,即截获的顶点数据存在于本地数据时,图形客户端11将顶点数组类指令打包并通过数据通道13发送至图形服务器12,图形服务器12解包顶点数组类指令,并发送给显卡14以渲染出图片;截获的顶点数据不存在于本地数据时,图形客户端11将分解后的顶点数组类指令通过数据通道13发送至图形服务器12,图形服务器12再发送给显卡44以渲染出图片。图形服务器12通过屏幕抓取将图片拷贝到内存中,并通过数据通道13发送给图形客户端11,图形客户端11接收图片并贴至图形设备接口110,图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。其中,数据通道13可以是TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)、SR-IOV(Single-Root I/O Virtualization,单根I/O虚拟化)、RDMA(Remote Direct Memory Access,远程内存直接存取)以及共享内存中的任一项。
图2是本发明第一实施例的GPU虚拟化实现方法的流程示意图。如图2所示,对图1所示的图形客户端11作为主体进行具体说明,本实施例的GPU虚拟化实现方法包括:
S10:图形客户端11截获顶点数组类指令。具体而言,TC端15通过鼠标、键盘重定向将3D指令发送至图形客户端11的图形设备接口110,图形客户端11通过图形设备接口110的Opengl ICD(InterfaceControl Document,接口控制文件)驱动可以截获到3D指令,3D指令包括glGet*回传类指令、glSwapBuffer等需要即时发送的指令、带指针参数的顶点数组类指令以及可聚合打包类的指令。在本实施例中,主要是针对带指针参数的顶点数组类指令进行处理。
S11:进行顶点数据缓存以创建第一缓存区111,发送同步指令至图形服务器12以创建第二缓存区121,第二缓存区121与第一缓存区111形成顶点数据的映射关系,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度。具体而言,图形客户端11创建第一缓存区111,进行顶点数据的缓存,同时通过数据通道13发送同步指令给图形服务器12,同步指令包括顶点数组指针以及顶点数组的内容,通过顶点数组指针与图形服务器12的第二缓存区的顶点数据建立映射关系。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,图形客户端11还更新顶点数组长度,创建临时缓存区,将新增的顶点数据拷贝到临时缓存区中,然后将到顶点数据整体从临时缓存区拷贝到第一缓存区111。图形服务器12接收到同步指令,便立即创建第二缓存区121,从同步指令中拷贝出顶点数组的内容,并进行顶点数据的缓存。如此,第一缓存区111与第二缓存区121通过顶点数组指针建立起映射关系,确保了缓存的顶点数据的一致性。在本实施例中,第一缓存区可以位于图形客户端11或共享内存中。
S12:在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器12,以使得图形服务器12根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令,并发送至图形服务器12,以使得图形服务器12根据分解的顶点数组类指令渲染出图片。渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。其中,本地数据为预存在图形客户端11的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器12。具体而言,顶点数组缓存的过程是一个预测数据的过程,预测的结果可能是对的也可能是错的,因而数据校验过程是必不可少的。每次在使用顶点数据前,都需要在本地数据中进行查询,即图形客户端11以缓存单元模式为载体对顶点数组指针以及顶点数组长度进行学习、预测和校正,以判断缓存的顶点数据是否存在于本地数据是中,若存在,则可以对截获的顶点数据进行缓存优化,即根据顶点数组类指令的特点做相应的打包处理;若不存在,则不能进行缓存优化,只能将顶点数组类指令进行分解,使用传值类的画顶点指令,并且将该顶点数据作为历史数据保存在Hashtable中以便下一次进行缓存优化。
在本实施例中,数据通道13可以是TCP/IP、SR-IOV、RDMA以及共享内存中的任一项。图片经图形服务器12进行压缩处理后生成压缩码流,图形客户端11通过数据通道13接收压缩码流并进行解压。图形客户端11然后调用bitblt()接口将图片贴到图形设备接口110的3D应用程序的图形区域,通过图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。
在本实施例中,通过在图形客户端11建立第一缓存区111,在图形服务器12创建第二缓存区121,第二缓存区121与第一缓存区111通过顶点数组指针形成顶点数据的映射关系,并在截获的顶点数据存在于本地数据中时,进行顶点数据的缓存优化,从而不需分解顶点数组类指令,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
图3是本发明第二实施例的GPU虚拟化实现方法的流程示意图。如图3所示,对图1所示的图形服务器12作为主体进行具体说明,本实施例的GPU虚拟化实现方法包括:
S20:接收同步指令并创建第二缓存区121以进行顶点数据缓存,第二缓存区121与图形客户端11的第一缓存区111形成顶点数据的映射关系,顶点数据包括顶点数组指针和顶点数组长度。具体而言,图形服务器12接收图形客户端11发送的同步指令。其中,同步指令包括顶点数组指针和顶点数组的内容。图形服务器12根据同步指令创建第二缓存区121以进行顶点数据缓存,并通过顶点数组指针与图形客户端11的第一缓存区111形成顶点数据的映射关系,如此可以对顶点数组类指令进行缓存优化,从而不需要对顶点数组类指令进行分解,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此在确保了缓存的顶点数据的一致性的同时,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。其中,第二缓存区可以位于图形服务器12或共享内存中。
S21:根据顶点数组指针判断第二缓存区121是否缓存有对应的顶点数据,如果有,则接收图形客户端11发送的经打包的顶点数组类指令,并根据第二缓存区121的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端11,如果没有,则接收图形客户端11发送的经分解后的顶点数组类指令,并根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端11。
在本实施例中,第二缓存区121缓存有顶点数组指针对应的顶点数据时,图形服务器12接收图形客户端11通过数据通道13发送的顶点数组类指令,并根据顶点数组类指令自身的特点对其进行相应的解包处理。图形服务器12再将解包出来的顶点数组类指令发送给显卡14。第二缓存区121没有缓存顶点数组指针对应的顶点数据时,图形服务器12接收图形客户端11发送的经分解后的顶点数组类指令,再发送给显卡14。显卡14执行顶点数组类指令并渲染出图片,将其保存于显存中。其中,渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。图形服务器12通过屏幕抓取将图片拷贝到内存中。由于图片比较大,图形服务器12对图片进行压缩处理,再将压缩码流通过传输通道13发送给图形客户端11,以便图形客户端11将压缩码流进行解压,并通过图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。
图4是本发明第一实施例的GPU中顶点数据缓存的方法的流程示意图。如图4所示,本实施例的GPU中顶点数据缓存的方法包括:
S30:通过图形客户端11创建第一缓存区111,进行顶点数据缓存,其中,顶点数据包括顶点数组指针和顶点数组长度。
在本实施例中,进行顶点数据缓存是以缓存单元模式为载体进行学习、预测和校正,包括顶点数组指针以及顶点数组长度的学习、预测和校正。因此,缓存单元模式的选择是解决顶点数据缓存的首要问题,这主要是一个粒度考虑的问题。选择大粒度的模式,则查找、校正等额外开销小,但内容容易发生变化,总体性能会受影响。如大粒度的模式可以考虑以帧为单元做缓存,这样不仅可以缓存顶点数据,也能缓存3D指令,但是每帧之间的数据总会有差异且差异比较大,差异处理过程会导致性能下降。选择小粒度的模式,缓存的内容变化不大相对比较稳定,但查找、校正等额外开销会比较大。在本发明的实施例中,缓存单元模式的结构如图5所示。在Opengl的规范中,gl*Pointer的作用是指明顶点数组的首地址及每字节的长度,后续的画顶点指令glDrawArray/glDrawElements都是基于顶点数组首地址的偏移量来绘制几何单元,直到下一个gl*Pointer的指令出现,表示一个缓存单元模式结束。其中,gl*Pointer为图5中的glVertexPointer/glNormalPointer或者glInterLeavedArrays。使用这种模式进行顶点数据缓存,粒度适中,额外开销小,缓存的内容稳定性好。
如图6所示,顶点数组指针的学习、预测和校正方法包括:
S40:截获gl*Pointer指令。顶点数组指针可以从gl*Pointer指令中获取。
S41:用顶点数组指针作Hash查找。
S42:判断是否命中。如果是,则执行S43;如果否,则执行S44。具体而言,是判断获取的顶点数组指针与Hashtable中预存的顶点数组指针是否相同。
S43:设置为当前的顶点数组指针,供画顶点指令使用。
S44:将顶点数组指针及相关特征信息添加到Hashtable中。
S45:透传gl*Pointer指令。
如此,表示一个缓存单元模式中的一顶点数组指针的校正完成。重复上述过程,直到完成该缓存单元模式中的所有顶点数组指针的校正。之后,进行顶点数组长度的学习、预测和校正,即完成画顶点指令的校正,以便基于顶点数组首地址的偏移量来绘制几何单元。具体地,如图7所示,顶点数组长度的学习、预测和校正方法包括:
S50:截获glDrawArray指令。glDrawArray指令包括图5中的glDrawArray/glDrawElement指令,顶点数组的长度可以在glDrawArrays/glDrawElements指令中获取。
S51:顶点数据是否已做缓存。如果否,则执行S52;如果是,则执行S53。
S52:顶点数组长度是否需要更新。如果是,则执行S54;如果否,则执行S55。
S53:顶点数据是否存在于本地数据中。如果否,则执行S55;如果是,则执行S56。其中,本地数据为预存在图形客户端的不顶点数据,该顶点数据不需分解即可发送并使用于图形服务器12。
S54:更新顶点数组长度。具体方法如后续的图8所示。
S55:glDrawArray指令分解。由此可知,如果截获的顶点数据不存在于本地数据中,或者截获的顶点数据没有进行缓存,则不能进行缓存优化,只能将该glDrawArray指令分解,使用传值类的画顶点指令,并将该顶点数据作为历史数据保存在Hashtable中以便下一次进行缓存优化。
S56:透传glDrawArray指令。即如果截获的顶点数据存在于本地数据中,则可以进行缓存优化。重复上述过程,直至完成该缓存单元模式的所有画顶点指令的校正。然后重复图6和图7的顶点数组指针和顶点数组长度的学习、预测和校正以完成所有缓存单元模式的顶点数据的缓存。在顶点数组指针以及顶点数组长度的学习、预测和校正中,判断缓存的顶点数据是否存在于本地数据中,若是,则对顶点数组类指令进行缓存优化,若否,则分解顶点数组类指令,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化。在本实施例中,对顶点数组类指令进行缓存优化后,则不需要对顶点数组类指令进行分解,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
S31:发送同步指令至图形服务器12,其中,同步指令包括顶点数组指针。
S32:通过图形服务器12根据同步指令创建第二缓存区121,进行顶点数据缓存,第二缓存区121通过顶点数组指针与第一缓存区111形成顶点数据的映射关系。
由以上可知,按照缓存单元模式的结构做一次遍历,就可以学习到顶点数组指针及顶点数组长度,从而可以创建第二缓存区121。图形服务器12还从同步指令中拷贝出顶点数组的内容存于第二缓存区121。
在本实施例中,如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,为了保证学习、预测和校正的顶点数组指针和顶点数组长度的可靠性,需要对顶点数组长度进行更新。具体如图8所示,假设在遍历第(k-1)个缓存单元模式时,顶点数组长度需要更新为更大的值,则包括:
S60:更新顶点数组长度。具体而言,在遍历第(k-1)个缓存单元模式时,首先在第一缓存区中记录下该缓存单元模式的顶点数组指针,在顶点数组长度需要更新为更大的值时进行更新。
S61:将新增的顶点数据拷贝到临时缓存区中。具体而言,首先创建临时缓存区,将新增的数据即时地拷贝到临时缓存区中,待第(k-1)个缓存单元模式遍历完时,临时缓存区就已经缓存了历史数据,因为是即时拷贝,所以这个拷贝过程是可靠的。
S62:创建上个模式的缓存区。具体地,为了防止临时缓存区数据被覆盖,上个缓存单元模式要保证在第(k)个缓存单元模式遍历之前完成临时缓存区的顶点数据转移。因此,在第(k)个缓存单元模式的开端完成创建上个缓存单元模式的缓存区,即第(k-1)个缓存单元模式的缓存区。并将临时缓存区的顶点数据整体拷贝至第(k-1)个缓存单元模式的缓存区。上述第(k-1)个缓存单元模式的缓存区和第(k)个缓存单元模式的缓存区都是指的第一缓存区111。
S63:发送同步指令给图形服务器12。前述的S60-S63都是由图形客户端11完成的
S64:创建第二缓存区121。具体地,图形服务器12根据同步指令创建第二缓存区121,并通过图形客户端11的顶点数组指针与图形客户端11的第一缓存区111形成映射关系,从而确保了缓存的顶点数据的一致性。
在本实施例中,通过图形客户端11创建第一缓存区111,进行顶点数据缓存,同时发送同步指令至图形服务器12,以创建第二缓存区121,第一缓存区111与第二缓存区121通过顶点数组指针形成顶点数据的映射关系,如此可以对顶点数组类指令进行缓存优化,从而不需要对顶点数组类指令进行分解,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此确保了缓存的顶点数据的一致性,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。
图9是本发明第一实施例的GPU图形客户端的结构示意图。如图9所示,在第一实施例的GPU虚拟化实现方法的基础上进行描述,图形客户端11包括图形设备接口110、第一缓存区111、指令获取模块112、第一缓存模块113、查询模块114、发送模块115以及第一接收模块116。
在本实施例中,指令获取模块112用于截获顶点数组类指令。第一缓存模块113用于创建第一缓存区111,进行顶点数据缓存,并发送同步指令至图形服务器12以创建第二缓存区121,第二缓存区121与第一缓存区111形成顶点数据的映射关系,顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。查询模块114用于在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,即截获的顶点数据存在于本地数据中,则发送模块115将顶点数组类指令打包并发送至图形服务器12,以使得图形服务器12根据第二缓存区121的顶点数据和打包的顶点数组类指令渲染出图片,即对顶点数组类指令进行缓存优化,若不存在,则发送模块115分解顶点数组类指令,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化,并发送至图形服务器12,以使得图形服务器12根据分解的顶点数组类指令渲染出图片。渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。其中,本地数据为预存在图形客户端11的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器12。第一接收模块116用于接收图片并贴至图形设备接口110。图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。
进一步地,发送模块115还发送同步指令给图形服务器12以创建第二缓存区121,同步指令包括顶点数组指针,第二缓存区121通过顶点数组指针与第一缓存区111形成顶点数据的映射关系,如此可以对顶点数组类指令进行缓存优化,从而不需要对顶点数组类指令进行分解,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此确保了缓存的顶点数据的一致性,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
可选地,如果新增的顶点数据为历史数据,但缓存的第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则第一缓存模块113还用于创建临时缓存区,将新增的顶点数据拷贝到临时缓存区中。然后将顶点数据从临时缓存区整体拷贝至第一缓存区111。
在本实施例中,图片经图形服务器12进行压缩处理后生成压缩码流并发送给图形客户端11,第一接收模块116通过数据通道13接收压缩码流并进行解压,然后调用bitblt()接口将图片贴到图形设备接口110的3D应用程序的图形区域,通过图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。
图10是本发明第一实施例的GPU图形服务器的结构示意图。如图10所示,在第一实施例的GPU虚拟化实现方法的基础上进行描述,图形客户端12包括第二缓存区121、第二缓存模块122、第二接收模块123以及渲染模块124。
在本实施例中,第二缓存模块122用于创建第二缓存区121以进行顶点数据缓存,第二缓存区121与图形客户端11的第一缓存区111形成顶点数据的映射关系,顶点数据包括顶点数组指针和顶点数组长度。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。第二接收模块123用于根据顶点数组指针判断第二缓存区121是否缓存有对应的顶点数据,如果有,则接收图形客户端11发送的经打包的顶点数组类指令,并且渲染模块124根据第二缓存区121的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端11;如果没有,则第二接收模块123接收图形客户端11发送的经分解后的顶点数组类指令,并且渲染模块124根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端11。
可选地,第二接收模块123还通过数据通道13接收图形客户端11发送的同步指令,其中,同步指令包括顶点数组指针。第二缓存模块122根据同步指令创建第二缓存区121以进行顶点数据缓存,第二缓存区121通过顶点数组指针与图形客户端11的第一缓存区111形成顶点数据的映射关系,确保了缓存的顶点数据的一致性。并在顶点数据存在于本地数据中时,进行顶点数据的缓存优化,从而不需要对顶点数组类指令进行分解,这样即使仍有部分顶点数组类指令需进行分解,可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
在本实施例中,第二缓存区121缓存有顶点数组指针对应的顶点数据时,第二接收模块123接收图形客户端11通过数据通道13发送的顶点数组类指令,并根据顶点数组类指令自身的特点对其进行相应的解包处理,再将解包出来的顶点数组类指令发送给显卡14。第二缓存区121没有缓存顶点数组指针对应的顶点数据时,第二接收模块123接收图形客户端11发送的经分解后的顶点数组类指令,再将其发送给显卡14。显卡14执行顶点数组类指令并渲染出图片,将其保存于显存中。其中,渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。渲染模块124通过屏幕抓取将图片拷贝到内存中。由于图片比较大,渲染模块124对图片进行压缩处理,再将压缩码流通过传输通道13发送给图形客户端11,以便图形客户端11将压缩码流进行解压,并通过图形设备接口110将顶点数组类指令重定向至TC端15以执行顶点数组类指令并生成屏幕画面。
图11是本发明第一实施例的GPU中顶点数据缓存的装置的结构示意图。在图9和图10的基础上进行描述,如图11所示,顶点数据缓存的装置100包括:第一缓存模块113、第一缓存区111、发送模块115、第二缓存区121以及第二缓存模块122。
在本实施例中,第一缓存模块113用于创建第一缓存区111,进行顶点数据缓存,其中,顶点数据包括顶点数组指针和顶点数组长度。发送模块115用于发送同步指令至图形服务器12,其中,同步指令包括顶点数组指针。第二缓存模块122用于根据同步指令创建第二缓存区121,进行顶点数据缓存,第二缓存区121通过顶点数组指针与第一缓存区111形成顶点数据的映射关系。在本实施例中,第一缓存区111和第二缓存区121的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。
进一步地,第一缓存模块113以缓存单元模式为载体对顶点数组指针以及顶点数组长度的学习、预测和校正。其中,缓存单元模式包括指明顶点数组的首地址和每字节的长度,根据首地址的偏移量绘制几何单元。对顶点数组指针学习、预测和校正时,第一缓存模块113用于获取顶点数组类指令;用顶点数组指针作Hash查找;判断是否命中,如果是,则设置为当前的缓存数组指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;透传缓存数据指针。对顶点数组长度的学习、预测和校正进,第一缓存模块113用于获取画顶点指令;判断截获的顶点数据是否已做缓存,如果是,则判断截获的顶点缓存数据是否存在于本地数据中,如果是,则透传画顶点指针,如果否,则分解画顶点指针,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化;如果顶点数据未做缓存,则判断顶点数组长度是否需要更新,如果需要,则更新顶点数组长度,如果不需要,则分解画顶点指针,即使用传值类的画顶点指令。其中,本地数据为预存在图形客户端11的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器12。因此,如果截获的顶点数据不存在于本地数据中,或者截获的顶点数据未做缓存,则不能进行缓存优化,只能将画顶点指令分解,即使用传值类的画顶点指令。如果截获的顶点数据存在于本地数据中,即本地数据中存在一顶点数据与截获的顶点数据一致,则可以进行缓存优化,从而不需分解顶点数组类指令,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
在本实施例中,更新顶点数组长度时,第一缓存模块113首先创建临时缓存区,将新增的数据即时地拷贝到临时缓存区中,待上一个缓存单元模式遍历完时,临时缓存区就已经缓存了历史数据;创建上个模式的缓存区,在下一个缓存单元模式遍历之前将临时缓存区的顶点数据整体转移至上个模式的缓存区。
在本实施例中,通过第一缓存模块113创建第一缓存区111,进行顶点数据缓存,发送模块115发送同步指令至图形服务器12,第二缓存模块122根据同步指令创建第二缓存区121,进行顶点数据缓存;第二缓存模块122通过顶点数组指针与第一缓存区111形成顶点数据的映射关系,确保了缓存的顶点数据的一致性,并在截获的顶点数据存在于本地数据中时,进行顶点数据的缓存优化,从而不需要对顶点数组类指令进行分解,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,因此可以解决在图形服务器12使用直接透传的顶点数组类指令会产生错误的问题,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
图12是本发明第二实施例的GPU图形客户端的结构示意图。如图12所示,GPU图形客户端20包括处理器201、存储器202、接收器203、总线204以及发射器205,处理器201、存储器202、发射器205和接收器203通过总线204相连,以进行相互通信。
具体地,接收器203用于截获顶点数组指令。处理器201用于创建第一缓存区,存储器202对顶点数据进行缓存,发射器205发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系。顶点数据从顶点数组类指令中获取,包括顶点数组指针和顶点数组长度。在本实施例中,第一缓存区和第二缓存区的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。处理器201还用于在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则发射器205将顶点数组类指令打包并发送至图形服务器,处理器201根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,即对顶点数组类指令进行缓存优化,若不存在,则分解顶点数组类指令,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化,发射器205发送至图形服务器12,处理器201根据分解的顶点数组类指令渲染出图片。渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器。
在本实施例中,接收器203还用于接收图片并贴至图形设备接口。图形设备接口将顶点数组类指令重定向至TC端以执行顶点数组类指令并生成屏幕画面。如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则处理器201还创建临时缓存区,将新增的顶点数据拷贝到临时缓存区中,然后将顶点数据从临时缓存区拷贝至第一缓存区。
在本实施例中,发射器205发送同步指令给图形服务器以创建第二缓存区。同步指令包括顶点数组指针,第二缓存区通过顶点数组指针与第一缓存区形成顶点数据的映射关系,如此可以对顶点数组类指令进行缓存优化,从而不需要对顶点数组类指令进行分解,可以解决在图形服务器使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此确保了缓存的顶点数据的一致性,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
图13是本发明第二实施例的GPU图形服务器的结构示意图。如图13所示,GPU图形服务器30包括处理器301、存储器302、接收器303以及总线304,处理器301、存储器302和接收器303通过总线304相连,以进行相互通信。
具体地,处理器301用于创建第二缓存区。存储器202对顶点数据进行缓存,第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系。顶点数据包括顶点数组指针和顶点数组长度。在本实施例中,第一缓存区和第二缓存区的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。处理器301根据顶点数组指针判断第二缓存区是否缓存有对应的顶点数据,如果有,则接收器303接收图形客户端发送的经打包的顶点数组类指令,处理器301根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片以发送给图形客户端;如果没有,则接收器303接收图形客户端发送的经分解后的顶点数组类指令,处理器301根据经分解后的顶点数组类指令渲染出图片以发送给图形客户端。
在本实施例中,接收器303还通过数据通道接收图形客户端发送的同步指令,其中,同步指令包括顶点数组指针。处理器301根据同步指令创建第二缓存区以进行顶点数据缓存,第二缓存区通过顶点数组指针与图形客户端的第一缓存区形成顶点数据的映射关系,确保了缓存的顶点数据的一致性,并在截获的顶点数据存在于本地数据中时,进行顶点数据的缓存优化,从而不需要对顶点数组类指令进行分解,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,因此可以解决在图形服务器使用直接透传的顶点数组类指令会产生错误的问题,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
图14是本发明第二实施例的GPU虚拟化的实现系统的结构示意图。如图14所示,第二实施例的GPU虚拟化的实现系统40包括图形客户端41、图形服务器42、数据通道43、显卡44、TC端45,其中,图形客户端41包括图形设备接口410,数据通道43包括顶点数据缓存区431。图形客户端41与图形服务器42通过数据通道43连接,显卡44与图形服务器42连接,TC端45与图形客户端41的图形设备接口410连接。
在本实施例中,数据通道43为共享内存,图形客户端41和图形服务器42共用共享内存中的顶点数据缓存区431来实现顶点数据缓存。具体地,TC端45通过鼠标、键盘重定向将3D指令发送至图形客户端41的图形设备接口410,图形客户端41通过图形设备接口410的OpenglICD驱动可以截获到3D指令,3D指令包括顶点数组类指令。图形客户端41在顶点数据缓存区431进行顶点数据缓存,并通过数据通道43发送同步指令给图形服务器42;图形服务器42在顶点数据缓存区431进行顶点数据缓存,确保了缓存的顶点数据的一致性。在本实施例中,顶点数据缓存区431的创建最终是根据截获的顶点数组类指令来执行的,是一个持续的过程。图形客户端41在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器42,以使得图形服务器42根据顶点数据缓存区431的顶点数据和打包的顶点数组类指令渲染出图片,即对顶点数组类指令进行缓存优化,若不存在,则分解顶点数组类指令,即使用传值类的画顶点指令,并且将该顶点数据保存在Hashtable中以便下一次进行缓存优化,并发送至图形服务器42,以使得图形服务器42根据分解的顶点数组类指令渲染出图片。其中,本地数据为预存在图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于图形服务器42。具体地,本地数据中存在一顶点数据与截获的顶点数据一致,即截获的顶点数据存在于本地数据时,图形客户端41将顶点数组类指令打包并通过数据通道43发送至图形服务器42,图形服务器42解包顶点数组类指令,并发送给显卡44以渲染出图片;截获的顶点数据不存在于本地数据时,图形客户端41将分解后的顶点数组类指令通过数据通道43发送至图形服务器42,图形服务器42再发送给显卡44以渲染出图片。渲染出的图片可以但不限于三维,也可以是二维的图片,而且该图片可以是一幅或者多幅图片的组合,也可以是一幅完整图片的一部分。图形服务器42通过屏幕抓取将图片拷贝到内存中,并通过数据通道43发送给图形客户端41,图形客户端41接收图片并贴至图形设备接口410,图形设备接口410将顶点数组类指令重定向至TC端45以执行顶点数组类指令并生成屏幕画面。其中,顶点数据是从顶点数组类指令中获取的,包括顶点数组指针和顶点数组长度。在本实施例中,通过在图形客户端41和图形服务器42共用共享内存中的顶点数据缓存区431来实现顶点数据缓存,确保了缓存的顶点数据的一致性,并在截获的顶点数据存在于本地数据中时,进行顶点数据的缓存优化,从而不需要对顶点数组类指令进行分解,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,因此可以解决在图形服务器42使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,从而减少了传送所有指令所需要的时间,也减少了对带宽的占用,因此能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本;同时减少了缓存内存的使用,简化了维护图形客户端41与图形服务器42缓存一致性的复杂度。
综上所述,本发明通过图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,第二缓存区与第一缓存区形成顶点数据的映射关系;在本地数据中进行查询,若本地数据中存在一顶点数据与截获的顶点数据一致,则将顶点数组类指令打包并发送至图形服务器,以使得图形服务器根据第二缓存区的顶点数据和打包的顶点数组类指令渲染出图片,若不存在,则分解顶点数组类指令,并发送至图形服务器,以使得图形服务器根据分解的顶点数组类指令渲染出图片;第二缓存区与第一缓存区形成顶点数据的映射关系后,则不需要对顶点数组类指令进行分解,可以解决在图形服务器使用直接透传的顶点数组类指令会产生错误的问题,这样即使仍有部分顶点数组类指令需进行分解,但总的需传送的指令数目大为减少,能够大幅降低时延和传输通道的带宽,降低内存共享对CPU的消耗,提高VM密度,降低成本。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (26)
1.一种GPU虚拟化实现方法,其特征在于,所述方法包括:
图形客户端截获顶点数组类指令;
进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;
在本地数据中进行查询,若所述本地数据中存在一顶点数据与截获的所述顶点数据一致,则将所述顶点数组类指令打包并发送至所述图形服务器,以使得所述图形服务器根据所述第二缓存区的所述顶点数据和打包的所述顶点数组类指令渲染出图片,若不存在,则分解所述顶点数组类指令并发送至所述图形服务器,以使得所述图形服务器根据分解的所述顶点数组类指令渲染出图片,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述图形客户端通过数据通道接收所述图形服务器发送的图片并贴至图形设备接口;
通过所述图形设备接口将所述顶点数组类指令重定向至TC端以执行所述顶点数组类指令并生成屏幕画面。
3.根据权利要求1所述的方法,其特征在于,所述进行顶点数据缓存以创建第一缓存区包括:如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则
创建临时缓存区;
将所述新增的顶点数据拷贝到所述临时缓存区中;
将所述顶点数据从所述临时缓存区拷贝至所述第一缓存区。
4.根据权利要求1所述的方法,其特征在于,所述进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以建立第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系包括:
进行所述顶点数据缓存,并创建所述第一缓存区;
发送同步指令给所述图形服务器以创建第二缓存区,所述同步指令包括所述顶点数组指针,所述第二缓存区通过所述顶点数组指针与所述第一缓存区形成顶点数据的映射关系。
5.根据权利要求1所述的方法,其特征在于,所述第一缓存区位于所述图形客户端中。
6.根据权利要求1所述的方法,其特征在于,所述第一缓存区位于共享内存中。
7.一种GPU虚拟化实现方法,其特征在于,所述方法包括:
根据接收的同步指令创建第二缓存区以进行顶点数据缓存,所述第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,所述顶点数据包括顶点数组指针和顶点数组长度;
根据所述顶点数组指针判断所述第二缓存区是否缓存有对应的顶点数据,如果有,则接收所述图形客户端发送的经打包的顶点数组类指令,并根据所述第二缓存区的所述顶点数据和所述打包的顶点数组类指令渲染出图片以发送给所述图形客户端,如果没有,则接收所述图形客户端发送的经分解后的顶点数组类指令,并根据所述经分解后的顶点数组类指令渲染出图片以发送给所述图形客户端。
8.根据权利要求7所述的方法,其特征在于,所述接收同步指令并创建第二缓存区以进行顶点数据缓存,所述第二缓存区与图形客户端的第一缓存区形成所述顶点数据的映射关系包括:
接收所述图形客户端发送的同步指令,其中,所述同步指令包括顶点数组指针;
根据所述同步指令创建所述第二缓存区以进行顶点数据缓存,所述所述第二缓存区通过所述顶点数组指针与所述图形客户端的所述第一缓存区形成所述顶点数据的映射关系。
9.根据权利要求7所述的方法,其特征在于,所述第二缓存区位于所述图形服务器中。
10.根据权利要求7所述的方法,其特征在于,所述第二缓存区位于共享内存中。
11.一种GPU虚拟化中顶点数据缓存的方法,其特征在于,所述方法包括:
通过图形客户端创建第一缓存区,进行顶点数据缓存,其中,所述顶点数据包括顶点数组指针和顶点数组长度;
发送同步指令至图形服务器,其中,所述同步指令包括所述顶点数组指针;
通过所述图形服务器根据所述同步指令创建第二缓存区,进行顶点数据缓存,所述第二缓存区通过所述顶点数组指针与所述第一缓存区形成顶点数据的映射关系。
12.根据权利要求11所述的方法,其特征在于,所述进行顶点数据缓存是以缓存单元模式为载体进行学习、预测和校正,包括顶点数组指针以及顶点数组长度的学习、预测和校正。
13.根据权利要求12所述的方法,其特征在于,所述缓存单元模式包括:
指明所述顶点数组的首地址和每字节的长度;
根据所述首地址的偏移量绘制几何单元。
14.根据权利要求12所述的方法,其特征在于,所述顶点数组指针的学习、预测和校正包括:
获取所述顶点数组类指令;
用所述顶点数组指针作Hash查找;
判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;
透传所述缓存数据指针。
15.根据权利要求12所述的方法,其特征在于,所述顶点数组长度的学习、预测和校正包括:
获取所述画顶点指令;
判断所述顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传所述画顶点指针,如果否,则分解所述画顶点指针;如果所述顶点数据未做缓存,则判断所述顶点数组长度是否需要更新,如果需要,则更新所述顶点数组长度,如果不需要,则分解所述画顶点指针,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。
16.一种GPU图形客户端,其特征在于,所述图形客户端包括指令获取模块、第一缓存模块、查询模块以及发送模块,其中:
所述指令获取模块用于截获顶点数组类指令;
所述第一缓存模块用于进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;
所述查询模块用于在本地数据在进行查询,若所述本地数据中存在一顶点数据与截获的所述顶点数据一致,则所述发送模块将所述顶点数组类指令打包并发送至所述图形服务器,以使得所述图形服务器根据所述第二缓存区的所述顶点数据和打包的所述顶点数组类指令渲染出图片,若不存在,则所述发送模块分解所述顶点数组类指令并发送至所述图形服务器,以使得所述图形服务器根据分解的所述顶点数组类指令渲染出图片,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。
17.根据权利要求16所述的图形客户端,其特征在于,所述图形客户端还包括第一接收模块和图形设备接口,其中:
所述第一接收模块用于通过所述数据通道接收所述图片并贴至所述图形设备接口;
所述图形设备接口将所述顶点数组类指令重定向至TC端以执行所述顶点数组类指令并生成屏幕画面。
18.根据权利要求16所述的图形客户端,其特征在于,所述发送模块还发送同步指令给所述图形服务器,所述同步指令包括所述顶点数组指针,所述第一缓存区通过所述顶点数组指针与所述图形服务器的第二缓存区形成顶点数据的映射关系。
19.根据权利要求16所述的图形客户端,其特征在于,如果新增的顶点数据为历史数据,但缓存的所述第一缓存区已释放或者其顶点数组长度需要更新为更大的值,则所述第一缓存模块还用于:
创建临时缓存区;
将所述新增的顶点数据拷贝到所述临时缓存区中;
将所述顶点数据从所述临时缓存区拷贝至所述第一缓存区。
20.一种GPU图形服务器,其特征在于,所述图形服务器包括第二缓存模块、第二接收模块以及渲染模块,其中:
所述第二缓存模块用于根据接收的同步指令创建第二缓存区以进行顶点数据缓存,所述第二缓存区与图形客户端的第一缓存区形成顶点数据的映射关系,所述顶点数据包括顶点数组指针和顶点数组长度;
所述第二接收模块用于根据所述顶点数组指针判断所述第二缓存区是否缓存有对应的顶点数据,如果有,则接收所述图形客户端发送的经打包的顶点数组类指令,并且所述渲染模块根据所述第二缓存区的所述顶点数据和所述打包的顶点数组类指令渲染出图片以发送给所述图形客户端;如果没有,则所述第二接收模块接收所述图形客户端发送的经分解后的顶点数组类指令,并且所述渲染模块根据所述经分解后的顶点数组类指令渲染出图片以发送给所述图形客户端。
21.根据权利要求20所述的图形服务器,其特征在于,所述第二接收模块还接收所述图形客户端发送的同步指令,其中,所述同步指令包括顶点数组指针;
所述第二缓存模块根据所述同步指令创建所述第二缓存区以进行顶点数据缓存,所述第二缓存区通过所述顶点数组指针与所述图形客户端的第一缓存区形成所述顶点数据的映射关系。
22.一种GPU虚拟化中顶点数据缓存的装置,其特征在于,所述装置包括:
第一缓存模块,用于在所述图形客户端创建第一缓存区,进行顶点数据缓存,其中,所述顶点数据包括顶点数组指针和顶点数组长度;
发送模块,用于发送同步指令至图形服务器,其中,所述同步指令包括所述顶点数组指针;
第二缓存模块,用于通过图形服务器根据所述同步指令创建第二缓存区,进行顶点数据缓存,所述第二缓存区通过所述顶点数组指针与所述第一缓存区形成顶点数据的映射关系。
23.根据权利要求22所述的装置,其特征在于,所述第一缓存模块以缓存单元模式为载体对顶点数组指针以及顶点数组长度的学习、预测和校正。
24.根据权利要求23所述的装置,其特征在于,所述缓存单元模式包括指明所述顶点数组的首地址和每字节的长度;根据所述首地址的偏移量绘制几何单元。
25.根据权利要求23所述的装置,其特征在于,对顶点数组指针学习、预测和校正时,所述第一缓存模块用于:
获取所述顶点数组类指令;
用所述顶点数组指针作Hash查找;
判断是否命中,如果是,则设置为当前的缓存数据指针,供画顶点指针使用;如果否,将顶点数组指针及相关特征信息添加到Hashtable中;
透传所述缓存数据指针。
26.根据权利要求23所述的装置,其特征在于,对顶点数组长度的学习、预测和校正进,所述第一缓存模块用于:
获取所述画顶点指令;
判断所述顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传所述画顶点指针,如果否,则分解所述画顶点指针;如果所述顶点数据未做缓存,则判断所述顶点数组长度是否需要更新,如果需要,则更新所述顶点数组长度,如果不需要,则分解所述画顶点指针,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310554845.0A CN103559078B (zh) | 2013-11-08 | 2013-11-08 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
PCT/CN2014/079557 WO2015067043A1 (zh) | 2013-11-08 | 2014-06-10 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310554845.0A CN103559078B (zh) | 2013-11-08 | 2013-11-08 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559078A true CN103559078A (zh) | 2014-02-05 |
CN103559078B CN103559078B (zh) | 2017-04-26 |
Family
ID=50013331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310554845.0A Active CN103559078B (zh) | 2013-11-08 | 2013-11-08 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103559078B (zh) |
WO (1) | WO2015067043A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015067043A1 (zh) * | 2013-11-08 | 2015-05-14 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
WO2015154226A1 (zh) * | 2014-04-08 | 2015-10-15 | 华为技术有限公司 | 一种虚拟化环境中的数据通信的方法、装置及处理器 |
CN105139356A (zh) * | 2015-08-25 | 2015-12-09 | 北京锤子数码科技有限公司 | 一种图像数据的毛玻璃效果处理方法和装置 |
CN108346126A (zh) * | 2017-01-24 | 2018-07-31 | 深圳博十强志科技有限公司 | 基于内存拷贝方式绘制手机图片的方法及装置 |
CN108415854A (zh) * | 2018-02-11 | 2018-08-17 | 中国神华能源股份有限公司 | 基于共享缓存的数据采集系统及方法 |
CN109509139A (zh) * | 2017-09-14 | 2019-03-22 | 龙芯中科技术有限公司 | 顶点数据处理方法、装置及设备 |
CN110580674A (zh) * | 2019-07-24 | 2019-12-17 | 西安万像电子科技有限公司 | 信息处理方法、装置及系统 |
CN111309649A (zh) * | 2020-02-11 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 一种数据传输和任务处理方法、装置及设备 |
CN112669428A (zh) * | 2021-01-06 | 2021-04-16 | 南京亚派软件技术有限公司 | 一种基于服务器和客户端协作的bim模型渲染方法 |
CN116230006A (zh) * | 2023-05-09 | 2023-06-06 | 成都力比科技有限公司 | 一种基于gpu的音效可视化方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11012694B2 (en) * | 2018-05-01 | 2021-05-18 | Nvidia Corporation | Dynamically shifting video rendering tasks between a server and a client |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430841A (en) * | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
CN101551761A (zh) * | 2009-04-30 | 2009-10-07 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器中共享流内存的方法 |
CN102394935A (zh) * | 2011-11-10 | 2012-03-28 | 方正国际软件有限公司 | 无线共享存储系统及其无线共享存储方法 |
CN102819819A (zh) * | 2012-08-14 | 2012-12-12 | 长沙景嘉微电子股份有限公司 | Gpu中一种快速读取顶点的实现方法 |
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559078B (zh) * | 2013-11-08 | 2017-04-26 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
-
2013
- 2013-11-08 CN CN201310554845.0A patent/CN103559078B/zh active Active
-
2014
- 2014-06-10 WO PCT/CN2014/079557 patent/WO2015067043A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430841A (en) * | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
CN101551761A (zh) * | 2009-04-30 | 2009-10-07 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器中共享流内存的方法 |
CN102394935A (zh) * | 2011-11-10 | 2012-03-28 | 方正国际软件有限公司 | 无线共享存储系统及其无线共享存储方法 |
CN102819819A (zh) * | 2012-08-14 | 2012-12-12 | 长沙景嘉微电子股份有限公司 | Gpu中一种快速读取顶点的实现方法 |
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015067043A1 (zh) * | 2013-11-08 | 2015-05-14 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
US10733687B2 (en) | 2014-04-08 | 2020-08-04 | Huawei Technologies Co., Ltd. | Method and apparatus for data communication in virtualized environment, and processor |
WO2015154226A1 (zh) * | 2014-04-08 | 2015-10-15 | 华为技术有限公司 | 一种虚拟化环境中的数据通信的方法、装置及处理器 |
CN105164636A (zh) * | 2014-04-08 | 2015-12-16 | 华为技术有限公司 | 一种虚拟化环境中的数据通信的方法、装置及处理器 |
CN105164636B (zh) * | 2014-04-08 | 2018-02-13 | 华为技术有限公司 | 一种虚拟化环境中的数据通信的方法、装置及处理器 |
CN105139356A (zh) * | 2015-08-25 | 2015-12-09 | 北京锤子数码科技有限公司 | 一种图像数据的毛玻璃效果处理方法和装置 |
CN105139356B (zh) * | 2015-08-25 | 2018-06-22 | 北京锤子数码科技有限公司 | 一种图像数据的毛玻璃效果处理方法和装置 |
CN108346126A (zh) * | 2017-01-24 | 2018-07-31 | 深圳博十强志科技有限公司 | 基于内存拷贝方式绘制手机图片的方法及装置 |
CN108346126B (zh) * | 2017-01-24 | 2023-01-06 | 深圳博十强志科技有限公司 | 基于内存拷贝方式绘制手机图片的方法及装置 |
CN109509139A (zh) * | 2017-09-14 | 2019-03-22 | 龙芯中科技术有限公司 | 顶点数据处理方法、装置及设备 |
CN109509139B (zh) * | 2017-09-14 | 2023-06-27 | 龙芯中科技术股份有限公司 | 顶点数据处理方法、装置及设备 |
CN108415854A (zh) * | 2018-02-11 | 2018-08-17 | 中国神华能源股份有限公司 | 基于共享缓存的数据采集系统及方法 |
CN110580674A (zh) * | 2019-07-24 | 2019-12-17 | 西安万像电子科技有限公司 | 信息处理方法、装置及系统 |
CN110580674B (zh) * | 2019-07-24 | 2024-01-16 | 西安万像电子科技有限公司 | 信息处理方法、装置及系统 |
CN111309649A (zh) * | 2020-02-11 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 一种数据传输和任务处理方法、装置及设备 |
CN112669428A (zh) * | 2021-01-06 | 2021-04-16 | 南京亚派软件技术有限公司 | 一种基于服务器和客户端协作的bim模型渲染方法 |
CN116230006A (zh) * | 2023-05-09 | 2023-06-06 | 成都力比科技有限公司 | 一种基于gpu的音效可视化方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015067043A9 (zh) | 2015-09-03 |
CN103559078B (zh) | 2017-04-26 |
WO2015067043A1 (zh) | 2015-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559078A (zh) | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 | |
US11314835B2 (en) | Web browser remoting across a network using draw commands | |
US10579829B1 (en) | Application remoting using network vector rendering | |
JP5027899B2 (ja) | 遠隔の表示部へ伝送するためにフレームバッファをコピーする方法及びシステム | |
JP5060489B2 (ja) | マルチユーザ端末サービス促進装置 | |
US8112513B2 (en) | Multi-user display proxy server | |
US9026615B1 (en) | Method and apparatus for caching image data transmitted over a lossy network | |
US10555010B2 (en) | Network-enabled graphics processing module | |
US20140285502A1 (en) | Gpu and encoding apparatus for virtual machine environments | |
US20090037441A1 (en) | Tiled packaging of vector image data | |
CN105917382B (zh) | 用于交互式图形流传输的方法和系统 | |
US20140111528A1 (en) | Server-Based Fast Remote Display on Client Devices | |
EP3964949B1 (en) | Graphics processing method and apparatus | |
CN109302637A (zh) | 图像处理方法、图像处理装置和电子设备 | |
CN105204848A (zh) | 使用二进制程序进行功能固化并提供服务的方法及系统 | |
US10733689B2 (en) | Data processing | |
CN113778593A (zh) | 云桌面控制方法、装置、电子设备、存储介质及程序产品 | |
CN112004147A (zh) | 一种视频渲染方法、装置、电子设备及存储介质 | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
US20040017382A1 (en) | Hardware acceleration of display data clipping | |
Heo et al. | FleXR: A System Enabling Flexibly Distributed Extended Reality | |
US7002599B2 (en) | Method and apparatus for hardware acceleration of clipping and graphical fill in display systems | |
US20210154576A1 (en) | Vector graphics-based live streaming of video games | |
CN117609646A (zh) | 场景渲染方法、装置、电子设备及存储介质 | |
CN115437747A (zh) | 虚拟机图像渲染方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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: 20220316 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |