图形缓冲区的数据传输方法、电子设备及存储介质与流程

摘要: 本申请涉及计算机图形处理,具体地,提出了一种图形缓冲区的数据传输方法、电子设备及存储介质。背景技术:1、opengl(opengraphicslibrary,开...
图形缓冲区的数据传输方法、电子设备及存储介质与流程

本申请涉及计算机图形处理,具体地,提出了一种图形缓冲区的数据传输方法、电子设备及存储介质。

背景技术:

1、opengl(open graphics library,开放图形库)是一套跨平台、跨语言的图形渲染接口规范,由图形处理器厂商通过图形驱动程序实现。在opengl中,缓冲区(buffer)是存储空间中开辟的连续区域,用于存储顶点坐标、纹理坐标、索引及变量参数等渲染所需的结构化数据,是中央处理器与图形处理器之间传递数据的核心载体。缓冲区可创建于显存或主存:置于显存时,图形处理器可直接访问,中央处理器仅能通过跨pcie(peripheralcomponent interconnect express,高速外设组件互连)总线拷贝的方式修改;置于主存时,中央处理器可直接访问,图形处理器则需经pcie总线读取。受pcie通道传输效率影响,跨pcie操作的数据传输性能不足中央处理器直接访问主存性能的20%,减少跨pcie操作次数是提升缓冲区传输性能的关键。

2、相关技术中,图形驱动程序依据用户创建缓冲区时设置的使用提示决定缓冲区的归属位置。然而缓冲区使用频率并无统一规定,用户设置使用提示时存在主观性,当实际用法与使用提示不符时,例如用户将缓冲区设置为静态用法却在一个绘制周期内频繁修改其数据,图形驱动程序仍将缓冲区分配至本地显存,每次更新数据均需通过低效的pcie总线拷贝至显存,频繁的跨pcie拷贝严重降低了图形渲染效率,造成缓冲区的存储位置在创建时即依据使用提示固定,难以适应用户实际使用中的动态变化,导致跨pcie拷贝次数过多,制约了图形渲染性能的提升。

技术实现思路

1、本申请实施例提供一种图形缓冲区的数据传输方法、电子设备及存储介质,以至少部分的解决上述技术问题。

2、为了实现上述目的,根据本申请的第一方面,提供一种图形缓冲区的数据传输方法,包括:

3、响应于缓冲区创建请求,创建缓冲区对象,并为所述缓冲区对象分配识别标识;

4、响应于数据上传请求,在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,并将所述缓冲区对象的属性标记为已变更;

5、响应于绘制请求,在检测到所述缓冲区对象的属性被标记为已变更时,将所述第二存储空间中的数据经总线传输至所述第一存储空间,并清除所述缓冲区对象的已变更标记,其中,所述图形处理器基于所述第一存储空间中的数据进行图形绘制。

6、在一些实施例中,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,包括:

7、记录所述待上传数据的数据量大小;

8、在所述显存中开辟大小与所述数据量大小匹配的第一存储空间,并在所述主存中开辟大小与所述数据量大小匹配的第二存储空间;

9、将所述待上传数据自所述第二存储空间的起始地址起写入所述第二存储空间。

10、在一些实施例中,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,还包括:

11、验证所述显存中是否已开辟所述第一存储空间;

12、在所述显存中已开辟所述第一存储空间时,记录所述第一存储空间的总大小,并获取所述待上传数据的数据量大小和偏移量;

13、在所述数据量大小与所述偏移量之和大于所述总大小时,停止数据上传并输出错误提示;

14、在所述数据量大小与所述偏移量之和小于或等于所述总大小时,将所述待上传数据自所述第二存储空间的起始地址偏移所述偏移量的位置起写入所述第二存储空间。

15、在一些实施例中,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,还包括:

16、将所述第二存储空间映射为虚拟地址,以供用户程序直接读写;

17、响应于映射解除请求,停止映射,并将所述缓冲区对象的属性标记为已变更。

18、在一些实施例中,所述将所述第二存储空间中的数据经总线传输至所述第一存储空间,包括:

19、在所述第二存储空间的总大小大于预设阈值时,采用直接内存访问方式,将所述第二存储空间中的数据经所述总线传输至所述第一存储空间;

20、在所述第二存储空间的总大小小于或等于所述预设阈值时,采用内存拷贝方式,将所述第二存储空间中的数据经所述总线传输至所述第一存储空间。

21、在一些实施例中,所述方法还包括:

22、响应于缓冲区销毁请求,释放所述第一存储空间和所述第二存储空间。

23、在一些实施例中,所述方法还包括:

24、响应于缓冲区绑定请求,将所述缓冲区对象绑定为当前图形渲染状态中的缓冲区对象;

25、针对所述绑定的缓冲区对象执行数据上传操作或绘制操作。

26、在一些实施例中,所述缓冲区包括顶点缓冲区、索引缓冲区、颜色缓冲区、深度缓冲区、模板缓冲区中的至少一种。

27、第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够实现如上所述的方法。

28、第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机指令,所述计算机指令被处理器执行时实现如上所述的方法。

29、本申请实施例提供的图形缓冲区的数据传输方法,通过同时开辟主存空间和显存空间,将数据上传阶段的多次跨总线拷贝转化为多次中央处理器对主存空间的直接访问以及绘制前的一次跨总线拷贝,从而在图形处理器硬件无需新增额外功能的情况下,减少了缓冲区数据跨总线拷贝的次数,降低了缓冲区数据传输的总耗时,提高了图形渲染性能,具有较强的通用性。

30、本申请的其他特征和优点将在随后的具体实施方式部分予以详细说明。

1.一种图形缓冲区的数据传输方法,其特征在于,包括:

2.根据权利要求 1 所述的方法,其特征在于,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,包括:

3.根据权利要求 2 所述的方法,其特征在于,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,还包括:

4.根据权利要求 2 所述的方法,其特征在于,所述在图形处理器的显存中开辟第一存储空间,并在主存中开辟与所述第一存储空间大小匹配的第二存储空间,将待上传数据写入所述第二存储空间,还包括:

5.根据权利要求 1 所述的方法,其特征在于,所述将所述第二存储空间中的数据经总线传输至所述第一存储空间,包括:

6.根据权利要求 1 所述的方法,其特征在于,所述方法还包括:

7.根据权利要求 1 所述的方法,其特征在于,所述方法还包括:

8.根据权利要求 1 所述的方法,其特征在于,所述缓冲区包括顶点缓冲区、索引缓冲区、颜色缓冲区、深度缓冲区、模板缓冲区中的至少一种。

9.一种电子设备,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够实现如权利要求1至8中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1至8中任一项所述的方法。