一种评价GPU性能的方法及装置与流程

文档序号:12464078阅读:245来源:国知局
一种评价GPU性能的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种评价GPU性能的方法及装置。



背景技术:

随着硬件技术的不断发展,GPU(图像处理器)强大的计算能力受到了越来越多的重视,相应的,对图形处理任务的读写效率要求也越来越高。当程序运行的指令运行在CPU(中央处理器)中时,只要上一条指令运行完,通常意义上就可以判定该任务执行完成,然后可以进行下面的任务。但是当所要执行的指令运行在GPU中时,在某种情况下通常需要明确运行在GPU中的指令或者任务是否完成,才能进行下面的操作。

现有技术中在GPU读取共享纹理的进程或者其它的D3D11设备绘制时容易造成画面闪烁或者黑屏的问题,因此如何对GPU性能进行评价至关重要。



技术实现要素:

本发明提供一种评价GPU性能的方法及装置,解决了如何对GPU性能进行评价的技术问题,达到了确定GPU性能评价参数的技术效果。

第一方面,本申请提供一种评价GPU性能的方法,所述方法包括:

在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;

当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间;

在绘制所述共享纹理后,将所述事件查询预设为完成状态;

判断所述事件查询是否为就绪状态;

若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;

根据连续获取的所述第三时间,确定GPU性能的评价参数。

优选的,所述在第一进程中预设共享纹理,具体包括:

初始化Direct3D11设备中D3D11_TEXTURE2D_DESC结构,通过Direct3D11设备指针接口ID3D11Device的CreateTexture2D方法预设ID3D11Texture2D纹理接口;

获取共享的纹理指针接口ID3D11Texture2D,通过接口ID3D11Texture2D的QueryInterface方法获取IDXGIResource接口;

通过获取到的IDXGIResource接口中的GetSharedHandle方法,获取句柄值sharedHandle。

优选的,所述当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,具体包括:

当第二进程需要读取绘制中的所述共享纹理时,通过ID3D11Device接口的CreateQuery方法,在所述第一进程中预设一个ID3D11Query接口,以预设一个事件查询。

优选的,所述在绘制所述共享纹理后,将所述事件查询预设为完成状态,具体为:

在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态。

优选的,所述判断所述事件查询是否为就绪状态,具体为:

通过ID3D11DeviceContext接口的GetData方法,判断GetData方法的返回值,以判断事件查询是否完成。

第二方面,本申请还提供一种评价GPU性能的装置,所述装置包括:

纹理设置单元,用于在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;

查询设置单元,用于当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间;

状态设置单元,用于在绘制所述共享纹理后,将所述事件查询预设为完成状态;

状态判断单元,用于判断所述事件查询是否为就绪状态;

状态确定单元,用于在所述状态判断单元判断结构为若是时,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;

性能评价单元,用于根据连续获取的所述第三时间,确定GPU性能的评价参数。

优选的,所述纹理设置单元中所述在第一进程中预设共享纹理,具体包括:

初始化Direct3D11设备中D3D11_TEXTURE2D_DESC结构,通过Direct3D11设备指针接口ID3D11Device的CreateTexture2D方法预设ID3D11Texture2D纹理接口;

获取共享的纹理指针接口ID3D11Texture2D,通过接口ID3D11Texture2D的QueryInterface方法获取IDXGIResource接口;

通过获取到的IDXGIResource接口中的GetSharedHandle方法,获取句柄值sharedHandle。

优选的,所述查询设置单元中所述当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,具体包括:

当第二进程需要读取绘制中的所述共享纹理时,通过ID3D11Device接口的CreateQuery方法,在所述第一进程中预设一个ID3D11Query接口,以预设一个事件查询。

优选的,所述状态设置单元中所述在绘制所述共享纹理后,将所述事件查询预设为完成状态,具体为:

在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态。

优选的,所述状态判断单元中所述判断所述事件查询是否为就绪状态,具体为:

通过ID3D11DeviceContext接口的GetData方法,判断GetData方法的返回值,以判断事件查询是否完成。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

1、本申请实施例提供的评价GPU性能的方法及装置,在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间,在所述共享纹理后,将所述事件查询预设为完成状态,判断所述事件查询是否为就绪状态;若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;通过对跨进程读取绘制中的共享纹理时,所述共享纹理完成绘制的时间进行统计并分析,以此来判断GPU性能。

2、本申请实施例提供的评价GPU性能的方法及装置,在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态(完成状态)。通过将事件查询预设为完成状态以使显卡驱动变成接管查询的状态控制,通过检测查询状态是否为就绪状态来判断绘制所述共享纹理是否完成。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种评价GPU性能的方法的流程图;

图2为本发明实施例中一种评价GPU性能的装置的结构示意图。

具体实施方式

本申请实施例通过提供一种评价GPU性能的方法及装置,解决了如何对GPU性能进行评价的技术问题,达到了确定GPU性能评价参数的技术效果。

本申请实施例中的技术方案,总体思路如下:

在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间;在绘制所述共享纹理后,将所述事件查询预设为完成状态;判断所述事件查询是否为就绪状态;若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;根据连续获取的所述第三时间,确定GPU性能的评价参数。

上述方法通过在所述第一进程中预设事件查询,获取预设所述事件查询的系统时间;在确定绘制完成后获取完成时的系统时间,根据连续获取完成时的系统时间和预设事件查询的系统时间来确定GPU性能的评价参数,通过对GPU性能的评价解决了读取共享纹理的进程或者其它的D3D11设备绘制时容易造成画面闪烁或者黑屏的问题。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本申请提供一种评价GPU性能的方法,请参阅图1,所述判断方法包括:

步骤S110,在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;

步骤S120,当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间;

步骤S130,在绘制所述共享纹理后,将所述事件查询预设为完成状态;

步骤S140,判断所述事件查询是否为就绪状态;

步骤S150,若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;

步骤S150,根据连续获取的所述第三时间,确定GPU性能的评价参数。

需要说明的是本方法适用于所有Windows系统,特别是WindowsVista系统及之后的版本。

所述方法应用于Direct3D11中,因此,所述方法的具体实施方式是基于Direct3D11中的接口或方法,但是上述方法不局限于Direct3D11中。

下面结合图1,对本申请提供的评价GPU性能的方法进行详细介绍:

首先,执行步骤S110,当需要纹理读写同步时,在第一进程中预设一共享纹理。

在本申请实例中,所述步骤S110中,所述在第一进程中预设共享纹理,具体包括:

当需要纹理读写同步时,初始化Direct3D11设备中D3D11_TEXTURE2D_DESC结构,通过Direct3D11设备指针接口ID3D11Device的CreateTexture2D方法预设ID3D11Texture2D纹理接口;

获取共享的纹理指针接口ID3D11Texture2D,通过接口ID3D11Texture2D的QueryInterface方法获取IDXGIResource接口;

通过获取到的IDXGIResource接口中的GetSharedHandle方法,获取句柄值sharedHandle,这样在第一进程中获得一个共享的Direct3D11纹理。在其他进程中可以通过设置句柄值sharedHandle来打开所述共享纹理。

其中,初始化Direct3D11设备中D3D11_TEXTURE2D_DESC结构,具体为按预设值设置D3D11_TEXTURE2D_DESC结构中的相关属性,并将D3D11_RESOURCE_MISC_SHARED值赋值给该结构的MiscFlags属性。

在本申请实例中,所述步骤S110中,将所述共享纹理设置为渲染目标,以进行绘制,具体包括:

通过ID3D11DeviceContext接口的OMSetRenderTargets方法,将所述共享纹理设置成一个渲染目标,然后利用相关的绘制方法,在所述共享纹理上绘制图像。

再来,执行步骤S120,当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间。

所述步骤S120,所述当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间,具体包括:

当第二进程需要读取绘制中的所述共享纹理时,通过ID3D11Device接口的CreateQuery方法,在所述第一进程中预设一个ID3D11Query接口,以预设一个事件查询,并记录预设所述事件查询时的系统时间为第一时间timeStart。

具体的,当第二进程需要读取绘制中的所述共享纹理时,在第一进程中通过ID3D11Device接口的CreateQuery方法将查询的类型设置为D3D11_QUERY_EVENT来预设一个ID3D11Query接口,以预设一个事件查询,并记录预设所述事件查询时的系统时间为第一时间timeStart。

需要说明的是,事件查询Query包括3种状态:

(1)就绪状态(Signaled State):像是一个空闲的状态。查询对象已经生成,判断应用程序来完成此次查询。当查询结束,查询状态转变为就绪状态时,就可以获取到查询结果了。

(2)预设状态(Building State):像是一个暂存区域。在预设状态,查询已经被发起(通过调用D3DISSUE_BEGIN),但还没有转换到完成状态。当应用程序申明查询结束(通过调用D3DISSUE_END),查询便转换到了完成状态。

(3)完成状态(Issued State):表示被查询的资源已经接管了查询。当资源完成工作后,会将状态机转换到就绪状态。在完成阶段,应用程序必须判断是否已经转变成就绪状态,如果是就绪状态,那么GetData返回的就是需要的查询结果了。

再来,执行步骤S130,在绘制所述共享纹理后,将所述事件查询预设为完成状态;

具体来讲,所述在绘制所述共享纹理后,将所述事件查询预设为完成状态,具体包括:

在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态(完成状态)。通过将事件查询预设为完成状态以使显卡驱动变成接管查询的状态控制。

再来,执行步骤S140,判断所述事件查询是否为就绪状态。

通过步骤S140将查询设置成完成状态后,第一进程需要等待查询事件是否完成,如果完成,那么共享纹理的绘制操作也就完成了,第二进程就可以正确的读取到所述共享纹理的图像。而显卡驱动接管查询的状态控制后,当资源完成工作后,会将状态转换到就绪状态,通过应用程序检测是否已经转变成就绪状态来判断查询事件是否完成,所述共享纹理的绘制操作是否完成。

所以,具体来讲,所述判断所述事件查询是否为就绪状态,具体为:

通过ID3D11DeviceContext接口的GetData方法,判断GetData方法的返回值,以判断事件查询是否完成。

当GetData方法的返回值为S_FALSE(错误),表示该查询事件还没有完成共享纹理还处于绘制过程中,第一进程仍需继续等待并再次调用GetData方法;如果GetData方法的返回值为S_OK(正确),表示该查询事件完成并且共享纹理的绘制操作也已经完成,第一进程则可以退出等待,第二进程可以读取到共享纹理的正确图像。

再来,执行步骤S150,若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间。

具体来讲,所述步骤S150,若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间,具体为:

当ID3D11DeviceContext接口的GetData方法的返回值为正确S_OK,表示该查询事件完成并且共享纹理的绘制操作也已经完成,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间timeEnd,GPU中所述共享纹理的绘制所消耗的总时间第三时间为t=timeEnd–timeStart。

最后,执行步骤S160,根据连续获取的第三时间,确定GPU性能的评价参数。

所述步骤S160,根据连续获取的第三时间,确定GPU性能的评价参数,具体包括:

通过连续的对绘制共享纹理所消耗的GPU时间进行采样分析,从而可以对当前进程的GPU性能消耗进行评测。

当第三时间值越大时,代表GPU绘制完一张纹理所消耗的时间越长,GPU性能也就也差,当第三时间值越小时,代表GPU绘制完一张纹理所消耗的时间也就越短,GPU性能也就越优良。

本申请通过连续获取在GPU中跨进程对纹理绘制完成时间,来解决如何确定GPU性能的评价参数,并通过计算纹理绘制完成时的系统时间与预设查询的系统时间的差值作为评价参数,来对GPU性能进行评价,解决了跨进程读取绘制中的共享纹理时容易造成画面闪烁或者黑屏的问题的技术问题,达到了实现对GPU性能进行评价的技术效果。

基于同样的发明构思,本申请还提供一种评价GPU性能的装置,所述装置解决了跨进程读取绘制中的共享纹理时容易造成画面闪烁或者黑屏的问题的技术问题,达到了实现对GPU性能进行评价的技术效果,详见实施例二。

实施例二

基于同样的发明构思,本申请还提供一种评价GPU性能的装置,请参阅图2,所述装置包括:

纹理设置单元210,用于在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;

查询设置单元220,用于当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间;

状态设置单元230,用于在绘制所述共享纹理后,将所述事件查询预设为完成状态;

状态判断单元240,用于判断所述事件查询是否为就绪状态;

状态确定单元250,用于在所述状态判断单元判断结构为若是时,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;

性能评价单元260,用于根据连续获取的所述第三时间,确定GPU性能的评价参数。

其中,所述纹理设置单元210中所述在第一进程中预设共享纹理,具体包括:

初始化Direct3D11设备中D3D11_TEXTURE2D_DESC结构,通过Direct3D11设备指针接口ID3D11Device的CreateTexture2D方法预设ID3D11Texture2D纹理接口;

获取共享的纹理指针接口ID3D11Texture2D,通过接口ID3D11Texture2D的QueryInterface方法获取IDXGIResource接口;

通过获取到的IDXGIResource接口中的GetSharedHandle方法,获取句柄值sharedHandle。

所述查询设置单元220中所述当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,具体包括:

当第二进程需要读取绘制中的所述共享纹理时,通过ID3D11Device接口的CreateQuery方法,在所述第一进程中预设一个ID3D11Query接口,以预设一个事件查询。

所述状态设置单元230中所述在绘制所述共享纹理后,将所述事件查询预设为完成状态,具体为:

在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态。

所述状态判断单元240中所述判断所述事件查询是否为就绪状态,具体为:

通过ID3D11DeviceContext接口的GetData方法,判断GetData方法的返回值,以判断事件查询是否完成。

本实施例二所介绍的装置为本申请实施例一中一种评价GPU性能的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

1、本申请实施例提供的评价GPU性能的方法及装置,在第一进程中预设共享纹理,并将所述共享纹理设置为渲染目标,以进行绘制;当第二进程需要读取绘制中的所述共享纹理时,在所述第一进程中预设事件查询,获取预设所述事件查询的时间为第一时间,在所述共享纹理后,将所述事件查询预设为完成状态,判断所述事件查询是否为就绪状态;若是,则确定所述共享纹理绘制已完成,获取完成时的系统时间为第二时间,将所述第二时间与所述第一时间的差值记为第三时间;通过对跨进程读取绘制中的共享纹理时,所述共享纹理完成绘制的时间进行统计并分析,以此来判断GPU性能。

2、本申请实施例提供的评价GPU性能的方法及装置,在绘制所述共享纹理后,通过ID3D11DeviceContext接口的End方法将所述事件查询设置成D3DISSUE_END状态(完成状态)。通过将事件查询预设为完成状态以使显卡驱动变成接管查询的状态控制,通过检测查询状态是否为就绪状态来判断绘制所述共享纹理是否完成。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1