本发明属于计算机应用开发,具体涉及一种基于多路视频编码的渲染差异比对方法。
背景技术:
1、当具有不同品牌、不同型号或不同驱动程序的gpu运行同一图形程序时,得到的图像渲染结果有可能不尽相同。因此测试gpu实现标准的正确性时就需要以现有成熟且稳定的gpu的渲染结果为基准,通过比较被测gpu的渲染结果与基准渲染结果的差异确定被测gpu的正确性。现有的比较方法,通常是将渲染结果转化为具有相同帧率的视频文件后,采用图像差异比较方法逐帧比较被测视频文件与基准视频文件来确定渲染结果的差异。由此可见,现有比较方法仅支持两个视频文件间的比较,也就是说同时仅能处理一个被测gpu,而且需要将渲染结果转换为视频文件进行保存,因此现有比较方法存在处理效率低的问题。
技术实现思路
1、有鉴于此,本发明提供了一种基于多路视频编码的渲染差异比对方法,实现了同时对多个被测gpu渲染结果的差异比对。
2、本发明提供的一种基于多路视频编码的渲染差异比对方法,包括以下步骤:
3、步骤1、将基准gpu及被测gpu均与测试系统相连,为被测gpu分配唯一的gpu编号,使基准gpu与被测gpu以相同的帧率同步执行图形测试程序,再逐帧同步从基准gpu及被测gpu读取渲染结果数据,同一时刻的渲染结果数据具有相同的帧编号,将从基准gpu读取的渲染结果数据记为基准渲染帧,将从被测gpu读取的渲染结果数据记为被测渲染帧;将基准渲染帧及被测渲染帧作为视频编码器的输入数据;
4、步骤2、以相邻基准渲染帧之间的待渲染顶点数据为基准顶点数据,以相邻被测渲染帧之间的待渲染顶点数据为被测顶点数据,将基准顶点数据及被测顶点数据均作为视频编码器的输入数据;
5、步骤3、视频编码器将接收到的基准渲染帧作为i帧的数据,将与基准渲染帧具有相同帧编号的被测渲染帧按gpu编号顺序作为与上述i帧对应的p帧的数据,结合基准顶点数据及被测顶点数据进行编码,编码形成的i帧中保存基准渲染帧,p帧保存被测gpu的当前渲染帧与基准渲染帧间的差异块信息;
6、步骤4、根据差异块信息获取其对应被测gpu的gpu编号,当差异块信息中的运动向量超过阈值或残差信息超过阈值时,则判定其对应被测gpu渲染错误。
7、进一步地,所述步骤1中所述将基准gpu及被测gpu均与测试系统相连的方式为:将基准gpu及被测gpu同时插在测试系统的物理接口上。
8、进一步地,所述步骤1中所述使基准gpu与被测gpu以相同的帧率同步执行图形测试程序,再逐帧同步从基准gpu及被测gpu读取渲染结果数据的方式为:
9、以相同帧率分别在基准gpu和被测gpu上运行图形测试程序,每个图形测试程序均分别以独立窗口显示,各独立窗口间互不覆盖,基准gpu对应的独立窗口记为基准窗口,被测gpu对应的独立窗口记为被测窗口;
10、获取基准窗口所对应显存区域的句柄,采用该句柄从显存访问基准窗口的内容;对于被测gpu,若提供了显存访问接口则采用显存访问接口获取被测窗口所对应显存区域的句柄再通过该句柄访问被测窗口的内容,否则获取被测窗口的framebuffer再通过framebuffer访问被测窗口的内容。
11、进一步地,所述基准顶点数据或被测顶点数据的获取方式为:通过hook基准gpu或被测gpu提供的图形接口的顶点生成api实现数据的获取。
12、进一步地,所述步骤4中运动向量的生成方式为:获取待测gpu绘制当前p帧的命令,解析命令参数获取命令相关的顶点,并从这些顶点中选取在i帧和当前p帧间的坐标差值大于阈值的顶点作为计算运动向量的关键点;再计算上述关键点从i帧到当前p帧的移动距离及方向,构成上述关键点的运动向量。
13、进一步地,所述步骤3中所述视频编码器将接收到的基准渲染帧作为i帧的数据,将与基准渲染帧具有相同帧编号的被测渲染帧按gpu编号顺序作为与上述i帧对应的p帧的数据,结合基准顶点数据及被测顶点数据进行编码之前,若基准渲染帧和被测渲染帧存储在显存则先将帧数据复制到内存,否则不做处理。
14、进一步地,所述差异块信息以可视化方式显示。
15、进一步地,所述以可视化方式显示的过程为:解码过程中对i帧执行正常解码和渲染操作,对p帧则仅将其与i帧合成差异块信息对应的区域作为关键区域,对关键区域执行正常解码及渲染操作,关键区域以外的区域均设置为纯色再执行渲染操作。
16、进一步地,所述步骤4还包括:输出残差信息对应的形状、亮度或颜色的具体坐标。
17、有益效果
18、本发明通过将基准gpu的渲染结果、被测gpu的渲染结果、基准顶点数据及被测顶点数据作为视频编码器的输入数据,再以基准gpu的渲染结果及被测gpu的渲染结果分别作为i帧和p帧的数据由视频编码器完成编码,根据编码后p帧中保存的差异块信息判断被测gpu渲染结果的正确性,实现了同时对多个被测gpu的渲染结果与基准渲染结果进行差异比对,且比对过程不依赖于将渲染结果保存为视频文件的操作,提高了渲染差异比对的处理效率。
1.一种基于多路视频编码的渲染差异比对方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的渲染差异比对方法,其特征在于,所述步骤1中所述将基准gpu及被测gpu均与测试系统相连的方式为:将基准gpu及被测gpu同时插在测试系统的物理接口上。
3.根据权利要求1所述的渲染差异比对方法,其特征在于,所述步骤1中所述使基准gpu与被测gpu以相同的帧率同步执行图形测试程序,再逐帧同步从基准gpu及被测gpu读取渲染结果数据的方式为:
4.根据权利要求1所述的渲染差异比对方法,其特征在于,所述基准顶点数据或被测顶点数据的获取方式为:通过hook基准gpu或被测gpu提供的图形接口的顶点生成api实现数据的获取。
5.根据权利要求1所述的渲染差异比对方法,其特征在于,所述步骤4中运动向量的生成方式为:获取待测gpu绘制当前p帧的命令,解析命令参数获取命令相关的顶点,并从这些顶点中选取在i帧和当前p帧间的坐标差值大于阈值的顶点作为计算运动向量的关键点;再计算上述关键点从i帧到当前p帧的移动距离及方向,构成上述关键点的运动向量。
6.根据权利要求1所述的渲染差异比对方法,其特征在于,所述步骤3中所述视频编码器将接收到的基准渲染帧作为i帧的数据,将与基准渲染帧具有相同帧编号的被测渲染帧按gpu编号顺序作为与上述i帧对应的p帧的数据,结合基准顶点数据及被测顶点数据进行编码之前,若基准渲染帧和被测渲染帧存储在显存则先将帧数据复制到内存,否则不做处理。
7.根据权利要求1所述的渲染差异比对方法,其特征在于,所述差异块信息以可视化方式显示。
8.根据权利要求7所述的渲染差异比对方法,其特征在于,所述以可视化方式显示的过程为:解码过程中对i帧执行正常解码和渲染操作,对p帧则仅将其与i帧合成差异块信息对应的区域作为关键区域,对关键区域执行正常解码及渲染操作,关键区域以外的区域均设置为纯色再执行渲染操作。
9.根据权利要求1所述的渲染差异比对方法,其特征在于,所述步骤4还包括:输出残差信息对应的形状、亮度或颜色的具体坐标。