CN116185743B - OpenGL接口的双显卡对比调试方法、装置及介质 - Google Patents
OpenGL接口的双显卡对比调试方法、装置及介质 Download PDFInfo
- Publication number
- CN116185743B CN116185743B CN202310448235.6A CN202310448235A CN116185743B CN 116185743 B CN116185743 B CN 116185743B CN 202310448235 A CN202310448235 A CN 202310448235A CN 116185743 B CN116185743 B CN 116185743B
- Authority
- CN
- China
- Prior art keywords
- function
- display card
- opengl
- rendering result
- opengl interface
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000009977 dual effect Effects 0.000 title claims abstract description 27
- 238000009877 rendering Methods 0.000 claims abstract description 126
- 238000012360 testing method Methods 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 39
- 238000011068 loading method Methods 0.000 claims abstract description 38
- 230000006870 function Effects 0.000 claims description 138
- 238000004458 analytical method Methods 0.000 claims description 29
- 230000001360 synchronised effect Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 abstract description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 14
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 4
- 230000009191 jumping Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 101150026195 hook gene Proteins 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2247—Verification or detection of system hardware configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2268—Logging of test results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种OpenGL接口的双显卡对比调试方法、装置及介质,该方法可以包括:应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性,能够同时观察基准显卡和测试显卡的渲染结果在一段时间内的动态变化以及在同时回放的过程中做同步对比分析,提升了渲染结果对比分析的效率。
Description
技术领域
本发明实施例涉及计算机图形信号的软件处理技术领域,尤其涉及一种OpenGL接口的双显卡对比调试方法、装置及介质。
背景技术
在计算机图形领域中,开放式图形库(Open Graphics Library,OpenGL)是处理2D/3D图形的最为广泛接纳的图形应用程序编程接口(Application ProgrammingInterface,API),在显卡厂商或者软件厂商开发OpenGL驱动的过程中,经常需要在同一台机器上安装两个显卡,一个基准显卡和一个测试显卡,所述基准显卡被默认为渲染结果是准确的,然后对基准显卡的OpenGL驱动和测试显卡的OpenGL驱动做对比调试与分析,以便发现测试显卡OpenGL驱动的问题。
目前公开的做法是:使用计算机系统的HOOK技术截取OpenGL接口的调用,在调用真实的OpenGL驱动之前或者之后记录当前OpenGL接口的函数名称和上下文数据,所有OpenGL接口的调用按顺序记录到本地Trace文件中。然后调整当前系统的OpenGL环境为基准显卡的OpenGL驱动,使用Trace文件在基准显卡上按顺序回放OpenGL接口的调用并记录回放结果,然后再次改变当前系统的OpenGL环境为测试显卡的OpenGL驱动,使用Trace文件在测试显卡上按顺序回放OpenGL接口的调用并记录回放结果,最后将基准显卡的回放结果和测试显卡的回放结果做对比分析。这种做法有以下缺陷:执行过程比较繁琐,需要先在一个显卡上回放,切换OpenGL环境,再在另一个显卡上回放,而不能在两个显卡上同时回放。另外,如果想知道两个显卡的对比结果,必须等第一个回放完,在第二个回放的时候才能做对比,而不能在两个显卡上同时回放的过程中做同步对比分析,并且不能同时观察到两个显卡的渲染结果在一段时间内的动态变化。
发明内容
有鉴于此,本发明实施例期望提供一种OpenGL接口的双显卡对比调试方法、装置及介质,能够同时观察基准显卡和测试显卡的渲染结果在一段时间内的动态变化以及在同时回放的过程中做同步对比分析,提升了渲染结果对比分析的效率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种OpenGL接口的双显卡对比调试方法,包括:
应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性。
第二方面,本发明实施例提供一种OpenGL接口的双显卡对比调试装置,所述调试装置包括:记录部分、生成部分以及对比部分;其中,
所述记录部分,经配置为应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
所述生成部分,经配置为加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
所述对比部分,经配置为将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性。
第三方面,本发明实施例提供了一种计算设备,所述计算设备包括:通信接口,存储器和处理器;各个组件通过总线系统耦合在一起;其中,
所述通信接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行第一方面所述OpenGL接口的双显卡对比调试方法的步骤。
第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有OpenGL接口的双显卡对比调试的程序,所述OpenGL接口的双显卡对比调试的程序被至少一个处理器执行时实现第一方面所述OpenGL接口的双显卡对比调试方法的步骤。
本发明实施例提供了一种OpenGL接口的双显卡对比调试方法、装置及介质,通过在应用程序执行过程中,将OpenGL接口的调用函数和上下文数据以生成Trace文件,同时在基准显卡和被测显卡上回放所述Trace文件以生成相应的渲染结果,将所述渲染结果进行实时对比分析,可以同时观察两个显卡的渲染结果在一段时间内的动态变化以及在同时回放的过程中做同步对比分析,减少了不断切换OpenGL环境的繁琐过程,提升了渲染结果对比分析的效率。
附图说明
图1为本发明实施例提供的计算机系统组成示意图;
图2为说明图1中的CPU、GPU和存储器的实例实施方案的框图;
图3为本发明实施例提供的OpenGL接口的双显卡对比调试方法流程图;
图4为本发明实施例提供的一种OpenGL接口的双显卡对比调试方法的模块结构图;
图5为本发明实施例提供的一种OpenGL接口的双显卡对比调试方法的详细流程图;
图6为本发明实施例提供的一种OpenGL接口的双显卡对比调试装置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了能够实现本发明实施例技术方案的计算机系统组成100,需注意,图示的系统是可能的系统的仅一个示例,并且可根据需要在各种系统中的任一系统中实现本发明的实施方案。该计算机系统组成100具体可以为任意类型的计算装置,包括且不限于台式计算机、服务器、工作站、膝上计算机、基于计算机的仿真器、无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等。如图1所示,计算机系统组成100可以包括中央处理器(Central Processing Unit,CPU)10、显卡A和显卡B的图形处理器(GraphicProcessing Unit,GPU)20和GPU21、存储器30,还包括显示处理器40、显示器41以及通信接口50(未示出)。显示处理器40可为与GPU 20或GPU 21相同的集成电路(IntegratedCircuit,IC)的部分,也可在包含GPU 20或GPU21的一或多个IC的外部,或可形成于在包含GPU 20或GPU21的IC外部的IC中。
具体来说,CPU 10可包括控制计算机系统组成100运算的通用或专用处理器,其经配置以处理供执行的计算机程序的指令。用户可经由通信接口50(未示出)与耦合到计算机系统组成100的另一输入装置(未图示)例如:轨迹球、键盘、鼠标、麦克风、触摸垫、触摸屏以及其他类型的装置,例如交换机接口,将输入提供给计算机系统组成100中的CPU 10,以使得CPU 10执行一或多个软件应用程序的指令。在CPU 10上执行的应用程序可包括图形用户接口(Graphic User Interface,GUI)应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序或使用2D、3D图形的渲染应用程序等,本发明实施例以执行图形渲染应用程序为例。此外,CPU 10上执行的渲染应用程序可包含一或多个图形渲染指令(也可以理解为待渲染的画面帧中包含一或多个所述图形),所述图形渲染指令可符合图形应用程序编程接口(Application Programming Interface,API),例如,开放式图形库API(OpenGL API)、开放式图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API、开放式计算语言(OpenCLTM)、RenderScript或任何其它异构计算API,或任何其它公用或专有标准图形或计算API,本发明下面的描述中将以OpenGL API为例进行说明。
在本发明实施例中将显卡A设定为是基准显卡,将显卡B设定为测试显卡,所述显卡A包括GPU 20、显卡B包括GPU 21,所述GPU 20或GPU 21可经配置以执行图形运算,从而将一或多个图形图元渲染到显示器41进行展示。可以理解为CPU 10通过控制GPU驱动程序14,将渲染指令翻译为GPU 20或GPU 21可读的渲染命令,然后GPU 20或GPU21根据收到的一或多个图形渲染命令,包括但不限于图形命令和图形数据,所述图形数据可包含绘制命令、状态信息、图元信息、纹理信息等,以使得GPU 20或GPU 21执行所述图形渲染命令中的一些或者全部,从而将一或多个图形图元进行渲染并在显示器41上展示出来。在一些情况下,GPU20或GPU21可内置有高度并行结构,其提供比CPU 10高效的对复杂图形相关运算的处理。举例来说,GPU 20或GPU 21可包含经配置来以并行方式对多个顶点或像素进行运算的多个处理元件。在一些情况下,GPU20或GPU 21的高度并行性质允许GPU 20或GPU 21比使用CPU10更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器41上。在一些情况下,可将GPU 20或GPU 21集成到目标设备的母板中。在其它情况下,GPU 20或GPU 21可存在于图形卡上,所述图形卡安装在目标设备的母板中的端口中,或可以其它方式并入在经配置以与目标设备互操作的外围装置内。GPU20或GPU 21可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 20或GPU 21还可包含一或多个处理器核心,使得GPU20或GPU 21可被称作多核处理器。
存储器30,经配置用于存储能够在CPU 10上运行的应用程序指令、GPU 20和GPU21执行需要的图形数据以及其运行结果数据。例如,GPU 20或GPU 21可将完全形成的图像存储在存储器30中。存储器30可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。显示处理器40可从存储器30检索图像且输出使显示器41的像素照亮以显示所述图像的值。显示器41可为计算机系统100的显示器,其显示由GPU 20或GPU 21产生的图形图像内容。显示器41可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
结合图1所示,图2进一步阐述计算机系统组成100中的关键部件CPU 10、GPU 20和/或GPU 21和存储器30的实施方案的框图200,如图2所示,本发明实施例的实施方案的框图200主要包括但不限于CPU 10、GPU 20或GPU21、存储器30及其对应内部构成。其中,CPU10包含应用程序11、图形API13、GPU驱动程序14,其中图形API 13和GPU驱动程序14两者中的每一个,可以为一或多个应用程序服务,在一些示例中,图形API 13和GPU驱动程序14可实施为CPU 10的硬件单元,而GPU驱动程序14包括显卡A驱动15和显卡B驱动16,其可以将CPU 10的一或多个图形渲染指令编译成GPU 20和GPU 21可执行的应用程序命令。GPU 20或GPU 21内部结构包括但不限于图形存储器22、处理器集群23。在本发明实施例中,图形存储器22可为GPU 20或GPU 21的一部分。因此,GPU 20或GPU 21可在不使用总线的情况下从图形存储器22读取数据且将数据写入到图形存储器22。换句话说,GPU 20或GPU 21可使用本地存储装置而不是芯片外存储器在本地处理数据,此类图形存储器22可被称作芯片上存储器。这允许GPU 20或GPU21通过消除GPU 20或GPU 21经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。在一些示例中,GPU20或GPU21可不包含单独的存储器,而是经由总线利用外置的存储器30。图形存储器22的类型参见前述存储器30的类型,此处不再赘述。处理器集群23,用于执行图形处理管线,以便对图形渲染命令进行解码,并对图形处理管线进行配置以执行图形渲染命令中所指定的操作。存储器30可包含系统存储器31和帧缓存32。其中,帧缓存32可为系统存储器31的部分或可与系统存储器31分离。帧缓存32也被称为显存或内存,可存储渲染图像数据,例如像素数据,其具体存储的数据为每个像素的红色、绿色、蓝色、α(RGBA)分量,其中“RGB”分量对应于色彩值,并且“A”分量对应于目的地α值(例如,用于图像合成的不透明度值)。在一些示例中,所述帧缓存32还可被称为帧缓冲器(Frame buffer)或输出缓冲器,用于预览所述画面帧的渲染效果,也可以理解为预览所述画面帧的渲染效果可以通过Frame buffer机制实现,帧缓冲器是内核空间中的一种驱动程序接口,它本身不具备任何运算数据的能力,中间不会对数据做处理,但其需要真的显卡驱动的支持。
基于上述内容的阐述以及目前公开的定位测试显卡OpenGL驱动问题的方法,通过HOOK技术截取OpenGL接口的调用,在调用真实的OpenGL驱动之前或者之后记录当前OpenGL接口的函数名称和上下文数据,所有OpenGL接口的调用按顺序记录到本地Trace文件中,然后调整当前系统的OpenGL环境为基准显卡的OpenGL驱动,使用Trace文件在基准显卡上按顺序回放OpenGL接口的调用并记录回放结果,然后再次改变当前系统的OpenGL环境为测试显卡的OpenGL驱动,使用Trace文件在测试显卡上按顺序回放OpenGL接口的调用并记录回放结果,最后将基准显卡的回放结果和测试显卡的回放结果做对比分析,所述方法只能在基准显卡或测试显卡上回放完成后进行对比分析,不能在所述基准显卡和测试显卡上同时回放并且也不能在回放过程中做同步对比分析,因此,无法同时观察两个显卡的渲染结果以及在一段时间内的动态变化,基于此,参见图3,本发明实施例提供了一种OpenGL接口的双显卡对比调试方法,该方法包括:
S301:应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
S302:加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
S303:将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性。
根据上述方案的描述,本发明实施例通过采用在应用程序执行过程中,将OpenGL接口的调用函数和上下文数据以生成Trace文件,同时在基准显卡和被测显卡上回放所述Trace文件以生成相应的渲染结果,将所述渲染结果进行实时对比分析,可以同时观察两个显卡的渲染结果在一段时间内的动态变化以及在同时回放的过程中做同步对比分析,减少了不断切换OpenGL环境的繁琐过程,提升了渲染结果对比分析的效率。
需要说明的是,所述通过HOOK技术截取OpenGL接口的调用,如图2所示虚线框所示的HOOK模块12,应用程序在执行过程中,可以直接调用通过HOOK模块12截取的OpenGL接口的调用函数和上下文数据(虚线箭头)并通过图形API 13 调用真实的图形API函数(实线箭头所示),然后将所述截取的OpenGL接口的调用函数和上下文数据,按顺序记录写入Trace文件。
针对图3所示的技术方案,在一些可能的实现方式中,所述应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件,包括:
应用程序执行过程中,采用HOOK截取OpenGL接口的函数调用;
按顺序记录所有调用所述OpenGL接口的函数名称和上下文数据并生成Trace文件。
对于上述实现方式,具体来说,通过HOOK技术截获并记录需要调试的OpenGL应用程序的函数调用,所述函数调用包括所有调用OpenGL接口的函数名称和上下文数据,按规定格式保存为本地的Trace文件。所述HOOK,也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子,即HOOK。
针对图3所示的技术方案,在一些可能的实现方式中,所述加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果,包括:
加载OpenGL环境并将基准显卡和测试显卡的OpenGL接口函数装载到相应的上下文;
加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡以生成第一渲染结果和相应OpenGL接口的返回状态;
将所述函数的调用数据同步在被测显卡上执行以生成第二渲染结果和相应OpenGL接口的返回状态。
对于上述实现方式,在一些示例中,所述加载OpenGL环境并将基准显卡和测试显卡的OpenGL接口函数装载到相应的上下文,具体来说,在所述Trace文件回放前,需要优先加载基准显卡和测试显卡的OpenGL环境,所述加载OpenGL环境即为调用OpenGL接口库,通常采用加载系统环境变量中找到的OpenGL库及其头文件。由于环境变量中只能找到一个同名动态库并且两个显卡的OpenGL接口都是相同的名称会造成冲突,所以此方法不能同时使用基准显卡和测试显卡的OpenGL库并且在双显卡回放模块中不能直接使用OpenGL接口。基于此,本发明实施例采用首先定义一个结构体类型GLContext,该类型的成员变量为所有OpenGL接口对应的函数指针,然后使用该类型定义contextA变量做为显卡A的OpenGL接口集,定义contextB作为做显卡B的OpenGL接口集。该过程的示例代码如下所示:
typedef void (*PFN_GLACCUM)(Glenum op.GLfloat value);
typedef void (*PFN_GLACTIVETEXTURE)(Glenumtexture);
typedef void (*PFN_BEGIN)(Glenum mode);
...
typedef struct GLContext {
PFN_GLACCUM glAccum;
PFN_GLACTIVETEXTURE glActive Texture;
PFN_BEGIN glBegin;
...
}GLContext;
GLContext contextA;
GLContext contextB;
上述过程完成后,接着使用计算机系统动态库的动态加载方法,分别装载显卡A的OpenGL接口函数到contextA中,装载显卡B的OpenGL接口函数到contextB中。假设显卡A安装的OpenGL驱动的路径为pathA,显卡B安装的OpenGL驱动的路径为pathB,以Linux为例来说明显卡A和显卡B的装载过程,所述显卡A的动态装载OpenGL接口函数的具体操作步骤为:
步骤1:打开一个动态链接库,设定OpenGL驱动的路径为pathA,解析方式为RTLD_LAZY,作用范围为RTLD_LOCAL,代码实现示例:
handle = dlopen(pathA,RTLD_LAZY | RTLD_LOCAL)
需要说明的是,dlopen函数是一个计算机函数,功能是以指定模式打开指定的动态链接库文件并返回一个句柄给dlsym函数的调用。RTLD_LAZY表示为解析方式,在dlopen返回前,对于动态链接库中的未定义的符号不执行解析,只对函数引用有效,对于变量引用总是立即解析;RTLD_LOCAL表示作用范围,动态链接库中定义的符号不能被其后打开的其它库重定位,如果没有指明是RTLD_GLOBAL还是RTLD_LOCAL,则缺省为RTLD_LOCAL。
步骤2:获取OpenGL接口函数glXGetProcAddressARB的地址,代码实现示例为:
getAddress = dlsym(handle,“glXGetProcAddressARB”)
当动态链接库被装入后,可以把 dlopen函数返回的句柄作为给 dlsym函数的第一个参数,以获得符号在所述动态链接库中的地址。使用所述地址,就可以调用符号对应的函数。
步骤3:获取并记录OpenGL接口函数地址,完成OpenGL函数集的装载,代码实现示例为:
contextA.glAccum = getAddress(“glAccum”)
contextA.glActiveTexture = getAddress(“glActiveTexture”)
contextA.glBegin = getAddress(“glBegin”)
...
根据上述内容的阐述,显卡B的动态装载OpenGL接口函数具体代码的实现与所述显卡A的动态装载OpenGL接口函数的过程基本相同,不同点在于显卡B安装的OpenGL驱动的路径为pathB,对应的上下文为contextB,此处不再赘述。
基于上述内容的阐述,显卡A和显卡B的OpenGL接口装载完成后,如果要使用显卡A的OpenGL接口就调用contextA中对应的接口,如果要使用显卡B的接口则调用contextB中对应的接口。具体实施方式为,例如要调用显卡A的glBegin接口函数,则需要换成contextA.glBegin,要调用显卡B的glBegin接口函数,则需要换成contextB.glBegin,这样就可以同时调用两个显卡的OpenGL接口了。
对于上述实现方式,在一些示例中,所述加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡以生成第一渲染结果和相应OpenGL接口的返回状态,包括:
将所述Trace文件中的数据,通过Trace记录模块解析为函数的调用数据;
将所述函数的调用数据分发给基准显卡执行,以生成第一渲染结果以及每个函数的OpenGL接口的返回状态。
对于上述示例,具体来说,参见图4,其示出了为本发明实施例提供的一种OpenGL接口的双显卡对比调试方法的模块结构图,所述模块结构图主要包括Trace记录模块、双显卡回放模块以及结果对比与分析模块,其中,所述Trace记录模块主要负责截获并记录需要调试的OpenGL应用程序的调用函数及上下文数据,按规定格式保存为本地的Trace文件以及将所述Trace文件数据解析为函数的调用数据;所述双显卡回放模块主要负责显卡A与显卡B的OpenGL驱动的加载,实现显卡A与显卡B的OpenGL接口装载并执行在两个显卡上的回放的调用过程。
在应用程序调用任何OpenGL的指令之前,需要首先创建一个OpenGL的上下文,例如对应于显卡A的Context A和显卡B的Context B;在应用程序执行时,基于现有技术中OpenGL的应用程序调用方式,CPU 10将应用程序11经由图形API13向显卡A驱动或显卡B驱动发出指令,显卡A驱动或显卡B驱动可调配指定供GPU 20和GPU 21执行的一或多个运算以便渲染图元的一或多个命令,以用于将一或多个图形图元渲染到可显示的图形图像中。
所述结果对比与分析模块主要负责获取每个函数在显卡A和显卡B上回放调用的OpenGL接口的返回状态、渲染结果以及显卡的其他信息,自动对所述OpenGL接口的返回状态和渲染结果做对比分析,如果两者的对比结果不一致,则会暂停回放并给出提示以及显示调试数据信息。
需要说明的是,所述OpenGL的上下文是一个非常庞大的状态机,保存了OpenGL中的各种状态以及存储的函数调用次序、函数调用参数次序、引入的着色器程序、顶点缓冲对象(Vertex Buffer Object,VBO)、顶点数组对象(VertexArray Object,VAO)等数据,这些数据也是OpenGL指令执行的基础。一个是进程可以创建多个上下文,它们可以分别描绘出不同的图形界面,就像一个应用程序可以打开多个窗口一样。每个OpenGL的上下文是相互独立的,它们都有自己的OpenGL对象集。但有时会有场景需要多个上下文使用同一份纹理资源的情况,创建上下文意味着系统资源的占用,同一份纹理重复申请会造成资源浪费,因此OpenGL上下文允许共享一部分资源,大部分OpenGL Objects是可以共享的,包括SyncObject和OpenGL着色语言(OpenGL Shading Language,GLSL)的GLSL Objects,例如纹理、Shader、Buffer等资源是可以共享的,可以在上下文创建时指定为共享上下文;但是Container Objects和Query Objects是不能共享的,例如Frame Buffer Object(FBO)、VAO等容器对象不可共享,但可将共享的纹理和VBO绑定到各自上下文的容器对象上。
针对图3所示的技术方案,在一些可能的实现方式中,所述将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性,包括:
获取在基准显卡和测试显卡上基于Trace文件同步回放生成的第一渲染结果和第二渲染结果以及回放调用的OpenGL接口的每个函数的返回状态;
自动对比所述第一渲染结果和第二渲染结果以及相应OpenGL接口的每个函数的返回状态;
如果对比结果不一致,则暂停回放并给出提示以及显示调试数据信息,以用于渲染结果故障的分析和调试。
对于上述实现方式,具体来说,采用所述结果对比与分析模块获取每个函数在显卡A和显卡B上回放调用的OpenGL接口的返回状态、渲染结果以及显卡的其他信息,自动对所述OpenGL接口的返回状态和渲染结果做对比分析,如果两者的对比结果不一致,则会暂停回放并给出提示以及显示调试数据信息。
需要说明的是,基准显卡也可以称之为参照显卡,在基准显卡上渲染的图像可以认为是正确的,把其作为参照显卡,用于判断测试显卡渲染的图像是否正确。在一些示例中,所述获取在基准显卡和测试显卡上回放调用的OpenGL接口的每个函数的返回状态,其中,所述返回状态包括OpenGL的状态机信息或测试显卡的私有信息,具体来说,所述返回状态可以是显卡全局总量、当前使用大小、当前视口描述符地址、视口大小、视口深度、帧缓冲个数、帧缓冲尺寸大小等信息。
针对图3所示技术方案的描述,参见图5,其示出了本发明实施例提供的一种OpenGL接口的双显卡对比调试方法的详细流程图500,在所述详细流程图500中,首先启动本设备,打开目标OpenGL应用程序,OpenGL应用程序运行过程中,通过Trace记录模块按顺序记录所有调用OpenGL接口的函数名称及上下文数据,生成本地的Trace文件,如果已经有Trace文件可以省略此步操作。
具体来说,所述详细流程图500包括主线程、回放控制线程、回放A线程以及回放B线程,所述主线程主要处理初始化设备、启动各线程执行及结果对比分析与查看;所述回放控制线程,主要负责Trace文件的加载、解析与分发。该线程还包括一个控制器,控制着调用数据的分发,所述该控制器可以实现回放的暂停、继续、单步执行下一函数和单步执行下一帧,还可以直接跳转到某一个帧的某一函数;所述回放A线程,负责创建显卡A的渲染窗口,装载显卡A的OpenGL接口,在显卡A上执行控制线程发送过来的调用数据;所述回放B线程,负责创建显卡B的渲染窗口,装载显卡B的OpenGL接口,在显卡B上执行回放控制线程发送过来的调用数据,所述四个线程之间的处理顺序也是按照上述顺序执行。
所述回放控制线程中发送调用数据的过程,回放A线程和回放线程B中接收调用数据过程都是同步执行的,回放控制线程先发送调用数据给回放A线程,回放A线程接收到调用数据后,开始执行调用,执行完成后,回放控制线程再发送调用数据给回放B线程,回放B线程接收到调用数据后,开始执行调用,执行完成后,在主线程中结果对比与分析模块会获取本次回放A线程和回放B线程的调用返回数据做对比分析,如果本次调用有渲染图像,也会对渲染图像做对比分析,并将所有对比分析结果显示出来。所述回放控制线程不断的发送调用数据,回放A线程和回放B线程不断的接收调用数据,并执行。结果对比与分析模块也在不断的做着对比分析,这一过程是实时进行的,直到回放完所有数据,本次回放就会结束,也可以通过关闭渲染窗口来提前退出回放。
对于上述内容的阐述,具体来说,所述详细流程图500中的主线程的具体操作步骤如下:
S501:启动本设备;
S502:使用本设备打开OpenGL应用程序;
选择目标OpenGL应用程序,加载并执行所述OpenGL应用程序。
S503:生成OpenGL应用程序的Trace文件;
通过Trace记录模块截获并记录需要调试的OpenGL应用程序的调用函数及上下文数据,按规定格式保存为本地的Trace文件。
S504:执行双显卡回放调试功能;
所述执行双显卡回放调试功能是指加载显卡A与显卡B的OpenGL驱动,实现显卡A与显卡B的OpenGL接口装载并执行在两个显卡上的回放的调用过程。
S505:启动回放控制线程、回放A线程和回放B线程;
S506:回放控制线程执行;
对所述Trace文件执行加载、解析与分发,即使用Trace记录模块解析所述Trace文件中的数据为函数的调用数据并分发给回放A线程和回放B线程同时执行,通过控制器控制所述函数的调用数据的分发以及回放的暂停、继续、单步执行下一个函数和单步执行下一帧,还可以直接跳转到某一个帧的某一函数。
S507:回放A线程执行;
创建显卡A的渲染窗口,装载显卡A的OpenGL接口,在显卡A上执行控制线程发送过来的调用数据。
S508:回放B线程执行;
创建显卡B的渲染窗口,装载显卡B的OpenGL接口,在显卡B上执行控制线程发送过来的调用数据。
S509:回放A线程和回放B线程执行结果对比分析与查看;
获取每个函数在显卡A和显卡B上回放调用的OpenGL接口的返回状态、渲染结果以及显卡的其他信息,自动对所述OpenGL接口的返回状态和渲染结果做对比分析,如果两者的对比结果不一致,则会暂停回放并给出提示以及显示调试数据信息。
S510:对比结果是否一致,若是,则跳转到步骤S511,结束调试流程;若否,则跳转到步骤S506。
所述回放控制线程执行的具体操作步骤为:
S5061:初始化回放控制线程相关数据;
S5062:加载Trace文件;
S5063:分发调用数据;
将通过Trace记录模块解析的所述Trace文件中的数据生成函数的调用数据分发给回放A线程和回放B线程。
S5064:分发是否完成,若是,则跳转到步骤S5065,结束回放控制线程;若否,则跳转到步骤S5063;
S5065:结束回放控制线程的执行。
此外,由于所述回放控制线程还包括一个控制器,控制着所述函数的调用数据的分发,所述该控制器可以实现回放的暂停、继续、单步执行下一函数和单步执行下一帧,还可以直接跳转到某一个帧的某一函数,如图中步骤S512中虚线箭头所示所述控制器控制分发所述函数的调用数据。
需要说明的是,所述单步执行下一函数是指执行OpenGL或其他图形API中的单个函数,由于所述图形API中的函数是在CPU端进行提交的,因此可以单步执行。
所述回放A线程执行的具体操作步骤为:
S5071:创建渲染窗口;
S5072:加载显卡A的OpenGL环境;
本发明实施例通过定义一个结构体类型GLContext A,该类型的成员变量为所有OpenGL接口对应的函数指针,然后使用该类型定义contextA变量做为显卡A的OpenGL接口集,装载显卡A的OpenGL接口函数到contextA中。
S5073:接收调用数据;
接收从回放控制线程分发的解析所述Trace文件生成的函数的调用数据。
S5074:执行调用;
在显卡A上执行控制线程发送过来的所述函数的调用数据,要使用显卡A
的OpenGL接口就调用contextA中对应的接口及函数。
S5075:分发是否完成,若是,则跳转到步骤S5076;若否,则跳转到步骤S5074;
S5076:关闭渲染窗口;
S5077:结束回放A线程的执行。
S5078:执行结构体类型GLContext A;
加载显卡A的OpenGL环境时,可以先定义结构体类型GLContext A,图中虚线所示,然后在执行调用步骤执行所述结构体类型。
S5079:获取显卡A的渲染结果及返回状态。
在显卡A上执行回放控制线程发送过来的所述函数的调用数据,以生成渲染结果和OpenGL接口返回状态并发送给主线程的S509步骤,以进行执行结果对比分析和查看。
所述回放B线程执行的具体操作步骤为:
S5081:创建渲染窗口;
S5082:加载显卡B的OpenGL环境;
定义一个结构体类型GLContext B,该类型的成员变量为所有OpenGL接口对应的函数指针,然后使用该类型定义contextB变量做为显卡B的OpenGL接口集,装载显卡B的OpenGL接口函数到contextB中。
S5083:接收调用数据;
接收从回放控制线程分发的所述Trace文件生成的函数的调用数据。
S5084:执行调用;
在显卡B上执行控制线程发送过来的所述函数的调用数据,要使用显卡B的OpenGL接口就调用contextB中对应的接口及函数。
S5085:分发是否完成,若是,则跳转到步骤S5086;若否,则跳转到步骤S5084;
S5086:关闭渲染窗口;
S5087:结束回放A线程的执行。
S5088:执行GLContext B;
加载显卡B的OpenGL环境时,可以先定义结构体类型GLContext B,图中虚线所示,然后在执行调用步骤执行所述结构体类型。
S5089:获取显卡B的渲染结果及返回状态。
在显卡B上执行回放控制线程发送过来的所述函数的调用数据,以生成渲染结果和OpenGL接口返回状态并发送给主线程的S509步骤,以进行执行结果对比分析和查看。
基于前述技术方案相同的发明构思,参见图6,其示出一种OpenGL接口的双显卡对比调试装置600,所述调试装置600包括:记录部分601、生成部分602以及对比部分603;其中,
所述记录部分601,经配置为应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
所述生成部分602,经配置为加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
所述对比部分603,经配置为将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性。
在一些示例中,所述记录部分601,经配置为:
应用程序执行过程中,采用HOOK截取OpenGL接口的函数调用;
按顺序记录所有调用所述OpenGL接口的函数名称和上下文数据并生成Trace文件。
在一些示例中,所述生成部分602,经配置为:
加载OpenGL环境并将基准显卡和测试显卡的OpenGL接口函数装载到相应的上下文;
加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡以生成第一渲染结果和相应OpenGL接口的返回状态;
将所述函数的调用数据同步在被测显卡上执行以生成第二渲染结果和相应OpenGL接口的返回状态。
在一些示例中,所述生成部分602,经配置为:
将所述Trace文件中的数据,通过Trace记录模块解析为函数的调用数据;
将所述函数的调用数据分发给基准显卡执行,以生成第一渲染结果以及每个函数的OpenGL接口的返回状态。
在一些示例中,所述对比部分603,经配置为:
获取在基准显卡和测试显卡上基于Trace文件同步回放生成的第一渲染结果和第二渲染结果以及回放调用的OpenGL接口的每个函数的返回状态;
自动对比所述第一渲染结果和第二渲染结果以及相应OpenGL接口的每个函数的返回状态;
如果对比结果不一致,则暂停回放并给出提示以及显示调试数据信息,以用于渲染结果故障的分析和调试。
可以理解地,上述一种OpenGL接口的双显卡对比调试装置600的示例性技术方案,与前述一种OpenGL接口的双显卡对比调试方法的技术方案属于同一构思,因此,上述一种OpenGL接口的双显卡对比调试装置600的技术方案未详细描述的细节内容,均可以参见前述一种OpenGL接口的双显卡对比调试方法的技术方案的描述,本发明实施例对此不做赘述。
可以理解地,图3所示的技术方案及其示例既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现,本发明实施例是以软件功能模块的方式实现。如果以软件功能部分的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。因此,本实施例提供了一种计算机存储介质,所述计算机存储介质存储有OpenGL接口的双显卡对比调试的程序,所述OpenGL接口的双显卡对比调试的程序被至少一个处理器执行时实现上述技术方案中所述一种OpenGL接口的双显卡对比调试方法的步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (7)
1.一种OpenGL接口的双显卡对比调试方法,其特征在于,所述方法包括:
应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
分别在基准显卡和测试显卡上装载相同的OpenGL接口函数并将所述Trace文件中的数据通过Trace记录模块解析为函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性;
其中,所述分别在基准显卡和测试显卡上装载相同的OpenGL接口函数并将所述Trace文件中的数据通过Trace记录模块解析为函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果,包括:
预先定义结构体类型及其上下文变量,将所述上下文变量分别作为基准显卡和测试显卡的OpenGL接口集,通过动态库加载方式将基准显卡和测试显卡的所述OpenGL接口函数装载到相应的上下文;
加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡以生成第一渲染结果和相应OpenGL接口的返回状态;
将所述函数的调用数据同步在被测显卡上执行以生成第二渲染结果和相应OpenGL接口的返回状态。
2.根据权利要求1所述方法,其特征在于,所述应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件,包括:
应用程序执行过程中,采用HOOK截取OpenGL接口的函数调用;
按顺序记录所有调用所述OpenGL接口的函数名称和上下文数据并生成Trace文件。
3.根据权利要求1所述方法,其特征在于,所述将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性,包括:
获取在基准显卡和测试显卡上基于Trace文件同步回放生成的第一渲染结果和第二渲染结果以及回放调用的OpenGL接口的每个函数的返回状态;
自动对比所述第一渲染结果和第二渲染结果以及相应OpenGL接口的每个函数的返回状态;
如果对比结果不一致,则暂停回放并给出提示以及显示调试数据信息,以用于渲染结果故障的分析和调试。
4.一种OpenGL接口的双显卡对比调试装置,其特征在于,所述调试装置包括:记录部分、生成部分以及对比部分;其中,
所述记录部分,经配置为应用程序执行过程中,按顺序记录OpenGL接口的调用函数和上下文数据以生成Trace文件;
所述生成部分,经配置为分别在基准显卡和测试显卡上装载相同的OpenGL接口函数并将所述Trace文件中的数据通过Trace记录模块解析为函数的调用数据,将所述函数的调用数据分发给基准显卡和测试显卡同时执行以生成第一渲染结果和第二渲染结果;
所述对比部分,经配置为将所述第一渲染结果和第二渲染结果进行同步对比与分析,以判断渲染结果的一致性;
其中,所述生成部分,还经配置为:
预先定义结构体类型及其上下文变量,将所述上下文变量分别作为基准显卡和测试显卡的OpenGL接口集,通过动态库加载方式将基准显卡和测试显卡的所述OpenGL接口函数装载到相应的上下文;
加载所述Trace文件并进行解析以生成函数的调用数据,将所述函数的调用数据分发给基准显卡以生成第一渲染结果和相应OpenGL接口的返回状态;
将所述函数的调用数据同步在被测显卡上执行以生成第二渲染结果和相应OpenGL接口的返回状态。
5.根据权利要求4所述装置,其特征在于,所述对比部分,经配置为:
获取在基准显卡和测试显卡上基于Trace文件同步回放生成的第一渲染结果和第二渲染结果以及回放调用的OpenGL接口的每个函数的返回状态;
自动对比所述第一渲染结果和第二渲染结果以及相应OpenGL接口的每个函数的返回状态;
如果对比结果不一致,则暂停回放并给出提示以及显示调试数据信息,以用于渲染结果故障的分析和调试。
6.一种计算设备,其特征在于,所述计算设备包括:通信接口,处理器,存储器;各个组件通过总线系统耦合在一起;其中,
所述通信接口,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行权利要求1至3任一项所述OpenGL接口的双显卡对比调试方法的步骤。
7.一种计算机存储介质,其特征在于,所述计算机存储介质存储有OpenGL接口的双显卡对比调试的程序,所述OpenGL接口的双显卡对比调试的程序被至少一个处理器执行时实现权利要求1至3任一项所述OpenGL接口的双显卡对比调试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310448235.6A CN116185743B (zh) | 2023-04-24 | 2023-04-24 | OpenGL接口的双显卡对比调试方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310448235.6A CN116185743B (zh) | 2023-04-24 | 2023-04-24 | OpenGL接口的双显卡对比调试方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116185743A CN116185743A (zh) | 2023-05-30 |
CN116185743B true CN116185743B (zh) | 2023-07-21 |
Family
ID=86452473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310448235.6A Active CN116185743B (zh) | 2023-04-24 | 2023-04-24 | OpenGL接口的双显卡对比调试方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185743B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076226B (zh) * | 2023-10-16 | 2023-12-29 | 北京麟卓信息科技有限公司 | 一种基于图像纹理差异的图形系统渲染正确性验证方法 |
CN117274033B (zh) * | 2023-11-20 | 2024-03-26 | 芯瞳半导体技术(山东)有限公司 | 图形驱动调试方法、装置、存储介质及电子设备 |
CN117635802A (zh) * | 2023-12-13 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 显卡的渲染测试方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032951A (zh) * | 2018-08-06 | 2018-12-18 | 武汉斗鱼网络科技有限公司 | 一种检测客户端运行OpenGL版本的方法、系统、服务器及存储介质 |
CN113032025A (zh) * | 2021-03-15 | 2021-06-25 | 厦门亿联网络技术股份有限公司 | 图形渲染方法、装置、终端及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7170511B2 (en) * | 1999-09-24 | 2007-01-30 | Sun Microsystems, Inc. | Creating a parallel structure for scene-based rendering |
US20100289804A1 (en) * | 2009-05-13 | 2010-11-18 | International Business Machines Corporation | System, mechanism, and apparatus for a customizable and extensible distributed rendering api |
CN114089896A (zh) * | 2022-01-13 | 2022-02-25 | 北京蔚领时代科技有限公司 | 一种渲染图像截取方法及装置 |
CN115145778B (zh) * | 2022-09-02 | 2022-11-25 | 西安芯瞳半导体技术有限公司 | 一种显卡渲染结果分析方法、装置及存储介质 |
CN115357516B (zh) * | 2022-10-19 | 2023-04-11 | 西安芯瞳半导体技术有限公司 | 一种渲染问题的调试方法、装置、设备及存储介质 |
-
2023
- 2023-04-24 CN CN202310448235.6A patent/CN116185743B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032951A (zh) * | 2018-08-06 | 2018-12-18 | 武汉斗鱼网络科技有限公司 | 一种检测客户端运行OpenGL版本的方法、系统、服务器及存储介质 |
CN113032025A (zh) * | 2021-03-15 | 2021-06-25 | 厦门亿联网络技术股份有限公司 | 图形渲染方法、装置、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
Utilization of CUDA-OpenGL interoperability to display electromagnetic fields calculated by FDTD;Veysel Demir.etc;《IEEE》;全文 * |
在C#中结合OpenGL索引顶点数组的海浪动态仿真;刘丁;许惠平;叶娜;;海洋测绘(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116185743A (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116185743B (zh) | OpenGL接口的双显卡对比调试方法、装置及介质 | |
KR101286318B1 (ko) | 렌더링된 그래픽 엘리먼트들을 위한 성능 메트릭들의 시각적 표현의 디스플레이 | |
CN115145778B (zh) | 一种显卡渲染结果分析方法、装置及存储介质 | |
US8587593B2 (en) | Performance analysis during visual creation of graphics images | |
US9792718B2 (en) | Mapping graphics instructions to associated graphics data during performance analysis | |
EP3137985B1 (en) | Method and system to create a rendering pipeline | |
CN112686797B (zh) | 用于gpu功能验证的目标帧数据获取方法、装置及存储介质 | |
KR20170113676A (ko) | 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성 | |
CN113342703B (zh) | 一种渲染效果实时调试方法、装置、开发设备及存储介质 | |
JP2011510407A (ja) | グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート | |
CN114972607B (zh) | 加速图像显示的数据传输方法、装置及介质 | |
CN115357516B (zh) | 一种渲染问题的调试方法、装置、设备及存储介质 | |
CN113393585B (zh) | 一种渲染问题定位方法、装置、定位设备及存储介质 | |
CN115408227B (zh) | 一种基于自研显卡的gpu状态调试方法、装置及存储介质 | |
KR101431311B1 (ko) | 그래픽 이미지들의 시각적 창작 동안의 성능 분석 | |
CN117170883B (zh) | 渲染显示的方法、装置、设备及存储介质 | |
CN110362375A (zh) | 桌面数据的显示方法、装置、设备和存储介质 | |
CN117395434B (zh) | 硬件编解码调试方法、装置、设备及存储介质 | |
CN117435521B (zh) | 基于gpu渲染的纹理显存映射方法、装置及介质 | |
WO2023245494A1 (zh) | 从渲染引擎中获取纹理数据的方法及装置、电子设备 | |
CN116954742A (zh) | 显存监测方法及装置 | |
CN118799466A (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN117708454A (zh) | 网页内容处理方法、装置、设备、存储介质及程序产品 |
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 |