CN117274033A - 图形驱动调试方法、装置、存储介质及电子设备 - Google Patents

图形驱动调试方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN117274033A
CN117274033A CN202311541971.2A CN202311541971A CN117274033A CN 117274033 A CN117274033 A CN 117274033A CN 202311541971 A CN202311541971 A CN 202311541971A CN 117274033 A CN117274033 A CN 117274033A
Authority
CN
China
Prior art keywords
debugging
accessory
rendering
debug
determining
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.)
Granted
Application number
CN202311541971.2A
Other languages
English (en)
Other versions
CN117274033B (zh
Inventor
杜文华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Xintong Semiconductor Technology Co ltd
Original Assignee
Xi'an Xintong Semiconductor Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xi'an Xintong Semiconductor Technology Co ltd filed Critical Xi'an Xintong Semiconductor Technology Co ltd
Priority to CN202311541971.2A priority Critical patent/CN117274033B/zh
Publication of CN117274033A publication Critical patent/CN117274033A/zh
Application granted granted Critical
Publication of CN117274033B publication Critical patent/CN117274033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及一种图形驱动调试方法、装置、存储介质及电子设备。所述方法包括:构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。本公开实施例能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。

Description

图形驱动调试方法、装置、存储介质及电子设备
技术领域
本公开涉及图像数据处理技术领域,具体地,涉及一种图形驱动调试方法、装置、存储介质及电子设备。
背景技术
当前对图形的渲染主要是通过调用DirectX、OpenGL以及Vulkan等图形API来完成。出于图形API健壮性和完备性方面的考虑,在驱动内部往往会做一些影响渲染效率的状态检查,并对一些可能不会用到的特性做必要初始化或分配相关数据并进一步影响渲染效率。
显卡设备提供三维图形计算和并行处理功能,对于相关应用程序开发,有必要了解程序每个步骤是否符合预期;对于显卡驱动开发来说,有必要了解每次指令下发后,硬件设备收到的指令详情。另外在一些特定场合中,需要了解特定计算单元的计算结果和单元状态。
然而,现有的调试图形驱动的方法无法方便的拿到驱动内部数据以及显卡硬件单元内部数据,且操作不便,影响显卡图形驱动的调试开发效率。因此,亟需一种新的图形驱动调试方法以更好的满足显卡图形驱动的调试开发工作,提高显卡图形驱动的调试开发效率。
发明内容
本公开的目的是提供一种图形驱动调试方法、装置、存储介质及电子设备,能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。
为了实现上述目的,根据本公开实施例的第一方面,提供一种图形驱动调试方法,所述方法包括:
构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;
根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;
根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
可选地,所述构建图形驱动的调试附件包括:
定义所述调试附件的附件对象;
定义所述调试附件的参数对象;
声明所述调试附件;
创建所述调试附件的通道结构体。
可选地,所述根据所述图像渲染相关信息,确定所述图形驱动程序的故障点,包括:
运行所述图形驱动程序,获取实时渲染图像与预期渲染图像的差异;
根据所述实时渲染图像与预期渲染图像的差异,确定故障发生的管线渲染阶段;
根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息;
根据所述中间信息,获取所述实时渲染图像的渲染相关信息;
将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点。
可选地,所述根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息包括:
确定所述管线渲染阶段对应的处理单元处理过程中输入的统一变量;
确定所述管线渲染阶段的上一阶段传入的变量信息;
根据所述统一变量和所述管线渲染阶段的上一阶段传入的变量信息,确定所述处理单元处理过程中的中间信息。
可选地,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息包括:
根据片段着色器中内置的特定变量,确定指定计算单元;
根据所述指定计算单元的计算结果,确定当前片段对应窗口的坐标值。
可选地,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息还包括:
根据所述当前片段对应窗口的坐标值,获取所述坐标值对应像素点的渲染相关信息。
可选地,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点包括:
通过将所述调试附件解码,获取所述渲染相关信息;
根据所述渲染相关信息,确定所述图形驱动程序的故障点。
可选地,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点包括:
将所述调试附件叠加到颜色附件上,输出调试图形到显示端;
根据所述调试图形,确定所述图形驱动程序的故障点。
根据本公开实施例的第二方面,提供一种图形驱动调试装置,所述调试装置包括:
构建模块,用于构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;
获取模块,用于根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;
确定模块,用于根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
根据本公开实施例的第三方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。
综上所述,本公开实施例提供一种图形驱动调试方法,所述方法包括:构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。本公开实施例能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种图形驱动调试方法流程图。
图2是根据一示例性实施例示出的一种构建图形驱动的调试附件的方法流程图。
图3是根据一示例性实施例示出的一种确定图形驱动程序的故障点的方法流程图。
图4是根据一示例性实施例示出的一种确定管线渲染阶段对应的处理单元处理过程中的中间信息的方法流程图。
图5是根据一示例性实施例示出的一种获取实时渲染图像的渲染相关信息的方法流程图。
图6是根据一示例性实施例示出的又一种获取实时渲染图像的渲染相关信息的方法流程图。
图7是根据一示例性实施例示出的又一种确定图形驱动程序的故障点的方法流程图。
图8是根据一示例性实施例示出的再一种确定图形驱动程序的故障点的方法流程图。
图9是根据一示例性实施例示出的一种图形驱动调试装置900的框图。
图10是根据一示例性实施例示出的一种电子设备1000的框图。
图11是根据一示例性实施例示出的一种电子设备1100的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
应当理解,本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。在本公开的描述中,除非另有说明,“多个”是指两个或多于两个,其它量词与之类似;“至少一项(个)”、“一项(个)或多项(个)”或其类似表达,是指的这些项(个)中的任意组合,包括单项(个)或复数项(个)的任意组合。
在本公开实施例中尽管在附图中以特定的顺序描述操作或步骤,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作或步骤,或是要求执行全部所示的操作或步骤以得到期望的结果。在本公开的实施例中,可以串行执行这些操作或步骤;也可以并行执行这些操作或步骤;也可以执行这些操作或步骤中的一部分。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。下面结合具体实施例对本公开进行说明。
首先,对本公开的应用场景进行说明。当前针对显卡和应用程序的调试有以下几种方式:
使用OpenGL、Vulkan 等图形API提供的调试接口。比如OpenGL 提供的常用调试接口有如下几个:
GLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenumtype, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
GLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type,GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
GLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback,const void *userParam);
GLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizeibufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities,GLsizei *lengths, GLchar *messageLog);
上述几个函数的作用分别是:设置调试上下文需要报告的调试信息类型;***一条调试信息到调试上下文;设置调试消息回调函数;获取调试信息日志。使用以上方法,可以了解程序是否正确使用API,以及在窗口***、着色器编译等方面的大致调试信息。但是,显卡硬件单元内部数据往往无法拿到。
使用类似linux 下export LD_PRELOAD=./XXX 实时拦截图形驱动程序发给显卡驱动的指令。这种方式可以有效获取显卡实际接受到的描述符信息,但也无法拿到驱动内部数据以及硬件单元内数据。考虑到现代图形API都有缓冲或者附件的概念。比如在OpenGL/GLES中有颜色缓冲和深度缓冲,缓冲可以理解为一段包含特定信息的内存。Vulkan中的附件和此类似,只是改成了缓冲可以包含一组附件。对于除了上述颜色附件和深度缓冲,还增加了输入附件。输入附件是一组图像视图,在着色器中可以直接读取。
显卡或者其他设备调试的本质就是CPU端获取显卡(设备)上计算过程中调试者感兴趣的中间数据;或者在显示端展示出相关数据。基于此,本公开提出的技术方案如下:
在缓冲(OpenGL中)、附件(Vulkan中)构建一个专门用于调试的单元,即调试附件。对于图形GPU来说,其最终结果都要渲染到终端设备。在图像输出阶段,可以根据用户设定把用户感兴趣的调试信息通过调试附件的方式推送到用户面前,使用方式可以通过解调制方式把调试附件中的信息展示为可显示的信息并展示给用户。也可以使用特定方式把调试附件叠加到颜色附件上,最终输出到显示端。用户通过查看输出图形即可确定故障信息。
图1是根据一示例性实施例示出的一种图形驱动调试方法流程图。如图1所示,本公开实施例提供一种图形驱动调试方法,所述方法可以包括如下几个步骤:
在步骤S10中,构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息。
在此步骤中,构建图形驱动程序的调试附件,调试附件用于存放图形驱动程序的调试信息。示例性的,可以构建图形驱动程序的调试附件debugAttachment{},该调试附件debugAttachment{}可以用于存放图形驱动程序的调试信息,例如定点着色器信息、几何着色器信息、细分着色器信息、像素着色器信息、出错的图像帧序列编号、API执行指令编号、需要记录的屏幕坐标点以及硬件单元运算的中间数据等。
在步骤S20中,根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息。
在此步骤中,根据调试附件,获取图形驱动程序的图像渲染相关信息。示例性的,可以通过定义相关函数和对象从调试附件中获取图形驱动程序的图像渲染相关信息。
例如,定义对象DebugAttachmentBuffer来描述调试附件对应的数据缓存位置,定义对象DebugVertexInfo来描述定点着色器信息,定义对象DebugGeomInfo来描述几何着色器信息,定义对象DebugTellInfo来描述细分着色器信息,定义对象DebugFragInfo来描述像素着色器信息,定义对象GpuInfo 用于描述对应的Gpu信息,其中可以包含Gpu型号、支持的并行核数以及本调试附件运行时所在的GPU核ID、运行步骤ID等信息。定义函数接口(解码器)DebugAttachmentDecoder用于解码调试附件,示例性的,该解码函数接口实现的部分代码可以为如下所示:
class DebugAttachmentDecoder
{
public:
virtual ~DebugAttachmentDecoder() = 0;
public:
virtual bool decodeDebugAttachmentBuffer(DebugAttachmentBuffer* buffer) = 0;
virtual std::shared_ptr<DebugVertexInfo>getVertexInfo()const = 0;
virtual std::shared_ptr<DebugFragmentInfo>getFragmentInfo()const = 0;
virtual std::shared_ptr<DebugGeomInfo>getGeomInfo()const = 0;
virtual std::shared_ptr<DebugTellInfo>getTellInfo()const = 0;
virtual std::string getRegisterString()const = 0;
virtual std::shared_ptr<GpuInfo>getGpuInfo()const = 0;
private:
};
其中函数getRegisterString用于获取寄存器相关信息。如果调试附件记录的是细分着色器中的调试信息,则相关的getXXXInfo中只有getTellInfo返回有数据,其他函数返回均为0。
在步骤S30中,根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
在此步骤中,根据图像渲染相关信息,确定图形驱动程序的故障点。示例性的,以片段着色器计算出错为例进行说明,如果最终图像中某些图像颜色显示偏绿一些,则说明在片段着色器中对颜色信息的处理存在问题。需要做的就是在片段着色器处理单元处理过程中记录相关的中间信息,比如具体的输入uniform变量、上一阶段传入的变量信息、以及着色器内置函数的计算结果等。
考虑到对片段的处理是并行处理的,我们需要指定需要获取哪个单元计算的中间过程数据。对此,可以借用片段着色器中内置的特殊变量来指定计算单元。比如gl_FragCoord,用来标记当前片段所对应的窗口坐标值(x, y, z, w) ,其中,x、y、z和w分别代表x轴数值、y轴数值,z轴数值和坐标向量的模。
因此在调试前可以把窗口坐标传给调试程序,在片段着色器并行计算时,如果当前片段处理单元承担此坐标像素的计算,则在计算过程中记录相关信息。在渲染时把相关信息放置在调试附件中。在程序做图像渲染时,通过图形API接口函数拿到调试附件信息,随后解码并展示给用户。
综上所述,本公开实施例提供一种图形驱动调试方法,所述方法包括:构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。本公开实施例能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。
图2是根据一示例性实施例示出的一种构建图形驱动的调试附件的方法流程图。如图2所示,所述构建图形驱动的调试附件,可以包括如下几个步骤:
在步骤S101中,定义所述调试附件的附件对象。
在此步骤中,定义调试附件的附件对象。示例性的,定义调试附件的附件对象的部分代码可以为如下所示:
VkAttachmentDescription debugAttachment{};
debugAttachment.format = VK_FORMAT_R16G16B16A16_UINT;
debugAttachment.samples = VK_SAMPLE_COUNT_1_BIT;
debugAttachment.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
debugAttachment.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
debugAttachment.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
debugAttachment.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
debugAttachment.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
debugAttachment.finalLayout = VK_IMAGE_LAYOUT_DEBUG_ATTACHMENT_ OPTIMAL;
在步骤S102中,定义所述调试附件的参数对象。
在此步骤中,定义调试附件的参数对象。示例性的,定义调试附件的参数对象的部分代码可以为如下所示:
VkAttachmentReference debugAttachmentResolveRef{};
debugAttachmentResolveRef.attachment = 3;
debugAttachmentResolveRef.layout = VK_IMAGE_LAYOUT_DEBUG_ATTACHMENT_ OPTIMAL;
在步骤S103中,声明所述调试附件。
在此步骤中,声明调试附件。示例性的,声明调试附件的部分代码可以为如下所示:
std::array<VkAttachmentDescription, 4>attachments = {colorAttachment, depthAttachment, colorAttachmentResolve,debugAttachment };
在步骤S104中,创建所述调试附件的通道结构体。
在此步骤中,创建调试附件的通道结构体。示例性的,创建调试附件的通道结构体的部分代码可以为如下所示:
VkRenderPassCreateInfo renderPassInfo{};
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
renderPassInfo.attachmentCount = static_cast<uint32_t> (attachments.size());
renderPassInfo.pAttachments = attachments.data();
renderPassInfo.subpassCount = 1;
renderPassInfo.pSubpasses =&subpass;
renderPassInfo.dependencyCount = 1;
renderPassInfo.pDependencies =&dependency;
if (vkCreateRenderPass(context->getDevice(),&renderPassInfo, context- >getAllocation(),
&renderPass) != VK_SUCCESS) {
std::cerr<<"failed to create render pass"<<std::endl;
}
图3是根据一示例性实施例示出的一种确定图形驱动程序的故障点的方法流程图。如图3所示,所述根据所述图像渲染相关信息,确定所述图形驱动程序的故障点,可以包括如下几个步骤:
在步骤S301中,运行所述图形驱动程序,获取实时渲染图像与预期渲染图像的差异。
在此步骤中,运行图形驱动程序,获取实时渲染图像与预期渲染图像的差异。示例性的,实时渲染图像与预期渲染图像的差异可以包括图像颜色不对,图像位置不对,图像几何形状不对,等差异。
在步骤S302中,根据所述实时渲染图像与预期渲染图像的差异,确定故障发生的管线渲染阶段。
在此步骤中,根据实时渲染图像与预期渲染图像的差异,确定故障发生的管线渲染阶段。示例性的,如果最终渲染图像颜色不对(比如偏黄),则故障可能会出现在片段着色器渲染阶段、光栅化单元渲染阶段或者测试融合阶段;如果渲染图像的位置不对(比如偏左,偏右,或者偏小),则故障必然在顶点着色器渲染阶段、几何着色器渲染阶段或者细分着色器渲染阶段;如果有图像但展现形式不对(几何形状不对),则问题可能出现在图元装配阶段或者几何着色器渲染阶段或者细分着色器渲染阶段。
在步骤S303中,根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息。
在此步骤中,根据故障发生的管线渲染阶段,确定管线渲染阶段对应的处理单元处理过程中的中间信息。示例性的,根据初次显示图像和预期图像的差异,初步可以确定故障发生的阶段在着色器阶段,如果判断片段着色器计算出错,则可以在片段着色器处理单元处理过程中记录相关的中间信息,例如,具体的输入uniform变量信息、上一阶段传入的变量信息、以及着色器内置函数(例如normalize函数,该函数用于单位化指定向量)的计算结果等。
在步骤S304中,根据所述中间信息,获取所述实时渲染图像的渲染相关信息。
在此步骤中,根据中间信息,获取实时渲染图像的渲染相关信息。示例性的,图形驱动程序在执行渲染过程中,渲染结果异常时,执行渲染过程中记录此次运行的trace,根据其中记录的具体的输入uniform变量信息、上一阶段传入的变量信息、本阶段传出的变量信息,以及着色器内置函数的计算结果等中间信息,确定错误出现时的图像帧序列和图形API函数执行序列编号,以及需要记录的屏幕特定坐标点等实时渲染图像的渲染相关信息。
在步骤S305中,将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点。
在此步骤中,将渲染相关信息放入调试附件中,根据调试附件确定图形驱动程序的故障点。示例性的,将渲染相关信息放入调试附件中,根据刚才保存的trace文件,执行回放操作,调试程序在运行到调试附件中指定的图形API函数执行序列时自动或手动暂停,并显示记录片段着色器在指定位置(特定坐标处)相关的上下文信息(传入变量、传出变量、使用到的uniform信息、传出的最终颜色等)。如有必要,可以显示此处着色器执行时的指定指令步骤。基于上述信息,反复以上操作,可以分析出错误发生的原因,是上个阶段传入的变量计算有误,还是本阶段编译器计算错误,知道了错误步骤,就能够知道是编译器实现错误、还是GPU硬件错误。
图4是根据一示例性实施例示出的一种确定管线渲染阶段对应的处理单元处理过程中的中间信息的方法流程图。如图4所示,所述根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息,可以包括如下几个步骤:
在步骤S3031中,确定所述管线渲染阶段对应的处理单元处理过程中输入的统一变量。
在此步骤中,确定管线渲染阶段对应的处理单元处理过程中输入的统一变量,即uniform变量的信息。
在步骤S3032中,确定所述管线渲染阶段的上一阶段传入的变量信息。
在此步骤中,确定管线渲染阶段的上一阶段传入的变量信息,例如顶点着色器阶段传出的r、g、b变量的信息。
在步骤S3033中,根据所述统一变量和所述管线渲染阶段的上一阶段传入的变量信息,确定所述处理单元处理过程中的中间信息。
在此步骤中,根据统一变量和管线渲染阶段的上一阶段传入的变量信息,确定处理单元处理过程中的中间信息。示例性的,考虑到对管线渲染阶段(例如片段着色器)的处理是并行处理的,可以根据本阶段传入的统一uniform变量信息,以及上一阶段传入的变量信息,例如顶点着色器阶段传出的r、g、b变量的信息,确定需要获取哪个计算单元计算的中间过程信息。
图5是根据一示例性实施例示出的一种获取实时渲染图像的渲染相关信息的方法流程图。如图5所示,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息,可以包括如下几个步骤:
在步骤S3041中,根据片段着色器中内置的特定变量,确定指定计算单元。
在此步骤中,根据片段着色器中内置的特定变量,确定指定计算单元。示例性的,可以使用片段着色器中内置的特殊变量(比如gl_FragCoord)来指定计算单元。
在步骤S3042中,根据所述指定计算单元的计算结果,确定当前片段对应窗口的坐标值。
在此步骤中,根据指定计算单元的计算结果,确定当前片段对应窗口的坐标值。示例性的,可以根据指定计算单元的计算结果,确定当前片段对应窗口的坐标值(x, y, z,w)。其中,x、y、z和w分别代表x轴数值、y轴数值,z轴数值和坐标向量的模。
图6是根据一示例性实施例示出的又一种获取实时渲染图像的渲染相关信息的方法流程图。如图6所示,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息,还可以包括如下步骤:
在步骤S3043中,根据所述当前片段对应窗口的坐标值,获取所述坐标值对应像素点的渲染相关信息。
在此步骤中,根据当前片段对应窗口的坐标值,获取该坐标值对应像素点的渲染相关信息。示例性的,可以把当前片段对应窗口的坐标值传给调试程序,在片段着色器并行计算时,如果当前片段着色器处理单元承担此坐标像素的计算,则在计算过程中记录渲染相关信息,并在渲染时把渲染相关信息放置在调试附件中。
图7是根据一示例性实施例示出的又一种确定图形驱动程序的故障点的方法流程图。如图7所示,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点,可以包括如下几个步骤:
在步骤S3051a中,通过将所述调试附件解码,获取所述渲染相关信息。
在此步骤中,通过将调试附件解码,获取渲染相关信息。示例性的,可利用调试附件解码器函数DebugAttachmentDecoder对调试附件进行解码,从而获取渲染相关信息。
在步骤S3052a中,根据所述渲染相关信息,确定所述图形驱动程序的故障点。
在此步骤中,根据渲染相关信息,确定图形驱动程序的故障点。示例性的,根据渲染相关信息,确定图形驱动程序的故障点的方法步骤可以参见前述步骤S305的描述,在此不再赘述。
图8是根据一示例性实施例示出的再一种确定图形驱动程序的故障点的方法流程图。如图8所示,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点,可以包括如下几个步骤:
在步骤S3051b中,将所述调试附件叠加到颜色附件上,输出调试图形到显示端。
在此步骤中,将调试附件叠加到颜色附件上,输出调试图形到显示端。示例性的,可以将调试附件中调试信息叠加到颜色附件上,以调试图形的形式绘制出来,输出到显示端。比如某个寄存器值为非法值,则在一个特定的调试图形(例如三角形)上绘制一个红色的小圆,圆的位置则根据寄存器类型而定。如果多个寄存器值均为非法值,则绘制多个红色圆;如果着色器中出现了除0错误,则绘制一个蓝色的三角形。在渲染输出时把此调试图形和标准的GPU颜色附件融合在一起形成最终的调试图形,并显示在屏幕上。
在步骤S3052b中,根据所述调试图形,确定所述图形驱动程序的故障点。
在此步骤中,根据调试图形,确定图形驱动程序的故障点。具体示例参见上一步骤描述。
综上所述,本公开实施例提供一种图形驱动调试方法,所述方法包括:构建所述图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。本公开实施例能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。
图9是根据一示例性实施例示出的一种图形驱动调试装置900的框图。如图9所示,本公开实施例提供一种图形驱动调试装置900,所述装置900可以包括如下几个模块:
构建模块910,用于构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;
获取模块920,用于根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;
确定模块930,用于根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
可选地,构建模块910包括第一定义模块,用于定义所述调试附件的附件对象;
构建模块910包括第二定义模块,用于定义所述调试附件的参数对象;
构建模块910包括声明模块,用于声明所述调试附件;
构建模块910包括创建模块,用于创建所述调试附件的通道结构体。
可选地,确定模块930包括差异获取模块,用于运行所述图形驱动程序,获取实时渲染图像与预期渲染图像的差异;
确定模块930包括渲染阶段获取模块,用于根据所述实时渲染图像与预期渲染图像的差异,确定故障发生的管线渲染阶段;
确定模块930包括中间信息获取模块,用于根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息;
确定模块930包括渲染相关信息获取模块,用于根据所述中间信息,获取所述实时渲染图像的渲染相关信息;
确定模块930包括故障确定模块,用于将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点。
可选地,所述中间信息获取模块包括统一变量确定模块,用于确定所述管线渲染阶段对应的处理单元处理过程中输入的统一变量;
所述中间信息获取模块包括传入变量确定模块,用于确定所述管线渲染阶段的上一阶段传入的变量信息;
所述中间信息获取模块包括中间信息获取子模块,用于根据所述统一变量和所述管线渲染阶段的上一阶段传入的变量信息,确定所述处理单元处理过程中的中间信息。
可选地,所述渲染相关信息获取模块包括计算单元确定模块,用于根据片段着色器中内置的特定变量,确定指定计算单元;
所述渲染相关信息获取模块包括窗口坐标确定模块,用于根据所述指定计算单元的计算结果,确定当前片段对应窗口的坐标值。
可选地,所述渲染相关信息获取模块包括渲染相关信息子模块,用于根据所述当前片段对应窗口的坐标值,获取所述坐标值对应像素点的渲染相关信息。
可选地,所述故障确定模块包括解码模块,用于通过将所述调试附件解码,获取所述渲染相关信息;
所述故障确定模块包括故障确定第一子模块,用于根据所述渲染相关信息,确定所述图形驱动程序的故障点。
可选地,所述故障确定模块包括图形输出模块,用于将所述调试附件叠加到颜色附件上,输出调试图形到显示端;
所述故障确定模块包括故障确定第二子模块,用于根据所述调试图形,确定所述图形驱动程序的故障点。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开实施例提供一种图形驱动调试装置,所述调试装置包括:构建模块,用于构建所述图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;获取模块,用于根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;确定模块,用于根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。本公开实施例能够方便的拿到图形驱动内部数据以及显卡硬件单元内部数据,且操作简便,可以提高显卡图形驱动的调试开发效率。
图10是根据一示例性实施例示出的一种电子设备1000的框图。如图10所示,该电子设备1000可以包括:处理器1001,存储器1002。该电子设备1000还可以包括多媒体组件1003,输入/输出(I/O)接口1004,以及通信组件1005中的一者或多者。
其中,处理器1001用于控制该电子设备1000的整体操作,以完成上述的图形驱动调试方法中的全部或部分步骤。存储器1002用于存储各种类型的数据以支持在该电子设备1000的操作,这些数据例如可以包括用于在该电子设备1000上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1002可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1003可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1002或通过通信组件1005发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1004为处理器1001和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1005用于该电子设备1000与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件1005可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备1000可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的图形驱动调试方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的图形驱动调试方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1002,上述程序指令可由电子设备1000的处理器1001执行以完成上述的图形驱动调试方法。
图11是根据一示例性实施例示出的一种电子设备1100的框图。例如,电子设备1100可以被提供为一服务器。参照图11,电子设备1100包括处理器1122,其数量可以为一个或多个,以及存储器1132,用于存储可由处理器1122执行的计算机程序。存储器1132中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1122可以被配置为执行该计算机程序,以执行上述的图形驱动调试方法。
另外,电子设备1100还可以包括电源组件1126和通信组件1150,该电源组件1126可以被配置为执行电子设备1100的电源管理,该通信组件1150可以被配置为实现电子设备1100的通信,例如,有线或无线通信。此外,该电子设备1100还可以包括输入/输出(I/O)接口1158。电子设备1100可以操作基于存储在存储器1132的操作***。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的图形驱动调试方法的步骤。例如,该非临时性计算机可读存储介质可以为上述包括程序指令的存储器1132,上述程序指令可由电子设备1100的处理器1122执行以完成上述的图形驱动调试方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的图形驱动调试方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (11)

1.一种图形驱动调试方法,其特征在于,所述方法包括:
构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;
根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;
根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
2.根据权利要求1所述的图形驱动调试方法,其特征在于,所述构建图形驱动的调试附件包括:
定义所述调试附件的附件对象;
定义所述调试附件的参数对象;
声明所述调试附件;
创建所述调试附件的通道结构体。
3.根据权利要求1所述的图形驱动调试方法,其特征在于,所述根据所述图像渲染相关信息,确定所述图形驱动程序的故障点,包括:
运行所述图形驱动程序,获取实时渲染图像与预期渲染图像的差异;
根据所述实时渲染图像与预期渲染图像的差异,确定故障发生的管线渲染阶段;
根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息;
根据所述中间信息,获取所述实时渲染图像的渲染相关信息;
将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点。
4.根据权利要求3所述的图形驱动调试方法,其特征在于,所述根据所述故障发生的管线渲染阶段,确定所述管线渲染阶段对应的处理单元处理过程中的中间信息包括:
确定所述管线渲染阶段对应的处理单元处理过程中输入的统一变量;
确定所述管线渲染阶段的上一阶段传入的变量信息;
根据所述统一变量和所述管线渲染阶段的上一阶段传入的变量信息,确定所述处理单元处理过程中的中间信息。
5.根据权利要求3所述的图形驱动调试方法,其特征在于,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息包括:
根据片段着色器中内置的特定变量,确定指定计算单元;
根据所述指定计算单元的计算结果,确定当前片段对应窗口的坐标值。
6.根据权利要求5所述的图形驱动调试方法,其特征在于,所述根据所述中间信息,获取所述实时渲染图像的渲染相关信息还包括:
根据所述当前片段对应窗口的坐标值,获取所述坐标值对应像素点的渲染相关信息。
7.根据权利要求3所述的图形驱动调试方法,其特征在于,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点包括:
通过将所述调试附件解码,获取所述渲染相关信息;
根据所述渲染相关信息,确定所述图形驱动程序的故障点。
8.根据权利要求3所述的图形驱动调试方法,其特征在于,所述将所述渲染相关信息放入所述调试附件中,根据所述调试附件确定所述图形驱动程序的故障点包括:
将所述调试附件叠加到颜色附件上,输出调试图形到显示端;
根据所述调试图形,确定所述图形驱动程序的故障点。
9.一种图形驱动调试装置,其特征在于,所述调试装置包括:
构建模块,用于构建图形驱动程序的调试附件,所述调试附件用于存放所述图形驱动程序的调试信息;
获取模块,用于根据所述调试附件,获取所述图形驱动程序的图像渲染相关信息;
确定模块,用于根据所述图像渲染相关信息,确定所述图形驱动程序的故障点。
10.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-8中任一项所述方法的步骤。
11.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-8中任一项所述方法的步骤。
CN202311541971.2A 2023-11-20 2023-11-20 图形驱动调试方法、装置、存储介质及电子设备 Active CN117274033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311541971.2A CN117274033B (zh) 2023-11-20 2023-11-20 图形驱动调试方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311541971.2A CN117274033B (zh) 2023-11-20 2023-11-20 图形驱动调试方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN117274033A true CN117274033A (zh) 2023-12-22
CN117274033B CN117274033B (zh) 2024-03-26

Family

ID=89201165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311541971.2A Active CN117274033B (zh) 2023-11-20 2023-11-20 图形驱动调试方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN117274033B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1542167A1 (en) * 2003-12-09 2005-06-15 Koninklijke Philips Electronics N.V. Computer graphics processor and method for rendering 3D scenes on a 3D image display screen
CN101360007A (zh) * 2007-07-30 2009-02-04 辉达公司 用于远程图形装置的分析和性能调整的客户端服务器***
CN102495769A (zh) * 2010-09-30 2012-06-13 微软公司 动态虚拟设备故障恢复
US20140267328A1 (en) * 2013-03-18 2014-09-18 Vmware, Inc. Graphics processing unit failure recovery
CN105122204A (zh) * 2014-03-13 2015-12-02 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机***
CN108765534A (zh) * 2018-05-24 2018-11-06 武汉斗鱼网络科技有限公司 一种图像渲染方法、装置、设备及存储介质
JP2020060606A (ja) * 2018-10-04 2020-04-16 キヤノン株式会社 画像形成装置
CN111527554A (zh) * 2017-12-28 2020-08-11 爱惜康有限责任公司 用于定制和向用户推荐的基于云的医疗分析
CN113034339A (zh) * 2020-10-26 2021-06-25 中国人民解放军92942部队 一种基于gpu加速的提高振动数据传输带宽方法
CN113919220A (zh) * 2021-10-08 2022-01-11 西安科技大学 一种振动图像驱动的滚动轴承智能故障诊断方法
CN115408227A (zh) * 2022-11-01 2022-11-29 西安芯瞳半导体技术有限公司 一种基于自研显卡的gpu状态调试方法、装置及存储介质
CN116185743A (zh) * 2023-04-24 2023-05-30 芯瞳半导体技术(山东)有限公司 OpenGL接口的双显卡对比调试方法、装置及介质
CN116595104A (zh) * 2023-05-04 2023-08-15 中国安全生产科学研究院 一种矿山安全监测***的可视化处理方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1542167A1 (en) * 2003-12-09 2005-06-15 Koninklijke Philips Electronics N.V. Computer graphics processor and method for rendering 3D scenes on a 3D image display screen
CN101360007A (zh) * 2007-07-30 2009-02-04 辉达公司 用于远程图形装置的分析和性能调整的客户端服务器***
CN102495769A (zh) * 2010-09-30 2012-06-13 微软公司 动态虚拟设备故障恢复
US20140267328A1 (en) * 2013-03-18 2014-09-18 Vmware, Inc. Graphics processing unit failure recovery
CN105122204A (zh) * 2014-03-13 2015-12-02 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机***
CN111527554A (zh) * 2017-12-28 2020-08-11 爱惜康有限责任公司 用于定制和向用户推荐的基于云的医疗分析
CN108765534A (zh) * 2018-05-24 2018-11-06 武汉斗鱼网络科技有限公司 一种图像渲染方法、装置、设备及存储介质
JP2020060606A (ja) * 2018-10-04 2020-04-16 キヤノン株式会社 画像形成装置
CN113034339A (zh) * 2020-10-26 2021-06-25 中国人民解放军92942部队 一种基于gpu加速的提高振动数据传输带宽方法
CN113919220A (zh) * 2021-10-08 2022-01-11 西安科技大学 一种振动图像驱动的滚动轴承智能故障诊断方法
CN115408227A (zh) * 2022-11-01 2022-11-29 西安芯瞳半导体技术有限公司 一种基于自研显卡的gpu状态调试方法、装置及存储介质
CN116185743A (zh) * 2023-04-24 2023-05-30 芯瞳半导体技术(山东)有限公司 OpenGL接口的双显卡对比调试方法、装置及介质
CN116595104A (zh) * 2023-05-04 2023-08-15 中国安全生产科学研究院 一种矿山安全监测***的可视化处理方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SAURABH HUKERIKAR等: "Runtime Fault Diagnostics for GPU Tensor Cores", IEEE *
邱枫;刘治红;吴跃;徐曼菲;: "离散制造机加车间三维可视化监控***", 机械设计与制造, no. 07 *
郭钊;范湘涛;谭剑;: "基于光源空间透视的平行分割阴影图算法", 地理与地理信息科学, no. 01 *

Also Published As

Publication number Publication date
CN117274033B (zh) 2024-03-26

Similar Documents

Publication Publication Date Title
CN108765534B (zh) 一种图像渲染方法、装置、设备及存储介质
US7978197B2 (en) Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
CN115145778B (zh) 一种显卡渲染结果分析方法、装置及存储介质
CN108765539B (zh) 基于OpenGLES的图像渲染方法、装置、设备及存储介质
US7661093B2 (en) Method and system for assessing performance of a video interface using randomized parameters
US8601450B2 (en) Methods and systems for compiling a shading process of a 3D computer graphics
CN113342703B (zh) 一种渲染效果实时调试方法、装置、开发设备及存储介质
CN110287106B (zh) 着色器代码的调试方法、装置、电子设备及存储介质
CN112732576B (zh) 基于用户界面的自动化测试方法、装置及设备
CN113393585B (zh) 一种渲染问题定位方法、装置、定位设备及存储介质
GB2473682A (en) Outputting the state of a tile based deferred rendering processor
CN116185743B (zh) OpenGL接口的双显卡对比调试方法、装置及介质
CN111831573A (zh) 代码分支覆盖情况的确定方法、装置、计算机***和介质
CN112463139B (zh) 基于电子积木的编程方法、装置、电子设备及存储介质
CN115408227A (zh) 一种基于自研显卡的gpu状态调试方法、装置及存储介质
US8634695B2 (en) Shared surface hardware-sensitive composited video
CN117274033B (zh) 图形驱动调试方法、装置、存储介质及电子设备
US9442826B2 (en) Kernel functionality checker
WO2020073200A1 (zh) 调试程序的方法和***
CN113590221B (zh) 着色器变体数量的检测方法、装置、电子设备及存储介质
CN112765018B (zh) 一种仪器仪表调试***及方法
CN115591243A (zh) 渲染通道的性能检测方法、装置、电子设备及存储介质
US9691117B2 (en) External validation of graphics pipelines
CN115599401A (zh) 自定义模型的发布方法、装置、设备及介质
CN113391811B (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