(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211021379.5
(22)申请日 2022.08.24
(71)申请人 深圳中微电科技有限公司
地址 518000 广东省深圳市南 山区粤海街
道高新区社区高新南六道8号航盛科
技大厦14层
(72)发明人 陈杰坪 黎杰豪
(74)专利代理 机构 深圳市添源创鑫知识产权代
理有限公司 4 4855
专利代理师 周椿
(51)Int.Cl.
G06F 9/451(2018.01)
(54)发明名称
一种基于Linux系统的GPU 3D送显方法
(57)摘要
本发明涉及图像显示技术领域, 特别涉及一
种基于Linux系统的GPU 3D送显方法。 其方法包
括以下步骤: S1.KMS驱动初始化预先申请一个独
立硬件图层, 作为3D送显专用图层; S2.在3D复制
送显前, 获取送显像素图信息, 并直接把信息通
过自定义ioctl传递给KMS驱动; S3.KMS驱动通过
信息找到GEM对应的包括显存地址、 格式的信息,
并通过独立硬件图层显示出来, 完成送显。 本发
明不依赖窗口管理器的翻页 功能, 触发机制条件
简单; 不存在内存拷贝, 进 一步提供送显效率, 节
省GPU、 CPU资源; 更方便研发调试3D case结果,
当前对应内存存放内容纯case结果, 没有混杂其
他内容。
权利要求书1页 说明书3页 附图1页
CN 115357328 A
2022.11.18
CN 115357328 A
1.一种基于L inux系统的GPU 3D送显方法, 其特 征在于, 包括以下步骤:
S1.KMS驱动初始化预 先申请一个 独立硬件图层, 作为3D送显专用图层;
S2.在3D复制送显前, 获取送显像素图信息, 并直接把信息通过自定义ioctl传递给KMS
驱动;
S3.KMS驱动通过信息找到GEM对应的包括显存地址、 格式的信息, 并通过独立硬件图层
显示出来, 完成送显 。
2.根据权利要求1所述基于Linux系统的GPU 3D送显方法, 其特征在于, 所述步骤S2包
括:
S21.3D case创建bo时, 初始化bo和pixmap信息, 并缓存bo信息用于匹配;
S22.等待3D case渲染完成, 自动触发送显;
S23.判断送显bo和pixmap 是否为当前3D case内容, 同时判断KMS驱动是否支持独立
送显; 如果该bo是3d case生成的, 并且KMS驱动支持独立送显, 则执行步骤S24; 如果该bo不
是3d case生成的, 或者KMS驱动不支持独立送显, 则跳 到默认送显方式;
S24.获取当前bo信息, 包括gem handle、 宽度、 长度、 格式、 对齐方式;
S25.把信息整合成具体结构体, 通过自定义 ioctl给KMS发送信息 。
3.根据权利要求1所述基于Linux系统的GPU 3D送显方法, 其特征在于, 所述步骤S3包
括:
S31.KMS收到信息进行处理, 包括通过gem handle获取显存地址、 判断是否要重新裁
剪、 判断宽高是否正常;
S32.根据送显信息设置专用图层D P硬件寄存器, 进行3D图像显示, 完成送显 工作。
4.根据权利要求3所述基于Linux系统的GPU 3D送显方法, 其特征在于, 执行所述步骤
S3后, 还包括步骤:
S4.若步骤S31至S32正常执行动作, 则KMS判断送显成功, 把bo信息返回给Xserver
DDX。
5.根据权利要求 4所述基于L inux系统的GPU 3D送显方法, 其特 征在于, 还 包括步骤:
S5. Xserver DDX判断KMS返回信息是否成功, 如果成功, 直接返回, 送显完成; 如果失
败, 回退到默认方式送显 。
6.根据权利 要求2或5所述基于Linux系统的GPU 3D送显方法, 其特征在于, 送显的默认
方式包括以下步骤:
复制区域信息到scanout; 把所有需要合成图层遍历进行合成; 通过DRM进行跟KMS产生
送显请求, KMS设置通用图层D P硬件寄存器进行显示, 送显 完成。
7.根据权利要求6所述基于Linux系统的GPU 3D送显方法, 其特征在于, 默认方式送显
完成后, 返回步骤S2循环执 行下一周期。
8.根据权利要求3所述基于Linux系统的GPU 3D送显方法, 其特征在于, 所述步骤S32中
完成送显 工作后, 返回步骤S2循环执 行下一周期。权 利 要 求 书 1/1 页
2
CN 115357328 A
2一种基于Lin ux系统的GPU 3D送显方 法
技术领域
[0001]本发明涉及图像显示 技术领域, 特别涉及一种基于L inux系统的GPU 3D送显方法。
背景技术
[0002]目前linux GPU主要基于Xorg框架实现。 3D送显部分发展到现象依赖Xorg的DRI
(Direct_Renderin g_Infrastructure) 拓展实现, 目前已经发展到DRI3。 DRI、 DRI2、 DRI3都
是为了渲染送显各种问题而生, 特别是DRI2、 DRI3在窗口管理器实现了离屏像素图
(offscreen pixmaps)支持, 主要通过窗口管理器进行触发翻页(pageflip)解决图像撕裂
(tearing)问题, 其中会涉及到窗口合成、 像素图复制等过程。
[0003]其实目前Xorg 3D送显机制已经非常完善, 特别 DRI3技术的应用。 但有个问题 是前
提: 需要窗口管理器支持和配合, 而且翻页对象是整个屏幕像素图(scanout), 不能对单个
3D case窗口进行翻页。 而且对3D送显时会复制合成当前3D像素图到主屏幕像素图, 通过
Xorg和KMS一系列操作后, 最后把屏幕像素图进行统一送显 。
发明内容
[0004]本发明提供一种基于L inux系统的GPU 3D送显方法, 旨在提高GPU 3D送显效率。
[0005]本发明提供一种基于L inux系统的GPU 3D送显方法, 包括以下步骤:
S1.KMS驱动初始化预 先申请一个 独立硬件图层, 作为3D送显专用图层;
S2.在3D复制送显前, 获取送显像素图信息, 并直接把信息通过自定义ioctl传递
给KMS驱动; i octl为设备驱动程序中对设备的I/O通道进行 管理的函数;
S3.KMS驱动通过信息找到 GEM (Graphic s Execution Manager) 对应的包括显存地
址、 格式的信息, 并通过独立硬件图层显示出来, 完成送显 。
[0006]作为本发明的进一 步改进, 所述 步骤S2包括:
S21.3D case创建bo时, 初始化bo和pixmap信息, 并缓存bo信息用于匹配;
S22.等待3D case渲染完成, 自动触发送显;
S23.判断送显bo和pixmap 是否为当前3D case内容, 并且判断KMS驱动是否支持
独立送显; 如果该bo是3d case生成的, 并且 KMS驱动支持独立送显, 则执行步骤S24; 如果该
bo不是3d case生成的, 或者KMS驱动不支持独立送显, 则跳 到默认送显方式;
S24.获取当前bo信息, 包括gem handle、 宽度、 长度、 格式、 对齐方式;
S25.把信息整合成具体结构体, 通过自定义 ioctl给KMS发送信息;
3d case为3d 运行例子; 3d bo为3d buffer obj, 用以存放3d渲染完成后的图片
的内存对象, 为3d case 运行结果。
[0007]作为本发明的进一 步改进, 所述 步骤S3包括:
S31.KMS收到信息进行处理, 包括通过gem handle获取显存地址、 判断是否要重新
裁剪、 判断宽高是否正常;
S32.根据送显信息设置专用图层D P硬件寄存器, 进行3D图像显示, 完成送显 工作。说 明 书 1/3 页
3
CN 115357328 A
3
专利 一种基于Linux系统的GPU 3D送显方法
文档预览
中文文档
6 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共6页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:06:30上传分享