【技术实现步骤摘要】
GPU虚拟化实现方法以及顶点数据缓存方法和相关装置
本专利技术涉及虚拟化
,特别是涉及一种GPU虚拟化实现方法以及顶点数据缓存方法和相关装置。
技术介绍
GPU(GraphicProcessingUnit,图像处理器单元)主要是进行浮点运算和并行计算的,常用于专业的图形运算。GPU虚拟化技术就是要让运行在数据中心服务器上的虚拟化实例共享同一块或多块GPU处理器进行图形运算。从目前已经实现的产品来看,基于DirectX3d的虚拟化解决方案已经比较成熟,无论是性能、体验等方面都已经接近于物理机的水平;而在更广泛应用的高清制图领域,绝大部分3D软件更多的是基于Opengl(OpenGraphicsLibrary,开放的图形程序接口)规范来实现的,这一领域才是企业最迫切希望解决的应用难题。基于Opengl指令的GPU虚拟化技术的实现目前现存的有开源代码Chromium,Chromium本质上是实现了一种跨网络远程渲染过程。在Chromium架构中,顶点数组允许Opengl驱动程序直接从应用程序的内存中获取顶点、颜色、法线向量等属性。顶点数组的使用能最小化函数调用的开销,减少必须打包到显示驱动中命令缓存区的数据量。但是,在远程渲染过程中,从应用层截获到的顶点数组指针是在图形客户端分配出来的,若直接将顶点数组指针透传到图形服务器进行使用会产生错误。Chromium将一个glArrayElement指令调用分解为等价的glVertex3f、glNormal3f、glColor3f或glTexCoord2f调用,即把glArrayElement的传指针类参数指令转化 ...
【技术保护点】
一种GPU虚拟化实现方法,其特征在于,所述方法包括:图形客户端截获顶点数组类指令;进行顶点数据缓存以创建第一缓存区,发送同步指令至图形服务器以创建第二缓存区,所述第二缓存区与所述第一缓存区形成顶点数据的映射关系,所述顶点数据从所述顶点数组类指令中获取,包括顶点数组指针和顶点数组长度;在本地数据中进行查询,若所述本地数据中存在一顶点数据与截获的所述顶点数据一致,则将所述顶点数组类指令打包并发送至所述图形服务器,以使得所述图形服务器根据所述第二缓存区的所述顶点数据和打包的所述顶点数组类指令渲染出图片,若不存在,则分解所述顶点数组类指令并发送至所述图形服务器,以使得所述图形服务器根据分解的所述顶点数组类指令渲染出图片,其中,所述本地数据为预存在所述图形客户端的顶点数据,该顶点数据不需分解即可发送并使用于所述图形服务器。
【技术特征摘要】
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所述的方法,其特征在于,所述顶点数组长度的学习、预测和校正包括:获取画顶点指令;判断所述顶点数据是否已做缓存,如果是,则判断顶点缓存数据是否存在于本地数据中,如果是,则透传画顶点指针,如果否,则分解所述画顶点指针;如果所述顶点数据未做缓存,则判断所述顶点数组长度是否需要更新,如果需要,则更新所述顶点数组长度,如果不需要,则分解所述画顶点指...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。