CN112698874B - 一种麒麟***中ast显卡和独立显卡同时显示的方法 - Google Patents
一种麒麟***中ast显卡和独立显卡同时显示的方法 Download PDFInfo
- Publication number
- CN112698874B CN112698874B CN202011598588.7A CN202011598588A CN112698874B CN 112698874 B CN112698874 B CN 112698874B CN 202011598588 A CN202011598588 A CN 202011598588A CN 112698874 B CN112698874 B CN 112698874B
- Authority
- CN
- China
- Prior art keywords
- ast
- buf
- dma
- card
- display card
- 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
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种麒麟***中ast显卡和独立显卡同时显示的方法,该方法包括:在内核空间与用户空间之间建立一种访问dma_buf的机制,使得独立显卡渲染完成的图像数据通过dma_buf对象和export/import函数发送给ast显卡驱动,并由ast显卡进行显示输出。本发明是在麒麟操作***上实现一种基于RPIME的通道机制,实现ast显卡与独立显卡的同时显示输出。
Description
技术领域
本发明涉及一种服务器操作***开发技术领域,尤其是一种麒麟***中使不同类型的显卡同时显示的方法。
背景技术
为实现高要求的硬件平台管理功能,服务器一般会使用BMC作为控制管理通道,用以管理服务器硬件平台。在BMC中,会集成自带一个ast显卡,而这个ast显卡(BMC)只具备基本的显示功能,并不具备渲染复杂图形场景的能力。因此,为实现对复杂图像场景的渲染,用户一般会在服务器上再配置一个独立显卡,由该独立显卡来完成图像的渲染和显示输出功能。
在一般情况下,服务器在同一时刻仅需要通过一个显卡来显示输出,当服务器上同时存在多个显卡(例如一个独立显卡,一个集成的ast显卡)时,根据应用的需要,服务器可以通过切换显卡的方式来选择指定的显卡完成当前应用的图像渲染和显示输出任务。中国实用新型专利CN201720134319.2,公开了一种基于飞腾平台的双显卡切换装置及服务器。该双显卡切换装置为在飞腾服务器的主板上设置切换器、独立显卡和BMC模块,所述BMC模块集成BMC板载显卡,独立显卡和BMC板载显卡通过切换器连接,独立显卡和BMC板载显卡还分别与显示器连接。虽然该专利实现了板载BMC显卡和外插独立显卡的自由切换,在满足客户对产品显示性能的要求的同时,实现BMC远程管理的功能。
现有技术中,往往均关注于显卡的切换使用,无法支持集成显卡与独立显卡的同时显示输出。而在某些应用场景下,出于方便并行查看和管理多个任务的需求,用户有时会在一台服务器上连接多个显示器,每个显示器对应查看一个任务。在这种场景中,由于独立显卡输出接口有限,可能无法满足多个显示器的输出需求,往往还需要利用ast显卡(BMC)来协助显示输出。此时,需要的不再是独立显卡和ast显卡的切换显示输出,而是独立显卡和ast显卡的同时显示输出:即由独立显卡完成对图像数据的渲染后,将图像数据传递给ast显卡(BMC),由ast显卡(BMC)与独立显卡来同时显示输出图像。
在Linux内核的服务器***中,默认配置会有BMC作为控制管理通道且同时通过BMC上集成的ast显卡来提供基本显示功能,但由于ast显卡没有加速功能,在某些场景需要配置独立显卡;而当独立显卡工作时,因为无法将图像数据传递给BMC,因此此时ast显卡是没有显示输出的。所以,在同时有ast显卡(BMC)与独立显卡的linux内核的服务器***中,独立显卡可以正常显示输出,而ast显卡则无法显示,无法满足ast显卡(BMC)与独立显卡同时显示输出的需求。
总之,目前在Linux内核的操作***和linux开源社区中,尚无一个发行版本能够支持ast显卡(BMC)与独立显卡的同时显示。在BMC驱动中,也没有实现类似的PRIME机制,能够将独立显卡渲染的图像传递给BMC集成的ast显卡来显示输出。因此,需要实现某种机制,将独立显卡渲染的图像传递给ast显卡(BMC),从而实现ast显卡(BMC)与独立显卡的同时输出。
发明内容
为解决上述技术问题,本发明的目的是提供一种麒麟***中ast显卡和独立显卡同时显示的方法,该方法是在麒麟操作***上实现一种RPIME的通道机制,使得独立显卡渲染完成的图像数据通过通道发送给BMC集成的ast显卡,实现ast显卡(BMC)与独立显卡的同时显示输出。
为达到上述目的,本发明采用的技术手段为:
一种麒麟***中ast显卡和独立显卡同时显示的方法,该方法包括在内核空间与用户空间之间建立一种访问dma_buf的机制,使得独立显卡渲染完成的图像数据通过dma_buf对象和export/import函数发送给ast显卡驱动,并由ast显卡进行显示输出。
其中,该方法包括以下步骤:
S101:独立显卡驱动在内核空间申请供共享访问的内存;
S102:独立显卡渲染图像,并将渲染后的图像数据写入共享内存;
S103:独立显卡驱动调用dma_buf_export()函数创建dma_buf对象,并将共享内存挂载到dma_buf对象中;
S104:独立显卡驱动调用dma_buf_fd()函数将创建的dam_buf对象关联到全局可见的文件描述符fd,同时将fd通过用户空间传递至ast显卡驱动;
S105:ast显卡驱动调用dma_buf_import()函数,获取共享内存中的图像数据,显示输出图像。
其中,在麒麟***中设定有dma_buf对象的预留/解除预留机制。
其中,步骤S103中,创建的dma_buf对象映射到内核空间的虚拟地址空间中。
本发明的进一步改进在于:使用fence机制处理dma_buf对象的共享和访问。
其中,S105中,ast显卡驱动调用dma_buf_import()函数前,利用Xorg判断ast显卡的显示区域是否需要更新。
进一步地,Xorg判断ast显卡的显示区域需要更新时,ast显卡驱动通过调用dma_buf_get(fd)函数来获取dma_buf对象。
当Xorg判断ast显卡的显示区域需要更新时,ast显卡驱动调用dma_buf_get(fd)来获取dma_buf对象。
其中,步骤S104中,独立显卡驱动通过ioctl方法将fd传递给用户空间。
与现有技术相比,本发明的有益效果在于:
本发明在麒麟***的内核空间和用户空间之间提供一种访问dma_buf的机制,使得独立显卡渲染完成的图像数据可以通过dma_buf子***发送给BMC集成的ast显卡,从而实现ast显卡(BMC)与独立显卡的同时显示输出。
通过dma_buf子***,将独立显卡渲染完成的图像数据写入共享内存并挂载到dma_buf对象上,并通过dma_buf子***将dma_buf对象转换为作为传送媒介的文件描述符fd发送给用户空间,用户空间得到fd后,通过这个fd作为媒介,将dma_buf对象传递给来指定的驱动设备,从而实现各个驱动设备间的交互。
在独立显卡驱动和ast显卡驱动上实现export/import函数。独立显卡驱动作为生产者,在完成图像渲染后,将创建dma_buf对象并将渲染后的图像数据export到dma_buf对象中,dma_buf对象会被转换为作为传送媒介的文件描述符fd。而ast显卡驱动作为消费者,在接收到用户空间传递过来的fd后,通过fd获取到对应的dma_buf对象, 从dma_buf对象中import缓存的数据并交给ast显卡来显示输出。
麒麟***中设定有dma_buf对象的预留/解除预留机制,dma_buf对象可以预留在内存中,以便需要使用时可随时分配。解除预留后,预留内存可被回收利用。dma_buf对象的映射/解映射机制可以将dma_buf对象映射到内核空间的虚拟地址空间,以便可以对其进行读写,当不再需要时,也可以从虚拟地址空间解除映射。
当Xorg判断ast显卡的显示区域需要更新时,由ast显卡驱动接收用户空间传递过来的fd,通过fd获取到对应的dma_buf对象,并从dma_buf对象中import缓存的数据并交给ast显卡来更新需要更新的显示区域,从而实现了ast显卡(BMC)和独立显卡的同时显示。
本发明的优势还在于:
(1)自主可控性,由于同时显示方案的设计和实现都是自主设计研发,具有完全的知识产权。
(2)实现方式的独创性,在麒麟操作***上创造性地实现了内核空间与用户空间之间基于独立显卡和ast显卡的dma_buf访问机制,以及独立显卡驱动的export函数和ast显卡(BMC)的import函数,从而实现了独立显卡向ast显卡(BMC)的图像数据传送。
(3)实现效果明显,通过本发明,麒麟操作***可以很好地实现独立显卡和ast显卡(BMC)的同时显示输出。
附图说明
图1为本发明的独立显卡到ast显卡(BMC)的数据传送的主要数据流框图。
具体实施方式
为了使本领域技术人员能更好地理解本发明的技术方案,下面将结合附图和实施例对本发明进行进一步详细说明。在描述过程中省略了对于本发明来说不必要的细节和功能,以防止对本发明的理解造成混淆。
本发明中的部分名词解释参考如下:
dma_buf:dma_buf是内核中一个独立的子***,提供了一个使不同的设备、子***之间进行共享缓存的统一框架。它在内核中的主要运用场景是支持GPU驱动中的prime机制。作为内核中的通用模块,dma_buf的适用范围很广。比如,来自摄像头采集的通过pciv驱动传输的内存、gpu内部管理的内存等等。dma_buf子***包含三个主要组成:(1)dma_buf对象,它的实现后端是一个sg_table,而暴露给用户空间的接口是一个文件描述符,通过该文件描述符的传递来实现对dma_buf对象的共享访问,避免了不同驱动管理的内存区域的频繁拷贝。(2)fence对象,当设备访问dma_buf对象完成后,提供一种信号机制来通知其他相关设备,例如,独立显卡渲染图像到dma_buf对象后,需要通知集成显卡显示dma_buf所表示的内容;(3)reservation对象,它负责管理dma_buf对象的共享和互斥访问。
PRIME机制:PRIME机制是基于 dma_buf 实现的buffer共享机制,可以将独立显卡上渲染完成的图像在集成显卡上高效显示。
BMC:即基板管理控制器,是一个独立的***,不依赖与***上的其它硬件(比如CPU、内存等),也不依赖与BIOS、OS等,它可以提供平台管理功能,可以方便服务器进行远程管理、监控、安装、重启等操作。
ast显卡(BMC):服务器上一般将BMC作为控制管理通道,用于管理服务器硬件平台,而BMC中都会自带一个具备基本显示功能的ast显卡,这个卡一般会集成到bmc中。ast显卡(bmc)就是指的bmc中自带的ast显卡,它只具备基本显示功能,而并不具备渲染复杂图形场景的能力。
Xorg:Xorg是X11的一个实现,它提供了一个X Server。X Server是一个图形渲染服务器,负责执行x client的图形渲染请求,同时将用户的键鼠操作等反馈给x client。
如图1所示,本发明提供了一种麒麟***中ast显卡和独立显卡同时显示的方法,该方法包括在内核空间与用户空间之间建立一种访问dma_buf的机制,使得独立显卡渲染完成的图像数据通过dma_buf对象和export/import函数发送给ast显卡驱动,并由ast显卡进行显示输出。
为实现独立显卡向ast显卡(BMC)的图像数据传送,本发明通过dma_buf子***,将独立显卡渲染完成的图像数据写入共享内存并挂载到dma_buf对象上,通过dma_buf对象和export/import机制将图像数据传送给ast显卡驱动,并由ast显卡驱动更新显示区域。本发明得以实现的机制具体包括:
(1)在内核空间和用户空间之间设定一种访问dma_buf的机制。即将dma_buf对象在内核空间中的handle句柄转换为用户空间可以访问的文件描述符fd并传递给用户空间,用户空间得到fd后,通过这个fd作为媒介,将dma_buf对象传递给来指定的驱动设备,从而实现各个驱动设备间的交互;
(2)在独立显卡驱动和ast显卡驱动上实现export/import机制。独立显卡驱动作为生产者,在完成图像渲染后,将创建dma_buf对象并将渲染后的图像数据export到dma_buf对象中,dma_buf对象会被转换为作为传送媒介的文件描述符fd。而ast显卡驱动作为消费者,在接收到用户空间传递过来的fd后,通过fd获取到对应的dma_buf对象,从dma_buf对象中import缓存的数据并交给ast显卡来显示输出;
(3)设定dma_buf对象的映射/解映射机制。该机制可以将dma_buf对象映射到内核空间的虚拟地址空间以便可以对其进行读写,当不再需要时,也可以从内核空间的虚拟地址空间解除映射;
(4)在麒麟***中设定dma_buf对象的预留/解除预留机制。dma_buf对象可以预留在内存空间中,以便需要使用时可随时分配。解除预留后,预留内存空间可被回收利用;
(5)处理dma_buf对象的共享和互斥访问;
(6)设定一种判断ast显卡的显示区域是否需要更新的方法。如果需要更新,则获取ast驱动import的dma_buf对象,并更新需要更新的区域。
本发明所述的在麒麟***中ast显卡和独立显卡同时显示的方法具体包括以下步骤:
S101:独立显卡驱动在内核空间申请供共享访问的内存。
S102:独立显卡渲染图像,通过dma_buf子***,将渲染完成后的图像数据写入共享内存。
S103:独立显卡驱动调用dma_buf_export()函数创建dma_buf对象,创建的dma_buf对象映射到内核空间的虚拟地址空间中,并将共享内存挂载到dma_buf对象中。
将dma_buf对象映射到内核空间的虚拟地址空间以便可以对其进行读写,当不再需要时,也可以从内核空间的虚拟地址空间解除映射。本实施例中,在麒麟***中设定dma_buf对象的预留/解除预留机制,便于分配。以此,dma_buf对象可以预留在内存中,以便需要使用时可随时分配;解除预留后,预留内存也可被回收利用。
S104:独立显卡驱动调用dma_buf_fd()函数将创建的dam_buf对象关联到全局可见的文件描述符fd,同时将fd通过ioctl方法将fd传递给用户空间,用户空间再将fd传递至ast显卡驱动;
S105:利用Xorg判断ast显卡的显示区域是否需要更新,当Xorg判断ast显卡的显示区域需要更新时,ast显卡驱动调用dma_buf_get(fd)来获取dma_buf对象。
之后,ast显卡驱动调用dma_buf_import()函数,获取共享内存中的图像数据,显示输出图像,更新显示区域。
本实施例中,使用fence机制处理dma_buf对象的共享和访问。
以上仅为本发明较佳实施例,用于帮助理解本发明的方法及其核心思想。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所进行的改进,都属于本发明保护的范围。
Claims (5)
1.一种麒麟***中ast显卡和独立显卡同时显示的方法,其特征在于,该方法包括:在内核空间与用户空间之间建立一种访问dma_buf的机制,使得独立显卡渲染完成的图像数据通过dma_buf对象和export/import函数发送给ast显卡驱动,并由ast显卡进行显示输出;
S101:独立显卡驱动在内核空间申请供共享访问的内存;
S102:独立显卡渲染图像,并将渲染后的图像数据写入共享内存;
S103:独立显卡驱动调用dma_buf_export()函数创建dma_buf对象,并将共享内存挂载到dma_buf对象中;
S104:独立显卡驱动调用dma_buf_fd()函数将创建的dam_buf对象关联到全局可见的文件描述符fd,同时将fd通过用户空间传递至ast显卡驱动;
S105:ast显卡驱动调用dma_buf_import()函数,获取共享内存中的图像数据,显示输出图像;
S105中,ast显卡驱动调用dma_buf_import()函数前,利用Xorg判断ast显卡的显示区域是否需要更新;
Xorg判断ast显卡的显示区域需要更新时,ast显卡驱动调用dma_buf_get(fd)来获取dma_buf对象。
2.根据权利要求1所述的一种麒麟***中ast显卡和独立显卡同时显示的方法,其特征在于:在麒麟***中设定有dma_buf对象的预留/解除预留机制。
3.根据权利要求1所述的一种麒麟***中ast显卡和独立显卡同时显示的方法,其特征在于:步骤S103中,创建的dma_buf对象映射到内核空间的虚拟地址空间中。
4.根据权利要求3所述的一种麒麟***中ast显卡和独立显卡同时显示的方法,其特征在于:使用fence机制处理dma_buf对象的共享和访问。
5.根据权利要求1所述的一种麒麟***中ast显卡和独立显卡同时显示的方法,其特征在于:步骤S104中,独立显卡驱动通过ioctl方法将fd传递给用户空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011598588.7A CN112698874B (zh) | 2020-12-29 | 2020-12-29 | 一种麒麟***中ast显卡和独立显卡同时显示的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011598588.7A CN112698874B (zh) | 2020-12-29 | 2020-12-29 | 一种麒麟***中ast显卡和独立显卡同时显示的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698874A CN112698874A (zh) | 2021-04-23 |
CN112698874B true CN112698874B (zh) | 2022-12-09 |
Family
ID=75511972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011598588.7A Active CN112698874B (zh) | 2020-12-29 | 2020-12-29 | 一种麒麟***中ast显卡和独立显卡同时显示的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698874B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708002A (zh) * | 2012-05-15 | 2012-10-03 | 曙光信息产业(北京)有限公司 | 管理主板管理控制器中的显卡显示的方法以及服务器 |
CN109408407A (zh) * | 2018-10-19 | 2019-03-01 | 龙芯中科技术有限公司 | 显示内存的分配方法和装置 |
CN111142951A (zh) * | 2019-12-27 | 2020-05-12 | 中国电子科技集团公司第十五研究所 | 一种飞腾平台的双独立显卡同步显示装置及方法 |
CN111240631A (zh) * | 2020-02-20 | 2020-06-05 | 湖南麒麟信安科技有限公司 | 基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880587B (zh) * | 2012-10-09 | 2014-12-24 | 无锡江南计算技术研究所 | 基于嵌入式加速核心的独立显卡架构 |
CN104572509B (zh) * | 2014-12-26 | 2017-11-07 | 中国电子科技集团公司第十五研究所 | 一种在龙芯计算平台上实现独立显卡显存分配的方法 |
CN105094895B (zh) * | 2015-06-30 | 2019-02-12 | 珠海豹趣科技有限公司 | 一种安装多显卡驱动的方法及装置 |
CN206515811U (zh) * | 2017-02-15 | 2017-09-22 | 湖南长城银河科技有限公司 | 一种基于飞腾平台的双显卡切换装置及服务器 |
CN111158625A (zh) * | 2019-12-31 | 2020-05-15 | 中国电子科技集团公司第十五研究所 | 一种基于飞腾平台的双独立显卡动态切换装置及方法 |
-
2020
- 2020-12-29 CN CN202011598588.7A patent/CN112698874B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708002A (zh) * | 2012-05-15 | 2012-10-03 | 曙光信息产业(北京)有限公司 | 管理主板管理控制器中的显卡显示的方法以及服务器 |
CN109408407A (zh) * | 2018-10-19 | 2019-03-01 | 龙芯中科技术有限公司 | 显示内存的分配方法和装置 |
CN111142951A (zh) * | 2019-12-27 | 2020-05-12 | 中国电子科技集团公司第十五研究所 | 一种飞腾平台的双独立显卡同步显示装置及方法 |
CN111240631A (zh) * | 2020-02-20 | 2020-06-05 | 湖南麒麟信安科技有限公司 | 基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN112698874A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
CA2933712C (en) | Resource processing method, operating system, and device | |
RU2445705C2 (ru) | Способ подготовки отображения данных в серверах (варианты) и машиночитаемый носитель | |
US6710753B2 (en) | Multi-screen session mobility between terminal groups | |
CN111240626A (zh) | 一种基于Hypervisor智能座舱操作***双屏互动的方法和*** | |
US8126993B2 (en) | System, method, and computer program product for communicating sub-device state information | |
EP3627319B1 (en) | Display resource scheduling method and device for embedded system | |
US20120110272A1 (en) | Cross process memory management | |
CN114741044B (zh) | 一种基于异构渲染的跨运行环境显示输出共享方法 | |
CN102063242A (zh) | 显示***及显示方法 | |
US10558496B2 (en) | Techniques for accessing a graphical processing unit memory by an application | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN113419845A (zh) | 计算加速方法和装置、计算***、电子设备及计算机可读存储介质 | |
CN118159951A (zh) | 一种处理请求的方法、装置及*** | |
CN116774933A (zh) | 存储设备的虚拟化处理方法、桥接设备、***及介质 | |
CN113886019B (zh) | 虚拟机创建方法、装置、***、介质和设备 | |
US10733689B2 (en) | Data processing | |
CN117312229B (zh) | 一种数据传输装置、数据处理设备、***、方法及介质 | |
CN110442389A (zh) | 一种多桌面环境共享使用gpu的方法 | |
US9984652B2 (en) | Topology and bandwidth management for IO and inbound AV | |
CN112698874B (zh) | 一种麒麟***中ast显卡和独立显卡同时显示的方法 | |
US7930445B2 (en) | Computer system using remote I/O and I/O data transfer method | |
CN103678244A (zh) | 一种不使用应用处理器的智能设备 | |
CN102999393B (zh) | 一种数据传输的方法、装置及电子设备 | |
GB2519640A (en) | Topology and bandwidth management for IO and inbound AV |
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 |