多个图形卡的管理的制作方法

文档序号:11584384阅读:357来源:国知局
多个图形卡的管理的制造方法与工艺

本发明涉及计算机程序和系统领域,并且更具体地涉及用于管理多个图形卡的方法、系统和程序。



背景技术:

用于渲染三维(3d)场景的计算机图形技术目的在于在诸如计算机屏幕、电视、投影仪等显示设备上绘制3d场景。渲染3d场景也被称为3d渲染。

用于3d渲染的计算机图形技术依赖于彼此交互的硬件和软件部件,并且这些部件形成专用于3d渲染的架构。该架构的主要硬件部件是图形卡(gc),图形卡是被设计为使得一些类型的计算更快的加速器。gc专门用于图形计算,诸如将三角形转换成像素。gc包括一个或多个图形处理单元(gpu);gpu是执行gc的图形计算的芯片。gc可以连接到显示3d渲染的结果的一个或若干显示设备。通过图形库(gl)将gc和gpu的指令发送给监视器,所述图形库是被设计为帮助渲染计算机图形的计算机程序库。gl由托管gc的计算机的中央处理单元(cpu)执行(或运行)。两个最著名的gl是在实践中,gl不是由硬件制造商而是由第三方写入的,第三方将根据由硬件制造商提供的硬件规范来开发gl。渲染引擎(re)是将3d场景作为输入并且使用一个或多个gc(在多图形卡渲染的情况下)将其绘制到屏幕的框架。3d场景由使用re框架的应用程序创建。re将由应用程序提供的信息转化成图形资源(gr)。gr是由gl供给的对象,在gr上可以执行诸如缓冲、贴图等操作。图形驱动器(gd)是提供接口以允许操作系统(os)与gc之间的通信的计算机程序。在实践中,gd由gc制造商提供。

多gc渲染是应用程序使用插入在同一主板上的若干gc来渲染场景的能力。尽管多gc原理是最近的,但只有少数应用程序使用它,因为它涉及re框架中的很多复杂性。

有两种常见的技术来实现多图形卡渲染。两者都依赖于图形驱动器工作而不是依赖于渲染引擎框架。第一个技术使用由nvidiatm开发的slitm或由amdtm开发的crossfiretm。基本上,当应用程序的re正在渲染一个帧时,re使用gl,好像计算机内部只有一个gc一样。re不知道有若干gc。gd接收命令并将其传播到gc。这在图1上被图示,图1示出具有两个gc的计算机的示例,其中一个gc渲染屏幕的上部分,并且第二gc渲染底部分。re从应用程序接收命令,该命令被转化成由gl接收的gr(例如,缓冲、贴图等),gl又为一个gc发送命令。管理两个卡(gc1,gc2)的gd使用slitm/crossfiretm技术为两个gc创建命令,以使每个gc(gc1的gpu1,gc2的gpu2)的每个gpu都知道要处理什么信息。

第二个技术基于第一个,并且被称为mosaic模式。mosaic模式描述以较高分辨率、使用显示驱动器来渲染以将结果传播到多个屏幕的能力。mosaic模式与上述第一个技术的组合为每个gc提供处理单独的显示的能力。

这第一个和第二个技术主要用于游戏应用程序中以提高性能或用于飞行模拟器中来以合理性能输出到多于一个显示器。

除了这两个技术之外,另一个技术通过由gl暴露渲染特征来提供具体的多gc。然而,该技术是实验性的,并且未被硬件和软件制造商利用。

多gc渲染的这些技术受若干缺点的影响。第一个是它们受限于具体场景:mosaic模式用于多屏渲染,而slitm/crossfiretm用于视频游戏。实际上,这些技术依赖于向gc分派命令的gd能力;然而,gd不是每次都知道用于执行分派所需的所有信息,使得这些解决方案适用于应用程序开发者所保留的少数场景。例如,在未保留场景中,仅仅使用一个gc;应用程序不能受益于其它gc的计算资源。

另一个限制是这些技术限制于经渲染的3d场景上的一个视点。因此,不可能利用gpu的计算资源来并行计算若干视点,而利用gpu的计算资源来并行计算若干视点在视点改变时将改善3d场景的显示速度。

进一步的限制是不可能向特定gc寻址特定命令,并且不可能将该特定命令暴露给re。如上所解释的,re不知道有若干gc。

在该背景下,仍然需要对多个gc的改进的管理。值得注意的是,所述管理应该允许选择在渲染期间占用的一个或多个gc。



技术实现要素:

因此提供一种用于修改用于渲染场景的多个图形卡的计算机实现的方法。图形卡包括一个或多个图形处理单元。该方法包括:提供已经被加载在渲染引擎中的场景,该场景包括将用于渲染场景的视图的至少一个图形数据;修改用于至少一个图形数据的图形资源的抽象图形资源,该抽象图形资源存储用于每个图形卡的图形资源的标识符,这是通过为每个新添加的图形卡添加所述图形资源的新标识符实现的;在每个新添加的图形卡上传送已经存储在图形卡之一上的所述至少一个图形数据。

该方法可以包括以下中的一个或多个:

-在每个新添加的图形卡上传送已经存储在图形卡之一上的所述至少一个图形数据包括:选择图形卡中的存储所述至少一个图形数据的图形卡;在选择的图形卡的gpu上检索所述至少一个图形数据的数据;并将从gpu获得的数据复制到每个新添加的图形卡;

-渲染引擎包括至少两个逻辑层,上层向应用程序提供对渲染引擎的访问,并且下层向渲染引擎提供对图形库的访问,并且其中抽象图形资源的修改由在上层和最低层之间包括的抽象层执行;

-传送进一步包括:在选择图形卡之一之后:由图形库请求所选择的图形卡的gpu上的数据;并且其中作为图形库的请求的结果,在所选择的图形卡的gpu上检索所述至少一个图形数据的数据;

-在抽象图形资源的修改之前:由下层在图形库上访问每个新添加的图形卡的标识符;并向抽象层提供每个新添加的图形卡的标识符;

-修改的抽象图形资源存储具有提供的(多个)标识符的图形资源的标识符;

-修改抽象图形资源的步骤进一步包括修改存储抽象图形资源的表;并且其中抽象图形资源的修改包括向渲染引擎提供对存储将被修改的抽象图形资源的表的访问。

进一步提供了包括用于执行上述内容的指令的渲染引擎计算机程序。

进一步提供了一种具有记录在其上的渲染引擎计算机程序的计算机可读存储介质。

进一步提供了一种包括耦合到存储器的处理电路的系统,存储器具有记录在其上的渲染引擎计算机程序。

附图说明

现在将通过非限制性示例并参考附图来描述本发明的实施例,在附图中:

-图1示出用于执行多gc显示的现有技术方法的流程图;

-图2示出本发明的示例的流程图;

-图3示出用于处理抽象图形资源的表的创建的示例;

-图4示出创建抽象图形资源的示例;

-图5示出用于抽象图形资源的管理的表的示例;

-图6示出在图形数据上执行的操作的示例;以及

-图7示出计算机系统的示例。

具体实施方式

参考图2的流程图,提出一种用于管理用于渲染场景的多个图形卡(gc)的计算机实现的方法。gc可以包括一个或多个图形处理单元(gpu)。该方法包括提供已经被加载在渲染引擎中的场景。该场景可以是三维(3d)场景。该场景包括用于渲染场景的视图的一个或多个图形数据。该方法进一步包括修改用于至少一个图形数据的抽象图形资源。抽象图形资源存储用于在3d场景的渲染中占用的每个图形卡的3d场景的给定图形资源的标识符。通过为每个新添加的图形卡添加图形资源的新标识符,执行抽象图形资源的修改。该方法还包括在每个新添加的图形卡上传送已经存储在图形卡之一上的所述一个或多个图形数据。

这种方法在使用当前图形库(gl)的同时改善对多个图形卡(gc)的管理。显著的是,本发明允许在应用程序正在运行时添加一个或多个其它图形卡。例如,如果应用程序从两个图形卡上的两个不同的视点绘制树,树的图形资源需要在这两个图形卡上。在第一个图形卡上,缓冲器将具有资源名称n1,而在第二个中具有资源名称n2。这引入很多复杂性,因为渲染引擎的每个部分都必须处理这种复杂性,并复制所有渲染命令以处理两个图形卡。现在,选取具有六个其它待渲染的视点的相同示例,其变得非常不易处理(i)为单个对象“树”管理六个资源名称,和(ii)添加参与渲染的六个其它图形卡。本发明为每个图形资源使用抽象图形资源,使得渲染引擎仅仅操纵图形数据的抽象图形资源,而不是操纵资源名称。因此,假设渲染引擎被给予对抽象图形资源的访问权,(例如,向渲染引擎请求具体显示的应用程序的)每个内部命令通过由其匹配的抽象句柄替换图形卡的具体资源名称来修改。渲染引擎不再处理上述复杂性,并且不再需要复制其接收的所有渲染命令。结果,添加新的图形卡并从一个图形卡切换到多个图形卡变得可行。下文中将讨论额外的优点。

该方法是计算机实现的。这意味着该方法的步骤(或者基本上所有步骤)由至少一个计算机或相似的任何系统执行。因而,该方法的步骤可能由计算机完全自动或半自动地执行。在示例中,可以通过用户-计算机交互来执行该方法的步骤中的至少一些的触发。所需的用户-计算机交互的级别可以取决于预见的自动化的水平,并且与实现用户的愿望的需要平衡。在示例中,该级别可以是用户定义的和/或预定义的。

该方法的计算机实现方式的典型示例是用适于该目的的系统来执行该方法。该系统可以包括耦合到存储器的处理器、以及多个图形卡。渲染引擎和表示场景的数据可以被存储在存储器上,并且渲染引擎可以在cpu上运行。更一般地,存储器可以具有在其上记录的计算机程序,包括用于执行该方法的指令。存储器还可以存储数据库。存储器是适于这样的存储的任何硬件,可能包括若干物理不同的部件(例如,一个用于程序,并且可能一个用于数据库)。“数据库”意味着被组织用于搜索和检索的数据(即信息)的任何集合(例如,例如基于预定的结构化语言的关系数据库,例如sql)。当存储在存储器上时,数据库允许计算机进行快速搜索和检索。数据库实际上被结构化,以便于结合各种数据处理操作的数据的存储、检索、修改和删除。数据库可以由可以被分解成记录的文件或文件组组成,记录中的每一个由一个或多个字段组成。字段是数据存储的基本单位。用户可以主要通过查询来检索数据。使用关键字和排序命令,用户可以快速地搜索、重新排列、分组和选择许多记录中的字段,以根据正在使用的数据库管理系统的规则来检索或创建关于数据的特定聚合的报告。

该方法操纵图形数据,例如图形数据可以是建模对象。建模对象可以由不同种类的数据定义,例如cad对象、plm对象、pdm对象、cae对象、cam对象、cad数据、plm数据、pdm数据、cam数据、cae数据。图形数据是用于表示建模对象的任何数据。

例如,在通过使用cad系统获得的3d场景的上下文中,建模对象典型地可以是3d建模对象,例如,表示诸如零件或零件的组件的产品,或者可能是产品的组件。“3d建模对象”意味着由允许其3d表示的数据来建模的任何对象。3d表示允许从所有角度查看零件。例如,当被3d表示时,3d建模对象可以被处理并围绕其任何轴或围绕上面显示该表示的屏幕中的任何轴旋转。这明显排除未被3d建模的2d图标。3d表示的显示便于设计(即,增大设计者在统计上完成他们的任务的速度)。这加速了工业中的制造过程,因为产品的设计是制造过程的部分。3d建模对象可以表示在完成其虚拟设计之后将在真实世界中制造的产品的几何结构,完成虚拟设计利用例如cad软件解决方案或cad系统,3d建模对象例如是(例如机械)零件或零件的组件,或者更一般地是任何刚性体部件(例如移动机构)。cad软件解决方案允许在各种且无限的工业领域中设计产品,包括:航空航天、建筑、结构、消费品、高科技设备、工业装置、运输、海洋和/或海洋石油/天然气生产或运输。由该方法设计的3d建模对象因而可以表示工业产品,其可以是任何机械零件,例如陆地交通工具(例如包括汽车和轻型卡车装置、赛车、摩托车、卡车和汽车装置、卡车和公共汽车、火车)的零件、空中交通工具(例如包括机身装置、航空航天装置、推进装置、国防产品、航空装置、空间装置)的零件、海洋交通工具(例如包括海军装置、商用船只、海上装置、游艇和工作船、海洋装置)的零件、一般机械零件(例如包括工业制造机械、重型移动机械或装置、安装装置、工业装置产品、金属制品、轮胎制品)、机电或电子零件(例如包括消费电子产品、安全和/或控制和/或仪器产品、计算和通信装置、半导体、医疗设备和装置)、消费品(例如包括家具、家用和花园产品、休闲用品、时尚产品、硬质商品零售商产品、软质商品零售商产品)、包装(例如包括食品和饮料及烟草、美容和个人护理、家务产品包装)。

plm另外意味着适于对表示物理制品(或待制造的产品)的建模对象的管理的任何系统。在plm系统中,建模对象因而由适合于物理对象的制造的数据来定义。这些典型地可以是尺寸值和/或公差值。为了正确地制造对象,实际上最好具有这样的值。

cam另外意味着适于管理产品的制造数据的任何解决方案、硬件的软件。制造数据一般包括与制造的产品、制造过程和所需的资源相关的数据。cam解决方案用于计划和优化产品的整个制造过程。例如,其可以给cam用户提供可以在制造过程的具体步骤中使用的关于可行性、制造过程的持续时间或诸如具体机器人的资源的数量的信息;并且因而允许关于管理或所需投资的决定。cam是在cad过程和潜在cae过程之后的后续过程。这样的cam解决方案由商标下的dassaultsystèmes提供。

cae另外意味着适于对建模对象的物理行为的分析的任何解决方案、硬件的软件。公知且广泛使用的cae技术是有限元方法(fem),其典型地包含将建模对象划分成可以通过方程式计算和模拟其物理行为的元素。这样的cae解决方案由商标下的dassaultsystèmes提供。另一个成长的cae技术包含对由来自不同物理领域的多个分量组成而无需cad几何结构数据的复杂系统的建模和分析。cae解决方案允许仿真,并且因而允许对制造的产品的优化、改进和验证。这样的cae解决方案由商标下的dassaultsystèmes提供。

pdm代表产品数据管理。pdm解决方案意味着适于管理与特定产品相关的所有类型的数据的任何解决方案、硬件的软件。pdm解决方案可以由包含在产品的生命周期中的所有参与者使用:主要是工程师,但也包括项目经理、财务人员、销售人员和购买者。pdm解决方案一般基于面向产品的数据库。它允许参与者共享关于其产品的一致数据,并且因此防止参与者使用发散数据。这样的pdm解决方案由商标下的dassaultsystèmes提供。

图7示出系统的示例;该系统是计算机系统,例如用户的工作站。

示例的系统包括连接到内部通信总线1000的中央处理单元(cpu)1010、也连接到总线的随机存取存储器(ram)1070。系统进一步提供有与连接到总线的视频随机存取存储器1100相关联的图形处理单元(gpu)1110。视频ram1100在本领域中也被称为帧缓冲器。大容量存储设备控制器1020管理对大容量存储器设备(诸如硬盘驱动器1030)的访问。适合于有形地体现计算机程序指令和数据的大容量存储器设备包括所有形式的非易失性存储器,例如包括:半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘和可移除盘;磁光盘;以及cd-rom盘1040。任何前述内容可以由专门设计的asic(专用集成电路)补充或并入其中。网络适配器1050管理对网络1060的访问。系统还可以包括触觉设备1090,例如光标控制设备、键盘等。在系统中使用光标控制设备以允许用户将光标选择性地定位在显示器1080上的任何期望位置。另外,光标控制设备允许用户选择各种命令并输入控制信号。光标控制设备包括用于向系统输入控制信号的许多信号生成设备。典型地,光标控制设备可以是鼠标、正用于生成信号的鼠标的按钮。替代地或另外,系统可以包括敏感垫和/或敏感屏幕。

计算机程序可以包括可由计算机(例如图7的系统)执行的指令。计算机程序的指令使以上系统执行该方法。程序可以是可记录在任何数据存储介质上,包括系统的存储器。程序例如可以在数字电子电路中、或在计算机硬件、固件、软件中或者在它们的组合中实现。程序可以被实现为装置,例如有形地体现在用于由可编程处理器执行的机器可读存储设备中的产品。方法步骤可以由可编程处理器执行,可编程处理器执行指令的程序以通过对输入数据进行操作并生成输出来执行方法的功能。处理器因而可以是可编程的并且被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向数据存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。应用程序可以以高级过程或面向对象的编程语言、或者如果期望的话以汇编或机器语言来实现。在任何情况下,语言可以是编译或解释语言。程序可以是完全安装程序或更新程序。程序在系统上的应用在任何情况下导致用于执行该方法的指令。

返回参考图2的流程图,图2讨论根据本发明的用于管理多个图形卡的计算机实现的方法的示例。

在步骤s200处,提供三维(3d)场景;3d场景被加载在渲染引擎(re)中。3d场景包括将用于渲染3d场景的视图的至少一个图形数据。渲染引擎是在应用程序请求时生成待显示的图像的框架。例如,cad系统的cad应用程序向渲染引擎提供3d建模对象的3d场景作为输入,并且渲染引擎使用cad系统的一个或多个图形卡将3d场景绘制到屏幕。该框架被实现为软件部件,该软件部件采用应用程序请求显示的数据作为输入,并且输出可以显示的图像。

典型的渲染引擎包含用于隐藏渲染引擎的实现方式细节的若干逻辑层代码,如本领域中已知的。每个层提供用于与其它层、系统的硬件部件或由系统执行的应用程序通信的一组功能和接口。逻辑层的数量可以变化。上层n依赖于层n-1,等等。层n-1比层n更靠近硬件。

在发明的示例中,渲染引擎包括至少三个逻辑层;即上层、下层和抽象层。上层目的在于向应用程序(例如,cad应用程序)提供对渲染引擎的访问,例如,上层包括诸如api的接口。上层可以由应用程序本身访问以提供3d场景。下层向渲染引擎提供对图形库的访问,图形库是被设计成帮助将计算机图形渲染到显示器的计算机程序库,如本领域中已知的。抽象层在上层和下层之间,并且目的在于管理创建的抽象图形资源。仅仅最低层有权访问图形资源的资源名称,并且仅仅上层处理(多个)抽象图形资源。

渲染引擎典型地是被称为渲染引擎计算机程序的计算机程序。因此当执行方法的步骤时执行渲染引擎。

在渲染引擎中加载3d场景意味着表示3d场景的数据(例如,文件)被提供给渲染引擎,也就是说,渲染引擎可以访问数据并在其上执行计算。表现3d场景意味着在其中放置至少一个3d模型的3d空间。对于系统立场,场景是包括将用于渲染3d场景的视图的至少一个图形数据的文件。

现在参考图3,现在讨论抽象图形资源的创建。

一旦已经在渲染引擎中加载了3d场景(s300),就为在步骤s300处加载的3d场景的至少一个图形数据创建抽象图形资源(s310)。创建可由先前讨论的抽象层执行。抽象图形资源存储图形卡中的至少一个的图形资源的标识符。图形资源是可由图形卡显示的数据:它由图形库根据先前加载的图形数据计算而来。如本领域中已知的那样执行图形数据到图形资源的变换。图形数据典型地是存储将显示的几何结构的二进制资产,并且其可以进一步包括用于描述该几何结构(例如纹理、缓冲、照明、阴影信息、视点等等)的可选参数。从图形库的立场,图形资源可以是但不限于几何结构、缓冲器、纹理、帧缓冲器、采样器、着色器、视点等等。该场景包括将用于渲染场景的视图的至少一个图形数据,要理解:典型的场景一般包括数千个图形数据。

从而,步骤s310包括针对系统的每个图形卡执行对(加载的场景的图形数据的)相同图形资源的识别,并且这组识别的图形资源本身用充当所述图形资源的唯一标识符的抽象图形资源来识别。

步骤s310处创建的抽象图形资源存储系统的每个图形卡上的图形资源的唯一标识符。在实践中,抽象图形资源可以进一步存储用于系统的每个图形卡的标识符,一个标识符用于一个图形卡。因此,抽象图形资源处理图形资源的标识符连同在其上加载图形资源的图形卡的标识符。标识符可以是但不限于数字、字母数字字符等等。例如,每个图形卡可以被限定为被实现为整数的密钥:其数值对于图形卡1是1,对于图形卡2是2,对于图形卡n是n,等等。

在查询图形库上的渲染引擎时获得图形资源的标识符。在示例中,渲染引擎的下层访问已经创建了图形资源的图形库,并且图形库在系统的图形卡之一上提供图形资源的标识符。一旦下层已经获得标识符,它就被提供给抽象层。优选地,给定图形资源的所有标识符被立即查询,用于改善抽象图形资源的创建速度。

在实践中,图形卡上的图形资源的标识符也被称为资源名称。由图形库在图形数据被变换成图形资源时创建资源名称。

接下来,在步骤s320处,抽象图形资源被存储在表中。该表被存储在系统的存储器上。表可以是已经存在的;在该情况下,用新的抽象图形资源完成表。如果没有表存在的话,则首先创建表(即,表在存储器中可用),并且然后用新的抽象图形资源完成表。在实践中,渲染引擎是在被执行时被加载到存储器中的软件,并且执行的渲染引擎与用于存储抽象图形资源的表一起供给。从而,将向渲染引擎提供对表的访问(s140),该表存储作为加载3d场景的结果而创建的抽象图形资源。通过这种方式,渲染引擎能够处理(或管理)3d场景的图形数据。

然后,在步骤s330处,在系统的每个图形卡上复制图形资源(现在通过抽象图形资源而在系统的每个图形卡上识别它)。将理解的是:复制在图形卡上的信息可以由所述图形卡利用,也就是说,图形资源是由图形库供给的对象,操作在该图形库上可以由图形卡的至少一个图形处理单元执行。如本领域中已知的那样执行图形资源到图形卡的复制,例如图形资源被存储在图形卡的存储器上。并且在步骤s340处,渲染引擎可以访问表,该表存储作为加载3d场景的结果而创建的抽象图形资源。

现在参考图4至6,讨论当渲染引擎接收应用程序的命令时步骤s300至s330的示例。渲染引擎命令是渲染引擎必须执行的命令。命令例如可以是用具体颜色绘制几何结构或清除屏幕。命令可以来自使用渲染引擎的用户(例如,通过执行显示请求的应用程序)或直接来自渲染引擎,这取决于渲染引擎的构造。在常见的渲染引擎中,命令典型地由动作(绘制、清除等等)和识别图形资源(例如将绘制的几何结构图形资源)的一个或多个资源名称组成。在本发明中,渲染引擎的抽象层在待执行的命令中用关联到图形资源的抽象图形资源替换图形资源的资源名称。将根据系统的图形卡的数量而执行该命令。例如,如果系统包括八个图形卡,则该命令将被执行八次;一次执行针对一个图形卡。

在图4中,表示了抽象图形资源、资源名称和图形卡之间的关系。在应用程序的请求时,在渲染引擎上已经加载了图形数据(当加载3d场景时)。已经作为加载图形数据的结果创建了抽象图形资源。抽象图形资源表示计算机系统的两个图形卡(图形卡1和图形卡2)上的图形资源(由图形库根据加载的图形数据计算)。每个图形资源具有也被称为资源名称的唯一标识符;这里,图形资源在图形卡1上具有资源名称1,并且在图形卡2上具有资源名称2。将理解的是:可能在创建抽象图形资源之前执行图形资源在图形卡上的复制;即,在步骤s310之前执行步骤s330。在步骤s330之前执行步骤s310改善图形卡上的图形资源的关联,并且还改善抽象图形资源的创建和管理。

图6示出当图形数据被加载到渲染引擎时执行的步骤。创建的抽象图形资源表示图形资源的n个资源名称,每个资源名称与n个图形卡中的一个相关联。图形资源被复制在图形卡上。一旦完成复制(步骤s330),先前创建的抽象图形资源(步骤s320)就被返回到应用程序。使用抽象图形资源而不是资源名称对于不知道抽象图形资源表示多于一个图形资源的应用程序是透明的。因而不需修改应用程序,抽象图形资源的创建/管理正由渲染引擎的抽象层执行。抽象层可以被配置成向上层提供所创建的抽象图形资源。通过这种方式,应用程序可以经由应用程序可以访问的上层而被直接通知新的抽象图形资源的创建。这允许隐藏图形卡管理和工作的复杂性,好像系统中只有一个图形卡一样。

现在参考图5,现在描绘用于存储和管理所创建的抽象图形资源的架构的示例。该示例的架构类似于具有用于搜索表的良好的行的抽象图形资源的复式表,并且图形卡标识符(也被称为用于图形卡的密钥)用于搜索表的良好的列。例如,抽象句柄40允许识别表的行42,行42包括若干列42a-42c,每列存储一个图形卡标识符。现在,根据列,可能获得图形资源的所有资源名称(即每个图形卡上的资源名称)。在实践中,资源名称可以连同图形卡的标识符被存储在表中,例如在行42a-42c上。

现在讨论用于用两个不同视点显示3d场景的抽象图形资源创建和使用的示例。在该示例中,系统包括两个图形卡,并且每个图形卡将负责用一个视点显示3d场景。在应用程序请求渲染引擎用两个不同视点显示3d场景之后,图形库命令(也称为图形库动作)由渲染引擎接收。如先前所看到的,场景上的视点是图形资源,其是由图形库供给并且可以在其上执行操作的对象。并且该视点图形资源可以由应用程序通过向渲染引擎发送命令来请求。在讨论的示例中,应用程序发送请求相同场景上的两个视点的命令。渲染引擎的上层典型地负责接收应用程序的命令;否则,应用程序有权经由上层访问渲染引擎。一旦已经接收命令,渲染引擎就识别该命令关注的抽象图形资源,例如在抽象图形资源是在表中进行搜索。在实践中,这变得可能,因为渲染引擎已经向应用程序提供关联到加载的图形数据的抽象图形资源。遍历抽象图形资源的表行,以便获得所有图形卡上的资源名称:图形资源是已知的,命令可以通过在命令中由相应的资源名称替换抽象图形资源来执行。将理解的是:利用每个图形卡上存储的图形资源的资源名称来为所述每个图形卡执行命令。

以类似的方式执行抽象图形资源的删除。应用程序向渲染引擎发送删除图形数据的命令。命令(或动作)由渲染引擎接收,因为应用程序可以访问所述渲染引擎,例如通过渲染引擎的上层。命令被寻址到抽象图形资源,因为应用程序用抽象图形资源识别图形数据(作为图形资源被复制在图形卡上)。渲染引擎然后查询抽象图形资源表,并且识别系统的图形卡上的图形资源的标识符。现在可以通过由表中找到的图形资源替换抽象图形资源来修改该命令,已经为与抽象图形资源相关联的每个图形资源创建了新命令。结果,可以执行删除命令,并且擦除图形卡存储器的图形资源。

参考回到图2的流程图,在步骤s210处,提供用于每个新添加的图形卡的标识符。如先前已经讨论的,图形卡的标识符可以是但不限于数字、字母数字字符,并且在图形库上的渲染引擎的查询时获得图形资源的标识符。

表达新的图形卡意味着一个或多个其它图形卡在计算机(例如图7的系统)上可用;其它图形卡是在3d场景的当前渲染中不占用的图形卡。

可以以若干方式添加新的图形卡。例如,可以使用图形卡的逻辑激活,例如在一条代码的动作时激活图形卡。作为另一个示例,可以执行物理激活,例如图形卡被插入到托管gc的系统。

可以在使用渲染引擎的应用程序的请求时执行步骤s210。例如,由应用程序请求3d场景的其它视点,该应用程序知道新的图形卡可以用于渲染这些其它视点。替代地,应用程序不知道新的图形卡是可用的,但是渲染引擎知道,并且其可以提出使应用程序利用这些新的图形卡。应用程序和/或渲染引擎可以具有用于逻辑上激活一个或多个新的图形卡的能力。

然后,在步骤s220处选择一个或多个新的图形卡。根据应用程序的需求和要求执行对(多个)新的图形卡的选择。例如,如果必须渲染三个新的视点,则将选择三个新的图形卡。因而,对新的图形卡的选择可以包括:根据要渲染的新视点的数量选择新的图形卡的数量。对(多个)新的图形卡的选择可以根据每个新的图形卡的硬件能力来执行(或者被另外执行),例如将选择具有更强大的gpu或最大存储器的gc。

当新的图形卡被选择并且将被使用时,由应用程序通过使用对渲染引擎进行配置的具体命令来通知渲染引擎。因而,本发明允许显著地改善对多图形卡系统的管理,并且因而动态地改善场景的渲染。

一旦已经选择一个或多个图形卡,就通过为每个新添加的图形卡添加图形资源的新标识符来修改3d场景的每个图形数据的抽象图形资源(s230)。将理解的是:新添加的图形卡是在步骤s220处选择的图形卡。如参考图5和6所讨论的那样执行为每个新添加的图形卡上的每个图形资源创建新标识符。

既然通过抽象图形资源为每个新的gc识别3d场景的图形资源,在每个新添加的图形卡上传送已经存储在gc上的图形数据(s240)。术语传送意味着图形数据的复制被存储在每个新添加的图形卡上。

可以根据图形库的能力而从由应用程序提供的原始图形数据执行传送,如本领域中已知的。

替代地,可以通过将已经存储在图形卡之一上的图形数据从该图形卡复制到所有新的图形卡(在步骤s220处选择的图形卡)来执行传送。在该情况下,执行对图形卡中的已经存储场景的图形数据的图形卡的选择。执行传送的方式可以取决于图形数据的类型而变化。在作为最通用的场景(大多数图形数据可以使用该场景来传送)的第一示例中,从选择的图形卡的gpu检索图形数据。在实践中,这意味着图形数据被存储在gpu的存储器中,并且它们从该存储器被复制到新的图形卡的存储器。该操作通过使用由图形库提供的专用功能来完成,如本领域中已知的。结果,在每个新添加的图形卡上创建了物理资源。在第二示例中,不可以如在前一个示例中那样直接从gpu检索图形数据;例如,图形数据是缓冲或纹理。使用这种类型的图形数据,图形库的特定功能用于得到数据:具体图形库调用用于从gpu存储器检索数据。例如,图形库中的功能允许用户将所选择的图形卡的视频存储器的内容复制到中央存储器,这反过来允许用户将数据复制到另一个图形卡。可以选择其它方法,这取决于图形库的能力。

已经考虑到新的图形资源的创建来讨论渲染引擎的层之间的交互,如图3至6的示例中所图示。在本发明中,当一个或多个补充图形卡用于渲染3d场景时,抽象图形资源已经存在并被修改。渲染引擎的层之间的交互是相同的。因此,每个新添加的图形卡的标识符通过使用图形库来获得,该图形库是通过渲染引擎的下层来访问的。然后将标识符提供给抽象层。渲染引擎的抽象层存储并管理抽象图形资源。例如,抽象图形资源的修改涉及:修改存储抽象图形资源的表,并且渲染引擎有权访问存储待修改的抽象图形资源的表。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1