CN115129483A - 一种基于显示区域划分的多显卡协同显示方法 - Google Patents
一种基于显示区域划分的多显卡协同显示方法 Download PDFInfo
- Publication number
- CN115129483A CN115129483A CN202211065948.6A CN202211065948A CN115129483A CN 115129483 A CN115129483 A CN 115129483A CN 202211065948 A CN202211065948 A CN 202211065948A CN 115129483 A CN115129483 A CN 115129483A
- Authority
- CN
- China
- Prior art keywords
- display
- card
- task
- display card
- subtask
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明适用于显卡驱动领域,提供一种基于显示区域划分的多显卡协同显示方法,所述方法基于屏幕显示区域进行任务划分,每个显卡只负责自己显示的区域的3D渲染和绘制,完成3D渲染后直接输出显示,这种任务划分方式,可以大大降低显卡之间、主存和显存之间的数据交互。最终实现了多块独立的显卡在同一个CPU的控制下协同工作,各自承担显示任务和相关的图像绘制任务,从而实现多显卡的协同显示。
Description
技术领域
本发明属于显卡驱动技术领域,尤其涉及一种基于显示区域划分的多显卡协同显示方法。
背景技术
多显卡技术是一种采用多块显卡同步协同工作,提供多屏显示,并提升整机显示性能的方法。多显卡技术包含多屏幕显示技术和多显卡渲染技术。多屏幕显示技术是指多块显卡同时显示多个屏幕。多显卡渲染技术是指多块显卡协同完成3D渲染任务。
传统显卡基于多CRTC 控制器(即阴极射线管显示控制器),每路CRTC 控制器输出一路显示信号,多CRTC 控制器则可输出多屏显示信号,实现多屏扩展,但输出屏幕个数受限于卡上CRTC 控制器数量。多屏幕显示技术可以突破单卡上CRTC控制器数量的限制,实现更多屏幕显示。目前,通用的多独立显卡显示技术是在主卡上完成图像绘制,再通过实时监测,当图像绘制完毕后,将绘制好的图像搬移到副卡,从而实现多屏幕同步显示。多卡显示技术支持复制屏显示模式和扩展屏显示模式。
传统显卡渲染基于显卡3D核,每个3D核可以独立完成渲染任务,整体的3D渲染性能受限于单卡上3D核数和3D核性能。在实际应用中,常常需要渲染高精度和大体量的模型,单张显卡可能很难满足应用的需求。多显卡同步渲染的主流技术为NVIDIA的SLI(SLI的全称是Scalable Link Interface)技术和AMD的Crossfire(简称CF,中文名交叉火力,简称交火)技术。这两种技术都是在同一主板上搭载多块显卡,多块显卡处理完的帧数据被集合起来处理,并作为一个整体信号被输出,通过两块显卡的协同工作来提升整个系统的显示效能。在互联原理方面,Crossfire采用专用主卡搭配普通显卡的方式,信号传递通过专用连接线;SLI系统需要两块完全一样的支持SLI的显卡,信号通过专用的通讯PCB卡(即SLI桥接卡)。在同步渲染模式方面,SLI技术只支持分割帧模式和交替帧模式;Crossfire支持分割帧模式、交替帧模式、方块分离模式和超级全屏抗锯齿模式。分割帧模式将同一帧画面分为两部分,并各由一颗GPU芯片绘制;交替帧模式将帧按照单双数分给不同的GPU芯片处理;方块分离模式将画面分成很多小格,由两颗GPU芯片梅花间隔处理器小格的数据;超级全屏抗锯齿模式是让两颗GPU芯片同时运算同一副画面,然后把结果组合,可以增加画面质量。分割帧模式、交替帧模式、方块分离模式的共同点是让两颗GPU芯片分别承担部分渲染任务,从而大大降低单颗GPU的计算强度,从而提高渲染速度。
现有多卡协同技术需要在不同独立显卡显存、主存和显存之间进行大量的数据传输。独立显卡实现现有的多屏幕显示技术时,需要实时将主卡的显示图像搬移到主存,再从主存搬移到显示的副卡。多独立显卡实现现有的多卡同步渲染时,需要交互的数据量更大,一般需要专用的高速连接线,且NVIDIA的SLI技术和AMD的Crossfire技术都对计算主板有特定的要求,国产平台上目前还无法支持。
发明内容
鉴于上述问题,本发明的目的在于提供一种基于显示区域划分的多显卡协同显示方法,旨在解决现有国产化平台不支持高速互联,而多卡协同技术需要进行大量的数据传输,从而导致国产化平台多卡协同技术性能不佳的问题。
本发明采用如下技术方案:
所述基于显示区域划分的多显卡协同显示方法,包括下述步骤:
步骤S1、对插槽上的每块显卡进行编号,针对每块显卡,按照显示区域划分设置显卡,建立显卡信息记录表;
步骤S2、当接收到应用层创建的绘图任务后,将绘图任务分解成多组绘制子任务并对绘制子任务编号,创建分发表并在分发表中为每个绘制子任务创建表项,记录绘制子任务信息;
步骤S3、根据分发表将绘制子任务分发给相应显卡,接收到绘制子任务的显卡执行绘制操作;
步骤S4、当接收到显卡返回的绘制子任务已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询分发表,将已绘制完成的图像发送至对应的显卡进行混合;
步骤S5、当接收到显卡返回的混合已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询显卡信息记录表,将已混合完成的图像发送至对应的CRTC控制器,由CRTC控制器完成混合后的图像显示;
步骤S6、当接收到显卡返回的显示已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息。
进一步的,步骤S1具体过程如下:
对插槽上的每块显卡进行编号;
确定显卡上各CRTC控制器的显示信息,显示信息包括显示区域、分辨率、色深;
根据所述显示信息对应设置CRTC控制器对应寄存器,包括显示区域和显示模式;
建立显卡信息记录表,所述显卡信息记录表中记录有每块显卡的显卡编号以及显卡上各CRTC控制器的显示信息。
进一步的,步骤S2中,分发表中每个表项记录的绘制子任务信息包括任务信息、绘制子任务编号、分发路径、混合路径和显卡反馈信息。
进一步的,步骤S3具体过程如下:
根据分发表将绘制子任务分发给相应显卡;
显卡接收到绘制子任务后,创建绘制子任务的上下文并分配所需资源,所述绘制子任务的上下文包括记录任务状态、分配资源,然后执行绘图命令,绘制情况记录在上下文中;
显卡绘制完成后,返回绘制子任务已完成信息,其中绘制子任务已完成信息包括完成任务的显卡编号和绘制子任务编号。
进一步的,步骤S4中,查询分发表,根据接收的显卡编号和绘制子任务编号,将已绘制完成的图像发送至对应的显卡进行混合,如果完成绘制子任务的显卡和完成混合任务的显卡不是同一张显卡,需要将完成绘制子任务的显卡提交的图像搬移到计划完成混合任务的显卡上;显卡混合完成后,返回混合已完成信息。
进一步的,步骤S5中,查询显卡信息记录表,根据混合图像的显示区域和每个CRTC控制器的显示区域信息,将已混合完成的图像发送至对应的CRTC控制器,由CRTC控制器完成混合后的图像显示,显示完成后返回显示已完成信息;如果完成混合任务的显卡和显示任务的显卡不是同一张显卡,需要将完成混合子任务的显卡提交的图像搬移到计划完成显示任务的显卡上。
进一步的,所述方法还包括:
步骤S7、定时查询分发表,根据记录状态进行更新,具体过程如下:
对于绘制子任务表项记录的执行显示任务的显卡和执行该绘制子任务的渲染任务、混合任务的显卡是同一张显卡,则修改分发表,使得不再向不执行显示任务的显卡发送该绘制子任务的绘制任务和混合任务;
对于绘制子任务表项记录的执行显示任务的显卡和执行该绘制子任务的渲染任务、混合任务的显卡不是同一张显卡,则修改分发表,向执行绘制子任务、混合任务、显示任务的显卡发送该绘制子任务,寻找最优路径。
本发明的有益效果是:本发明提供了一种基于显示区域划分的多独立显卡协同显示方法,多个屏幕的显示和3D任务都相对独立,基于屏幕显示区域进行任务划分,每个显卡只负责自己显示的区域的3D渲染和绘制,完成3D渲染后直接输出显示,这种任务划分方式,可以大大降低显卡之间、主存和显存之间的数据交互。最终实现了多块独立的显卡在同一个CPU的控制下协同工作,各自承担显示任务和相关的图像绘制任务,从而实现多显卡的协同显示。
附图说明
图1是本发明实施例提供的基于显示区域划分的多显卡协同显示方法的流程图;
图2是本发明实施例提供的实现多显卡协同显示方法的硬件布置图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本发明实施例提供的基于显示区域划分的多显卡协同显示方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
如图1所示,本实施例提供的基于显示区域划分的多显卡协同显示方法包括下述步骤:
步骤S1、显卡设置和建立显卡信息记录表步骤:对插槽上的每块显卡进行编号,针对每块显卡,按照显示区域划分设置显卡,建立显卡信息记录表。
本发明的目的是为了实现多块独立显卡在同一个CPU的控制下协同工作,各自承担显示任务和相关的图像绘制任务,从而实现多显卡的协同显示。从硬件结构来看,如图2所示,在主板上的显卡插槽上插入独立显卡,一个插槽上可以插入一块独立显卡,总共可以插入多块。独立显卡常使用PCIE总线,CPU与独立显卡通过PCIE总线连接。每块显卡包含一片图形处理芯片;每块显卡可连接多个显示器,连接的显示器数量可根据显卡上CRTC控制器数量和实际使用情况决定。最终实现的是通过多块显卡驱动多个显示器协同显示。
本步骤的具体实现过程如下:
S11、对插槽上的每块显卡进行编号。比如总共有n块显卡,对每块显卡按顺序编号1至n。
S12、确定显卡上各CRTC控制器的显示信息,显示信息包括显示区域、分辨率、色深。每块显卡连接1个或多个显示器,根据显卡连接状况和用户设置,可以确定每块显卡上各CRTC控制器的控制信息,一个CRTC控制器控制一个显示输出通道,每个显示通道需指定一个显示区域,设置显示分辨率、色深等信息。
S13、根据所述显示信息对应设置CRTC控制器对应寄存器,包括显示区域和显示模式。
S14、建立显卡信息记录表,所述显卡信息记录表中记录有每块显卡的显卡编号以及显卡上各CRTC控制器的显示信息。
每个显卡设置完成后,建立显卡信息记录表,记录表中至少包括显卡编号以及各CRTC控制器的显示信息。
步骤S2、任务分解和创建分发表步骤:当接收到应用层创建的绘图任务后,将绘图任务分解成多组绘制子任务并对绘制子任务编号,创建分发表并在分发表中为每个绘制子任务创建表项,记录绘制子任务信息。
当用户有显示需求时,在应用层会创建绘图任务,CPU接收到绘图任务后,本实施例首先将复杂的绘图任务分解成多组绘制子任务,每块独立的绘制任务可以作为一个子任务进行管理,也可以将多个联系紧密的绘制任务作为一个子任务进行管理,并对每个绘制子任务进行编号。比如,同时运行glxgears和glmark2 程序,可以将glxgears绘制齿轮的任务作为一个子程序,将glmark2绘制不同图形的多个绘制任务作为一个子程序。同时建立一张分发表,分发表中针对每个绘制子任务记录一个表项,表项中记录的是绘制子任务相关信息,包括任务信息(指向该任务的上下文区域,包含任务状态信息)、绘制子任务编号、分发路径、混合路径和显卡反馈信息。如使用两个独立显卡的环境,初始分发表如下表1所示。
分发表示意表1
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1、2 | 显卡1、2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
2 | 上下文指针 | 显卡1、2 | 显卡1、2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
… | … | … | … | … | … |
本发明将绘图过程分为绘制、混合、显示三个任务进行管理。所述绘制子任务编号为前述分解绘图任务时产生的编号。所述绘制路径指的是将绘制子任务分发个哪块显卡,初始时,绘制路径为插槽上的所有独立显卡。混合路径为执行混合子任务的显卡,显卡反馈信息指的是显卡执行绘制、混合和显示的结果,如未执行绘制、未执行混合、未执行显示等。
步骤S3、绘制子任务分发执行步骤:根据分发表将绘制子任务分发给相应显卡,接收到绘制子任务的显卡执行绘制操作。
本步骤主要实现制子任务的分发,使得对应显卡能够执行绘制操作。具体过程如下:
S31、根据分发表将绘制子任务分发给相应显卡。
针对每个绘制子任务,CPU根据分发表相应表项记录的绘制路径,将绘制子任务分发给相应插槽上的显卡,绘制子任务中的具体数据有显示区域的纹理数据、顶点数据、绘图命令和其他数据等。
S32、显卡接收到绘制子任务后,创建绘制子任务的上下文并分配所需资源,所述绘制子任务的上下文包括记录任务状态、分配资源,然后执行绘图命令,绘制情况记录在上下文中。
显卡接收到绘制子任务后,对绘制子任务会建立上下文记录,包括目前执行的任务状态、需要分配哪些资源,显卡资源分配后,即可执行绘制子任务中的绘图命令。
S33、显卡绘制完成后,返回绘制子任务已完成信息。
显卡绘制完成后,显卡向CPU返回绘制子任务已完成信息。其中绘制子任务已完成信息包括完成任务的显卡编号和绘制子任务编号。
步骤S4、反馈信息更新和混合执行步骤:当接收到显卡返回的绘制子任务已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询分发表,将已绘制完成的图像发送至对应的显卡进行混合。
分发表中的反馈信息初始都为未执行。当CPU接收到显卡的绘制子任务已完成信息后,从中提取到显卡编号和绘制子任务编号,然后查询分发表,更新相应绘制子任务的反馈信息为已绘制,即记录该绘制子任务对应显卡已完成绘制。如使用两个独立显卡的环境,完成第一轮绘制后,分发表如下表2所示。
分发表示意表2
然后根据分发表中绘制子任务表项中的混合路径,将已绘制完成的图像发送至对应的显卡进行混合,如果完成绘制子任务的显卡和完成混合任务的显卡不是同一张显卡,需要进行不同显卡间的数据搬移:完成绘制任务的显卡先通过PCIE总线将绘制结果传输到主存,再通过PCIE总线从主存传输至完成混合任务的显卡混合完成后,返回混合已完成信息。
步骤S5、反馈信息更新和显示执行步骤:当接收到显卡返回的混合已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询显卡信息记录表,将已混合完成的图像发送至对应的CRTC控制器,由CRTC控制器完成混合后的图像显示。所述混合已完成信息也包括显卡编号和绘制子任务编号,因此CPU接收到混合已完成信息后,通过查询分发表,更新反馈信息,更新为已混合,即表明该绘制子任务对应显卡已完成混合。分发表如下表3所示
分发表示意3
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1、2 | 显卡1、2 | 已绘制、已混合、未显示 | 已绘制、已混合、未显示 |
2 | 上下文指针 | 显卡1、2 | 显卡1、2 | 已绘制、已混合、未显示 | 已绘制、已混合、未显示 |
… | … | … | … | … | … |
系统完成显示任务时,会获取到混合图像的显示区域。通过查询显卡信息记录表,比较混合图像的显示区域和每个CRTC控制器的显示区域信息,即可找到相应的执行显示的显卡和CRTC控制器,由CRTC控制器完成混合后的图像显示。
显示操作完成后向CPU返回显示已完成信息。绝大多数情况绘制、混合、显示都将在一个显卡显示,如果完成混合任务的显卡和显示任务的显卡不是同一张显卡,需要进行不同显卡间的数据搬移:完成混合任务的显卡先通过PCIE总线将混合结果传输到主存,再通过PCIE总线从主存传输至完成显示任务的显卡
步骤S6、反馈信息更新步骤:当接收到显卡返回的显示已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息。如使用两个独立显卡的环境,完成第一轮显示后,发现绘制任务1由显卡1显示、任务2由显卡2显示,则分发表如下表4所示。
分发表示意表4
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1、2 | 显卡1、2 | 已绘制、已混合、已显示 | 已绘制、已混合、不显示 |
2 | 上下文指针 | 显卡1、2 | 显卡1、2 | 已绘制、已混合、不显示 | 已绘制、已混合、已显示 |
… | … | … | … | … | … |
最后CPU接收到显示已完成信息后,同样更新分发表对应的反馈信息,表明记录该绘制子任务对应显卡已完成显示。
本发明实施例将绘图过程分为绘制、混合、显示三个任务进行管理。绘制子任务绘制图像,混合任务将各个绘制子任务提交的图像混合成RGB图像,显示任务将混合好的图像送至CRTC控制器对应的显示器显示。本发明可实现国产平台上适用的多屏幕显示,不需要增加额外的硬件,可以突破单卡CRTC和3D性能的限制。
进一步作为一种优选实施方式,本实施例方法还包括下述步骤:
步骤S7、定时查询修改步骤:定时查询分发表,根据记录状态进行更新,具体过程如下:
对于绘制子任务表项记录的执行显示任务的显卡和执行该绘制子任务的渲染任务、混合任务的显卡是同一张显卡,则修改分发表,使得不再向不执行显示任务的显卡发送该绘制子任务的绘制任务和混合任务。
如使用两个独立显卡的环境,查询分发表时,发现绘制任务1由显卡1显示、任务2由显卡2显示,则修改分发表如下表5所示。
分发表示意表5
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1 | 显卡1 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
… | … | … | … | … | … |
最后本发明实施例通过列举实际存在的若干场景对本发明进行说明。
场景1:
一般而言,每个绘制子任务都只在一个屏幕显示。
在此情况下,完成一次显示,确定绘制的位置后,分发表将类似表5所示,绘制、混合、显示任务将都由同一个显卡完成,两块独立显卡之间基本不存在数据搬移。
场景2:
如果用户移动子任务的显示窗口,如将任务1移动到显卡2所显示的区域,将会出现绘制、混合、显示并不在一张显卡的情况。分发表如下表6所示。
分发表示意表6
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1 | 显卡1 | 已绘制、已混合、未显示 | 未绘制、未混合、已显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 已绘制、已混合、已显示 |
… | … | … | … | … | … |
此时需要修改分发表,向执行绘制子任务、混合任务、显示任务的显卡发送该绘制子任务。同时,还需要将将步骤S3中绘制子任务的上下文在执行任务的多个显卡中恢复(包括状态的复制以及数据的复制)。
如使用两个独立显卡的环境,绘制任务1从显卡1的区域移动到显卡2的区域,则修改分发表如下表7所示。
分发表示意表7
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1、2 | 显卡1、2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
… | … | … | … | … | … |
完成多轮显示后,确定绘制的位置后,发现绘制、混合、显示任务由同一个显卡完成,修改分发表如下表8。此时类似于场景1,显卡之间基本不存在数据搬移。
分发表示意表8
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
… | … | … | … | … | … |
场景3:
如果用户移动子任务的显示窗口,如将任务1移动,部分由显卡1显示,部分由显卡2显示,将会出现绘制、混合、显示并不在一张显卡的情况。分发表如下表9所示。
分发表示意表9
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1 | 显卡1 | 已绘制、已混合、已显示 | 未绘制、未混合、已显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 已绘制、已混合、已显示 |
… | … | … | … | … | … |
此时需要修改分发表,向执行绘制子任务、混合任务、显示任务的显卡发送该绘制子任务。同时,还需要将将步骤S3中绘制子任务的上下文在执行任务的多个显卡中恢复(包括状态的复制以及数据的复制)。
如使用两个独立显卡的环境,绘制任务1从显卡1的区域移动到显卡2的区域,则修改分发表如下表10所示。
分发表示意表10
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡1、2 | 显卡1、2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 未绘制、未混合、未显示 |
… | … | … | … | … | … |
完成多轮显示,确定绘制的位置后,发现显示任务由多个显卡完成,此时需要根据显示区域判断任务分发:绘制任务将由显示区域较大的显卡完成。
如使用两个独立显卡的环境,绘制任务1由显卡1显示30%,显卡2显示70%,则修改分发表如下表11所示。此时需要将显卡1的绘制数据从显卡2通过PCIE总线移动到主存,再通过PCIE总线移动到显卡1。此时需要进行两个显卡间的数据搬移,类似于现有做法。不过本发明根据显示区域动态选择绘制和混合的显卡,搬移的数据量最大等于整个所需数据量的一半。现有做法一般默认绘制、混合的显卡均是显卡1,如绝大部分显示区域位于显卡2,则搬移的数据量远远大于整个显示所需数据量的一半。
分发表示意表11
任务标号 | 任务信息 | 绘制路径 | 混合路径 | 显卡1反馈 | 显卡2反馈 |
1 | 上下文指针 | 显卡2 | 显卡1、2 | 未绘制、已混合、已显示 | 已绘制、已混合、已显示 |
2 | 上下文指针 | 显卡2 | 显卡2 | 未绘制、未混合、未显示 | 已绘制、已混合、已显示 |
… | … | … | … | … | … |
上述步骤S7为定时查询步骤,以实时调整分发表,到应用层结束运行后,CPU释放相关资源,删除分发表中对应选项。本发明尽可能将单个任务的所有GPU操作集中到一个独立显卡中,大大减少了显卡之间的数据搬移。每个屏幕的绘制相对独立,本发明也大大降低单颗GPU的计算强度,从而提高渲染速度。
综上,本发明通过多个显示器的显示和3D任务都相对独立,基于屏幕显示区域进行任务划分,每个显卡只负责自己显示区域的3D渲染和绘制,完成3D渲染后直接输出显示。这种任务划分方式,可以大大降低显卡之间、主存和显存之间的数据交互。本发明实现多个独立的显卡在同一个CPU的控制下协同工作,各自承担显示任务和相关的图像绘制任务,从而实现多显卡的协同显示。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于显示区域划分的多显卡协同显示方法,其特征在于,所述方法包括下述步骤:
步骤S1、对插槽上的每块显卡进行编号,针对每块显卡,按照显示区域划分设置显卡,建立显卡信息记录表;
步骤S2、当接收到应用层创建的绘图任务后,将绘图任务分解成多组绘制子任务并对绘制子任务编号,创建分发表并在分发表中为每个绘制子任务创建表项,记录绘制子任务信息;
步骤S3、根据分发表将绘制子任务分发给相应显卡,接收到绘制子任务的显卡执行绘制操作;
步骤S4、当接收到显卡返回的绘制子任务已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询分发表,将已绘制完成的图像发送至对应的显卡进行混合;
步骤S5、当接收到显卡返回的混合已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息;然后查询显卡信息记录表,将已混合完成的图像发送至对应的CRTC控制器,由CRTC控制器完成混合后的图像显示;
步骤S6、当接收到显卡返回的显示已完成信息后,更新分发表中当前绘制子任务对应显卡的反馈信息。
2.如权利要求1所述基于显示区域划分的多显卡协同显示方法,其特征在于,步骤S1具体过程如下:
对插槽上的每块显卡进行编号;
确定显卡上各CRTC控制器的显示信息,显示信息包括显示区域、分辨率、色深;
根据所述显示信息对应设置CRTC控制器对应寄存器,包括显示区域和显示模式;
建立显卡信息记录表,所述显卡信息记录表中记录有每块显卡的显卡编号以及显卡上各CRTC控制器的显示信息。
3.如权利要求2所述基于显示区域划分的多显卡协同显示方法,其特征在于,步骤S2中,分发表中每个表项记录的绘制子任务信息包括任务信息、绘制子任务编号、分发路径、混合路径和显卡反馈信息。
4.如权利要求3所述基于显示区域划分的多显卡协同显示方法,其特征在于,步骤S3具体过程如下:
根据分发表将绘制子任务分发给相应显卡;
显卡接收到绘制子任务后,创建绘制子任务的上下文并分配所需资源,所述绘制子任务的上下文包括记录任务状态、分配资源,然后执行绘图命令,绘制情况记录在上下文中;
显卡绘制完成后,返回绘制子任务已完成信息,其中绘制子任务已完成信息包括完成任务的显卡编号和绘制子任务编号。
5.如权利要求4所述基于显示区域划分的多显卡协同显示方法,其特征在于,步骤S4中,查询分发表,根据接收的显卡编号和绘制子任务编号,将已绘制完成的图像发送至对应的显卡进行混合,如果完成绘制子任务的显卡和完成混合任务的显卡不是同一张显卡,需要将完成绘制子任务的显卡提交的图像搬移到计划完成混合任务的显卡上;显卡混合完成后,返回混合已完成信息。
6.如权利要求5所述基于显示区域划分的多显卡协同显示方法,其特征在于,步骤S5中,查询显卡信息记录表,根据混合图像的显示区域和每个CRTC控制器的显示区域信息,将已混合完成的图像发送至对应的CRTC控制器,由CRTC控制器完成混合后的图像显示,显示完成后返回显示已完成信息;如果完成混合任务的显卡和显示任务的显卡不是同一张显卡,需要将完成混合子任务的显卡提交的图像搬移到计划完成显示任务的显卡上。
7.如权利要求6所述基于显示区域划分的多显卡协同显示方法,其特征在于,所述方法还包括:
步骤S7、定时查询分发表,根据记录状态进行更新,具体过程如下:
对于绘制子任务表项记录的执行显示任务的显卡和执行该绘制子任务的渲染任务、混合任务的显卡是同一张显卡,则修改分发表,使得不再向不执行显示任务的显卡发送该绘制子任务的绘制任务和混合任务;
对于绘制子任务表项记录的执行显示任务的显卡和执行该绘制子任务的渲染任务、混合任务的显卡不是同一张显卡,则修改分发表,向执行绘制子任务、混合任务、显示任务的显卡发送该绘制子任务,寻找最优方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065948.6A CN115129483B (zh) | 2022-09-01 | 2022-09-01 | 一种基于显示区域划分的多显卡协同显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211065948.6A CN115129483B (zh) | 2022-09-01 | 2022-09-01 | 一种基于显示区域划分的多显卡协同显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115129483A true CN115129483A (zh) | 2022-09-30 |
CN115129483B CN115129483B (zh) | 2022-12-02 |
Family
ID=83387130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211065948.6A Active CN115129483B (zh) | 2022-09-01 | 2022-09-01 | 一种基于显示区域划分的多显卡协同显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129483B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883228A (zh) * | 2023-09-08 | 2023-10-13 | 武汉凌久微电子有限公司 | 一种gpu像素填充率测量方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080211816A1 (en) * | 2003-07-15 | 2008-09-04 | Alienware Labs. Corp. | Multiple parallel processor computer graphics system |
US20110157193A1 (en) * | 2009-12-29 | 2011-06-30 | Nvidia Corporation | Load balancing in a system with multi-graphics processors and multi-display systems |
CN105446675A (zh) * | 2014-08-18 | 2016-03-30 | 联想(北京)有限公司 | 一种分屏显示方法及电子设备 |
CN107193650A (zh) * | 2017-04-17 | 2017-09-22 | 北京奇虎科技有限公司 | 一种在分布式集群中调度显卡资源的方法和装置 |
CN111142951A (zh) * | 2019-12-27 | 2020-05-12 | 中国电子科技集团公司第十五研究所 | 一种飞腾平台的双独立显卡同步显示装置及方法 |
CN111610944A (zh) * | 2019-02-22 | 2020-09-01 | 北京京东尚科信息技术有限公司 | 多屏协同显示控制方法、装置、显示系统以及存储介质 |
CN112057852A (zh) * | 2020-09-02 | 2020-12-11 | 北京蔚领时代科技有限公司 | 一种基于多显卡的游戏画面渲染方法和系统 |
CN112102143A (zh) * | 2020-09-11 | 2020-12-18 | 山东超越数控电子股份有限公司 | 一种基于国产平台的图形加速优化方法 |
CN113590315A (zh) * | 2021-07-22 | 2021-11-02 | 象无形(上海)信息科技有限公司 | 多显卡大模型渲染方法 |
CN114416376A (zh) * | 2022-01-27 | 2022-04-29 | 济南点量软件有限公司 | 用于多显卡在不同应用间的负载均衡方法及系统 |
-
2022
- 2022-09-01 CN CN202211065948.6A patent/CN115129483B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080211816A1 (en) * | 2003-07-15 | 2008-09-04 | Alienware Labs. Corp. | Multiple parallel processor computer graphics system |
US20110157193A1 (en) * | 2009-12-29 | 2011-06-30 | Nvidia Corporation | Load balancing in a system with multi-graphics processors and multi-display systems |
CN105446675A (zh) * | 2014-08-18 | 2016-03-30 | 联想(北京)有限公司 | 一种分屏显示方法及电子设备 |
CN107193650A (zh) * | 2017-04-17 | 2017-09-22 | 北京奇虎科技有限公司 | 一种在分布式集群中调度显卡资源的方法和装置 |
CN111610944A (zh) * | 2019-02-22 | 2020-09-01 | 北京京东尚科信息技术有限公司 | 多屏协同显示控制方法、装置、显示系统以及存储介质 |
CN111142951A (zh) * | 2019-12-27 | 2020-05-12 | 中国电子科技集团公司第十五研究所 | 一种飞腾平台的双独立显卡同步显示装置及方法 |
CN112057852A (zh) * | 2020-09-02 | 2020-12-11 | 北京蔚领时代科技有限公司 | 一种基于多显卡的游戏画面渲染方法和系统 |
CN112102143A (zh) * | 2020-09-11 | 2020-12-18 | 山东超越数控电子股份有限公司 | 一种基于国产平台的图形加速优化方法 |
CN113590315A (zh) * | 2021-07-22 | 2021-11-02 | 象无形(上海)信息科技有限公司 | 多显卡大模型渲染方法 |
CN114416376A (zh) * | 2022-01-27 | 2022-04-29 | 济南点量软件有限公司 | 用于多显卡在不同应用间的负载均衡方法及系统 |
Non-Patent Citations (1)
Title |
---|
魔之左手: "ATI和NVIDIA的巅峰对决 最高端CrossFire和SLI系统测试", 《大众硬件》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883228A (zh) * | 2023-09-08 | 2023-10-13 | 武汉凌久微电子有限公司 | 一种gpu像素填充率测量方法 |
CN116883228B (zh) * | 2023-09-08 | 2023-12-01 | 武汉凌久微电子有限公司 | 一种gpu像素填充率测量方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115129483B (zh) | 2022-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7782327B2 (en) | Multiple parallel processor computer graphics system | |
US8854380B2 (en) | System and method for rendering and displaying high-resolution images | |
US6683614B2 (en) | System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system | |
US7015915B1 (en) | Programming multiple chips from a command buffer | |
US20030160792A1 (en) | Distributed resource architecture and system | |
US7995003B1 (en) | System and method for rendering and displaying high-resolution images | |
US20050212798A1 (en) | Method, node, and network for compositing a three-dimensional stereo image from an image generated from a non-stereo application | |
US20110157193A1 (en) | Load balancing in a system with multi-graphics processors and multi-display systems | |
US20080211816A1 (en) | Multiple parallel processor computer graphics system | |
US6417849B2 (en) | Single logical screen in X windows with direct hardware access to the frame buffer for 3D rendering | |
CN101371247A (zh) | 用于图形处理器的并行阵列结构 | |
DE102013017640A1 (de) | Verteilte gekachelte Zwischenspeicherung | |
CN103106679A (zh) | 分布式3d多通道渲染方法、系统和平台 | |
CN102447900B (zh) | 用于生成可变优先级多窗口图像的设备和方法 | |
JPS62298882A (ja) | マルチ・ウィンドウ表示システム | |
CN115129483B (zh) | 一种基于显示区域划分的多显卡协同显示方法 | |
US6157393A (en) | Apparatus and method of directing graphical data to a display device | |
CN103680470A (zh) | 大屏控制的图像显示方法及系统 | |
CN102436364A (zh) | 多重显示器控制方法及其系统 | |
CN112835730A (zh) | 图像存储、内存分配、图像合成方法、装置、设备及介质 | |
US20040179007A1 (en) | Method, node, and network for transmitting viewable and non-viewable data in a compositing system | |
EP4310688A1 (en) | Rendering system and method based on system-on-chip (soc) platform | |
US20210192675A1 (en) | Graphics processor unit, platform comprising such a graphics processor unit and a multi-core central processor, and method for managing resources of such a graphics processor unit | |
CN111045623B (zh) | 一种多gpu拼接环境下图形命令的处理方法 | |
CN101739662A (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 |