CN117492747A - 编译器后端复用方法、装置、编译器及存储介质 - Google Patents
编译器后端复用方法、装置、编译器及存储介质 Download PDFInfo
- Publication number
- CN117492747A CN117492747A CN202311489887.0A CN202311489887A CN117492747A CN 117492747 A CN117492747 A CN 117492747A CN 202311489887 A CN202311489887 A CN 202311489887A CN 117492747 A CN117492747 A CN 117492747A
- Authority
- CN
- China
- Prior art keywords
- target
- compiler
- resource
- intermediate code
- useless
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000006243 chemical reaction Methods 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 3
- 239000000872 buffer Substances 0.000 description 9
- 239000012536 storage buffer Substances 0.000 description 4
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及图形处理领域,具体而言,涉及一种编译器后端复用方法、装置、编译器及计算机可读存储介质。其中,编译器后端复用方法,包括:获取着色器代码经由编译器前端编译得到的中间代码;将所述中间代码转换为预设格式的目标中间代码;将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识;发送所述目标中间代码和所述目标资源标识至编译器后端生成目标机器码。与现有技术相比,本申请实施例所提供的编译器后端复用方法、装置、编译器及计算机可读存储介质,具有实现编译器后端对不同着色器语言进行复用的优点。
Description
技术领域
本发明涉及图像处理领域,具体而言,涉及一种编译器后端复用方法、装置、编译器及计算机可读存储介质。
背景技术
着色器语言是一种用于可编程GPU(graphics processing unit,图形处理器)管线的开发语言,着色器语言编写的代码会被着色器编译器编译成为GPU可执行的机器码。目前常见的着色器语言有用于Directx的HLSL(High Level Shader Language,高阶着色器语言)、用于Opengl的GLSL(Opengl Shading Language,Opengl着色器语言)等,这些着色器语言互相之间语法不兼容,并且具有各自平台独自的编译器。
Directx以HLSL为着色器编程语言,经过编译器前端后,HLSL被编译为中间代码DXIL(Directx Intermediate Language,Directx中间语言);而GLSL则提出了SPIR-V(Standard Portable Intermediate Representation,标准可移植中间表示)作为中间代码。DXIL和SPIR-V都可以用于实现图形和并行计算领域的着色器编译器。GPU或者GPGPU的编译器往往需要支持这两种中间代码,以兼容支持用不同软件栈开发出来的应用程序。
当GPU厂商支持多种工业标准时,需要针对不同前端输出的中间代码开发多个编译器。编译器前端由于与硬件无关,所以通常由第三方工具来完成;而由于GPU硬件的复杂性,编译器后端(包括优化器和/或链接器)必须由各GPU厂商自己开发,这部分往往非常庞大和复杂。如果不能复用这个复杂的后端,要支持一种新的中间代码需要的工程量将使开发周期延长为数倍。
发明内容
本发明的目的在于提供一种编译器后端复用方法、装置、编译器及计算机可读存储介质,能够实现编译器后端对不同着色器语言的复用。
第一方面,本申请实施例提供了一种编译器后端复用方法,包括:获取着色器代码经由编译器前端编译得到的中间代码;将所述中间代码转换为预设格式的目标中间代码;将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识;发送所述目标中间代码和所述目标资源标识至编译器后端生成目标机器码。
与相关技术相比,本申请实施例所提供的编译器后端复用方法中,对于任意格式的着色器代码,其经由编译器前端编译得到中间代码后,将中间代码转换为预设格式的目标中间代码,将中间代码对应的原资源标识转换为预设格式的目标资源标识,目标中间代码和目标资源标识为编译器后端可以支持并进行使用的格式,后续编译器后端即可使用目标中间代码和目标资源标识生成目标机器码,使得编译器后端可以复用任意格式的着色器代码和对应的中间代码,实现编译器后端对不同着色器语言的复用。
在可选的实施例中,所述将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识,包括:确定所述原资源标识中的原资源类型标识和原绑定号;将所述原资源类型标识转换为所述预设格式的目标资源类型标识;将所述原绑定号转换为所述预设格式的目标绑定号。
在可选的实施例中,所述将所述原资源类型标识转换为所述预设格式的目标资源类型标识,包括:获取预设对应关系,所述预设对应关系包括所述预设格式的资源类型标识与其它格式的资源类型标识之间的对应关系;根据所述预设对应关系将所述原资源类型标识转换为所述目标资源类型标识。通过预设对应关系实现原资源类型标识转换和目标资源类型标识的转换,可以降低运算量,提升转换效率。
在可选的实施例中,所述原资源类型标识的格式为SPIR-V格式,所述目标资源类型标识的格式为DXIL格式。
在可选的实施例中,所述将所述原绑定号转换为所述预设格式的目标绑定号,包括:将对应不同资源且相同的所述原绑定号进行顺序编号后,形成所述目标绑定号。
在可选的实施例中,所述编译器后端复用方法还包括:获取不被所述目标中间代码使用的无用资源;获取所述无用资源的无用集合号,将所述无用集合号映射到预设集合号中;根据所述预设集合号中的所述无用集合号获取所述无用资源,删除所述无用资源。根据预设集合号统一删除无用资源,可以提升无用资源的删除效率,此外,删除无用资源可以减少资源冗余,提升目标机器码的生成效率。
在可选的实施例中,所述编译器后端复用方法还包括:根据所述预设集合号中的所述无用集合号获取读所述无用资源的读指令,删除所述读指令;或者根据所述预设集合号中的所述无用集合号获取写所述无用资源的写指令,删除所述写指令;或者根据所述预设集合号中的所述无用集合号获取读所述无用资源的读指令和写所述无用资源的写指令,删除所述读指令和所述写指令。删除读指令和/或写指令,可以降低目标中间代码中的指令冗余,进一步的提升目标机器码的生成效率。
第二方面,本申请实施例提供了一种编译器后端复用装置,包括:通信模块,所述通信模块用于获取着色器代码经由编译器前端编译得到的中间代码;中间代码转换模块,所述中间代码转换模块用于将所述中间代码转换为预设格式的目标中间代码;资源标识转换模块,所述资源标识转换模块用于将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识;所述通信模块还用于将所述目标中间代码和所述目标资源标识发送至编译器后端,发送所述目标中间代码和所述目标资源标识至编译器后端生成目标机器码。
与现有技术相比,本申请实施例所提供的编译器后端复用装置中,对于任意格式的着色器代码,其经由编译器前端编译得到中间代码后,通信模块可以从编译器前端获取中间代码,中间代码转换模块将中间代码转换为预设格式的目标中间代码,资源标识转换模块将中间代码对应的原资源标识转换为预设格式的目标资源标识,目标中间代码和目标资源标识为编译器后端可以支持并进行使用的格式,目标中间代码和目标资源标识转换完成后,通信模块将目标中间代码和目标资源标识发送至编译器后端,后续编译器后端即可使用目标中间代码和目标资源标识生成目标机器码,使得编译器后端可以复用任意格式的着色器代码和对应的中间代码,实现编译器后端对不同着色器语言的复用。
第三方面,本申请实施例提供了一种编译器,包括:编译器前端,所述编译器前端用于编译着色器代码得到的中间代码;如前述的编译器后端复用装置,所述编译器后端复用装置用于根据所述中间代码生成预设格式的目标中间代码和目标资源标识;编译器后端,所述编译器后端用于根据所述目标中间代码和所述目标资源标识生成目标机器码。
与现有技术相比,本申请实施例所提供的编译器中包括如前述的编译器后端复用装置,编译器后端复用装置可以根据中间代码生成预设格式的目标中间代码和目标资源标识,编译器后端即可根据目标中间代码和目标资源标识生成目标机器码,无论输入编译器的着色器代码为何种格式,编译器后端生成目标机器码所使用的目标中间代码和目标资源标识始终为编译器后端复用装置转换后的预设格式,从而实现编译器后端对不同着色器语言的复用。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行实现前述的编译器后端复用方法。
与现有技术相比,本申请实施例所提供的编译器后端复用方法、装置、编译器及计算机可读存储介质中,通过将不同格式的着色器代码编译得到的中间代码进行格式转换,将中间代码转换为预设格式的目标中间代码,将中间代码对应的原资源标识转换为预设格式的目标资源标识,目标中间代码和目标资源标识为编译器后端可以支持并进行使用的格式,使得编译器后端可以复用任意格式的着色器代码和对应的中间代码,实现编译器后端对不同着色器语言的复用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例一所提供的编译器后端复用方法的流程示意图;
图2为本申请实施例二所提供的编译器后端复用装置的结构示意图;
图3为本申请实施例三所提供的编译器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
本发明实施例一提供了一种编译器后端复用方法,应用于编译器后端复用装置,如图1所示,包括:
步骤S101:获取着色器代码经由编译器前端编译得到的中间代码。
具体的,不同格式的着色器代码经由相应的编译器前端编译后,得到对应的中间代码,编译器前端编译得到对应的中间代码后,将中间代码发送至编译器后端复用装置,编译器后端复用装置通过接收信号的方式从编译器前端获取中间代码。
步骤S102:将中间代码转换为预设格式的目标中间代码。
在本步骤中,可以使用统一预设格式的目标中间代码,即将任意格式的中间代码均转换为统一预设格式的目标中间代码。在本申请的一些实施例中,目标中间代码可以是面向目标GPU,能既够完整、清晰地表达各阶段的着色器程序,又能方便地映射为GPU上的机器码的中间代码。
在本申请的一些实施例中,例如在本申请的一些实施例中,可以使用DXIL格式作为预设格式,将其它格式例如SPIR-V格式的中间代码转换为DXIL格式的目标中间代码,具体可以根据实际需要进行复用的编译器后端支持的中间代码的格式进行设置。
步骤S103:将中间代码对应的原资源标识转换为预设格式的目标资源标识。
具体的,编译器后端在生成机器码时,需要知道着色器代码对应的GPU程序所需的资源和资源的位置布局,从而来分配资源对应的物理地址。不同格式的中间代码对于资源布局的标识方式不同,在本步骤中,即将不同格式的中间代码对应的原资源标识转换为预设格式的目标资源标识。
在本申请的一些实施例中,中间代码对应的原资源标识和预设格式的目标资源标识中均可以是使用资源类型标识和绑定号标识对应的资源。在将中间代码对应的原资源标识转换为预设格式的目标资源标识时,可以是首先确定原资源标识中的原资源类型标识和原绑定号,然后对应的将原资源类型标识转换为预设格式的目标资源类型标识;将原绑定号转换为预设格式的目标绑定号。
其中,将原资源类型标识转换为预设格式的目标资源类型标识例如可以是根据预设对应关系进行转换,预设对应关系包括预设格式的资源类型标识与其它格式的资源类型标识之间的对应关系。以预设格式为DXIL格式为例,在DXIL格式的中间代码中,如下表1所示,将资源分为以下9种类型,每种类型的资源对应于不同的资源类型标识。
以中间代码为SPIR-V格式为例,SPIR-V格式的中间代码中将资源分为4种类型,分别为:t–for shader resource views(SRV),s–for sampler(sampler),u–for unorderedaccess views(UAV),b–for constant buffer views(CBV)。
预设对应关系例如可以如下表2所示,包括:
在预设对应关系中,预设格式为DXIL格式,中间代码为SPIR-V格式时,中间代码对应的原资源类型标识包括:sampler标识、SRV_Texture标识、SRV_Buffer标识、UAV标识、以及CBV标识。如上表所示,Sampler仍然映射为Sampler,对应于GPU中的采样器;CBV为常量缓存区,映射为DXIL格式中的Uniform_Buffer,即GPU中的不变量缓存区;SRV根据其子类型将其分为两种,如果是Texture_纹理类,映射为DXIL格式中的Sampled_Image,对应于GPU的纹理缓存区,如果是Buffer_缓存区类,则映射为DXIL格式中的Storage_Buffer,对应于GPU中的显存区;UAV为可读写的数据缓冲器,GPU显存可读写,所以UAV也同样可以映射为DXIL格式中的Storage_Buffer。
根据预设对应关系将原资源类型标识转换为DXIL格式的目标资源类型标识即为:将sampler标识转换为sampler标识(即不进行转换),将SRV_Texture标识转换为Sampled_Image标识,将SRV_Buffer标识转换为Storage_Buffer标识,将UAV标识转换为Storage_Buffer标识,将CBV标识转换为Uniform_Buffer标识。
可以理解的是,前述仅为本申请的一些实施例中预设格式为DXIL格式,中间代码为SPIR-V格式时的预设对应关系和转换过程的举例说明,并不构成限定。
此外,在本申请的一些其它的实施例中,将原绑定号转换为预设格式的目标绑定号可以为:将对应不同资源且相同的原绑定号进行顺序编号后,形成目标绑定号。
同样以预设格式为DXIL格式,中间代码为SPIR-V格式为例,在DXIL格式的目标中间代码中,绑定号相同的资源对应于相同的资源位置,而在SPIR-V格式的中间代码中,绑定号相同,但是资源类型不同,对应于不同的资源位置。因此,将SPIR-V格式的原绑定号转换为DXIL格式的目标绑定号的过程中,对于SPIR-V格式中原绑定号相同、资源类型不同的多个不同资源,转换到DXIL格式的目标中间代码时需要对绑定号进行改变,从而避免在DXIL格式的目标中间代码中将绑定号相同多个不同资源标定为同一个资源。具体的,在实际应用过程中,即可将对应不同资源且相同的原绑定号进行顺序编号,形成目标绑定号。例如,对于在SPIR-V格式的中间代码中对应相同绑定号binding0的三个不同资源,转化为DXIL格式的目标绑定号即为binding0、binding1、binding2,具体如下:
转换前:
set 0,binding 0,type=MY_SHADER_RESOURCE_TYPE_SAMPLED_IMAGE;
set 0,binding 0,type=MY_SHADER_RESOURCE_TYPE_UNIFORM_BUFFER;
set 0,binding 0,type=MY_SHADER_RESOURCE_TYPE_SAMPLER;
转换后:
set 0,binding 0,type=MY_SHADER_RESOURCE_TYPE_SAMPLED_IMAGE;
set 0,binding 1,type=MY_SHADER_RESOURCE_TYPE_UNIFORM_BUFFER;
set 0,binding 2,type=MY_SHADER_RESOURCE_TYPE_SAMPLER。
此外,在本申请的一些实施例中,还可以包括:获取不被目标中间代码使用的无用资源;获取无用资源的无用集合号,将无用集合号映射到预设集合号中;根据预设集合号中的无用集合号获取无用资源,删除无用资源。
在将中间代码对应的原资源标识转换为预设格式的目标资源标识的过程中,部分资源可能不会被着色器程序使用,即在后续生成机器码时这些资源也不会被目标中间代码使用,在本申请的实施例中,这部分不被使用的资源即无用资源。在本本申请的实施例中,可以将这部分不被使用的无用资源进行删除。具体可以为,对原资源标识进行转换的过程中,遍历全部的资源,在发现一个资源后续不会被使用,属于无用资源时,将无用资源的集合号作为无用集合号映射到预设集合号中。后续可以通过无用集合号对无用资源进行统一的删除,即根据预设集合号中的各个无用集合号获取无用资源,并删除无用资源。根据预设集合号统一删除无用资源,可以提升无用资源的删除效率,此外,删除无用资源可以减少资源冗余,提升目标机器码的生成效率。
进一步的,在本申请的一些其它的实施例中,在根据预设集合号统一删除无用资源的同时,还可以根据预设集合号中的无用集合号获取读无用资源的读指令,删除读指令;或者根据预设集合号中的无用集合号获取写无用资源的写指令,删除写指令;或者根据预设集合号中的无用集合号获取读无用资源的读指令和写无用资源的写指令,删除读指令和写指令。获取读无用资源的读指令和/或写无用资源的写指令一并删除,可以降低目标中间代码中的指令冗余,进一步的提升目标机器码的生成效率。
步骤S104:发送目标中间代码和目标资源标识至编译器后端生成目标机器码。
具体的,编译器后端复用装置完成中间代码和原资源标识向预设格式的目标中间代码和目标资源标识的转换后,可以将目标中间代码和目标资源标识发送至编译器后端,编译器后端根据目标中间代码和目标资源标识生成目标机器码,完成对着色器代码的完整编译过程。
本申请实施例一所提供的编译器后端复用方法中,对于任意格式的着色器代码,其经由编译器前端编译得到中间代码后,将中间代码转换为预设格式的目标中间代码,将中间代码对应的原资源标识转换为预设格式的目标资源标识,目标中间代码和目标资源标识为编译器后端可以支持并进行使用的格式,后续编译器后端即可使用目标中间代码和目标资源标识生成目标机器码,使得编译器后端可以复用任意格式的着色器代码和对应的中间代码,实现编译器后端对不同着色器语言的复用。
本发明实施例二涉及一种编译器后端复用装置,如图2所示,包括:通信模块201,通信模块201用于获取着色器代码经由编译器前端编译得到的中间代码;中间代码转换模块202,中间代码转换模块202用于将中间代码转换为预设格式的目标中间代码;资源标识转换模块203,资源标识转换模块203用于将中间代码对应的原资源标识转换为预设格式的目标资源标识;通信模块201还用于将目标中间代码和目标资源标识发送至编译器后端,发送目标中间代码和目标资源标识至编译器后端生成目标机器码。
本申请实施例二所提供的编译器后端复用装置中,对于任意格式的着色器代码,其经由编译器前端编译得到中间代码后,通信模块201可以从编译器前端获取中间代码,中间代码转换模块202将中间代码转换为预设格式的目标中间代码,资源标识转换模块203将中间代码对应的原资源标识转换为预设格式的目标资源标识,目标中间代码和目标资源标识为编译器后端可以支持并进行使用的格式,目标中间代码和目标资源标识转换完成后,通信模块201将目标中间代码和目标资源标识发送至编译器后端,后续编译器后端即可使用目标中间代码和目标资源标识生成目标机器码,使得编译器后端可以复用任意格式的着色器代码和对应的中间代码,实现编译器后端对不同着色器语言的复用。
本发明实施例三涉及一种编译器,如图3所示,包括:编译器前端301,编译器前端301用于编译着色器代码得到的中间代码;如前述实施例所提供的编译器后端复用装置302,编译器后端复用装置302用于根据中间代码生成预设格式的目标中间代码和目标资源标识;编译器后端303,编译器后端303用于根据目标中间代码和目标资源标识生成目标机器码。
本申请实施例三所提供的编译器中包括如前述实施例所提供的编译器后端复用装置302,编译器后端复用装置302可以根据中间代码生成预设格式的目标中间代码和目标资源标识,编译器后端303即可根据目标中间代码和目标资源标识生成目标机器码,无论输入编译器的着色器代码为何种格式,编译器后端303生成目标机器码所使用的目标中间代码和目标资源标识始终为编译器后端复用装置302转换后的预设格式,从而实现编译器后端对不同着色器语言的复用。
本发明实施例四涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种编译器后端复用方法,其特征在于,包括:
获取着色器代码经由编译器前端编译得到的中间代码;
将所述中间代码转换为预设格式的目标中间代码;
将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识;
发送所述目标中间代码和所述目标资源标识至编译器后端生成目标机器码。
2.根据权利要求1所述的编译器后端复用方法,其特征在于,所述将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识,包括:
确定所述原资源标识中的原资源类型标识和原绑定号;
将所述原资源类型标识转换为所述预设格式的目标资源类型标识;
将所述原绑定号转换为所述预设格式的目标绑定号。
3.根据权利要求2所述的编译器后端复用方法,其特征在于,所述将所述原资源类型标识转换为所述预设格式的目标资源类型标识,包括:
获取预设对应关系,所述预设对应关系包括所述预设格式的资源类型标识与其它格式的资源类型标识之间的对应关系;
根据所述预设对应关系将所述原资源类型标识转换为所述目标资源类型标识。
4.根据权利要求2所述的编译器后端复用方法,其特征在于,所述原资源类型标识的格式为SPIR-V格式,所述目标资源类型标识的格式为DXIL格式。
5.根据权利要求2所述的编译器后端复用方法,其特征在于,所述将所述原绑定号转换为所述预设格式的目标绑定号,包括:
将对应不同资源且相同的所述原绑定号进行顺序编号后,形成所述目标绑定号。
6.根据权利要求1至5中任一项所述的编译器后端复用方法,其特征在于,所述编译器后端复用方法还包括:
获取不被所述目标中间代码使用的无用资源;
获取所述无用资源的无用集合号,将所述无用集合号映射到预设集合号中;
根据所述预设集合号中的所述无用集合号获取所述无用资源,删除所述无用资源。
7.根据权利要求6所述的编译器后端复用方法,其特征在于,所述编译器后端复用方法还包括:
根据所述预设集合号中的所述无用集合号获取读所述无用资源的读指令,删除所述读指令;
或者根据所述预设集合号中的所述无用集合号获取写所述无用资源的写指令,删除所述写指令;
或者根据所述预设集合号中的所述无用集合号获取读所述无用资源的读指令和写所述无用资源的写指令,删除所述读指令和所述写指令。
8.一种编译器后端复用装置,其特征在于,包括:
通信模块,所述通信模块用于获取着色器代码经由编译器前端编译得到的中间代码;
中间代码转换模块,所述中间代码转换模块用于将所述中间代码转换为预设格式的目标中间代码;
资源标识转换模块,所述资源标识转换模块用于将所述中间代码对应的原资源标识转换为所述预设格式的目标资源标识;
所述通信模块还用于将所述目标中间代码和所述目标资源标识发送至编译器后端,发送所述目标中间代码和所述目标资源标识至编译器后端生成目标机器码。
9.一种编译器,其特征在于,包括:
编译器前端,所述编译器前端用于编译着色器代码得到的中间代码;
如权利要求8所述的编译器后端复用装置,所述编译器后端复用装置用于根据所述中间代码生成预设格式的目标中间代码和目标资源标识;
编译器后端,所述编译器后端用于根据所述目标中间代码和所述目标资源标识生成目标机器码。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行实现权利要求1至7中任意一项所述的编译器后端复用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311489887.0A CN117492747A (zh) | 2023-11-08 | 2023-11-08 | 编译器后端复用方法、装置、编译器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311489887.0A CN117492747A (zh) | 2023-11-08 | 2023-11-08 | 编译器后端复用方法、装置、编译器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117492747A true CN117492747A (zh) | 2024-02-02 |
Family
ID=89684412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311489887.0A Pending CN117492747A (zh) | 2023-11-08 | 2023-11-08 | 编译器后端复用方法、装置、编译器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117492747A (zh) |
-
2023
- 2023-11-08 CN CN202311489887.0A patent/CN117492747A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108162B (zh) | 应用程序编程接口生成方法及装置 | |
US20190129734A1 (en) | Data collection workflow extension | |
CN105808437B (zh) | 基于测试用例数据表的自动化测试方法及系统 | |
CN103902456B (zh) | 测试脚本处理装置、系统及方法 | |
CN109564540B (zh) | 用于jit编译器的调试的系统、方法和设备 | |
CN106796525A (zh) | 按需加载动态脚本语言代码以减少内存使用 | |
CN101208690B (zh) | 计算环境中翻译表达式 | |
CN111488155B (zh) | 着色语言翻译方法 | |
CN112988601A (zh) | 测试脚本开发方法及装置 | |
JP5811088B2 (ja) | データ処理システム及びデータ処理方法 | |
US7966600B2 (en) | Distributed resource understanding tool management | |
CN116243919A (zh) | 一种解释渲染和代码渲染的界面渲染方法、设备及介质 | |
CN105867886B (zh) | 一种写表格的方法及装置 | |
CN117492747A (zh) | 编译器后端复用方法、装置、编译器及存储介质 | |
CN106293862B (zh) | 一种可扩展标记语言xml数据的解析方法和装置 | |
US9720660B2 (en) | Binary interface instrumentation | |
US8108828B2 (en) | System for generating optimized computer data field conversion routines | |
US7665074B2 (en) | Mechanism for converting text output into objects | |
KR100772181B1 (ko) | 확장성 생성 언어 스키마 기반 개발도구 연동 방법 및시스템 | |
CN117873607A (zh) | 自定义功能对应目标操作的处理方法及装置 | |
JP2010157165A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
EP1306757A2 (en) | Transferring data along with code for program overlays | |
CN114356289A (zh) | 一种基于多平台的着色器使用方法和相关设备 | |
CN113687817A (zh) | 一种消息格式解析器及解析方法 | |
JP2001142719A (ja) | コンパイラ装置及びコンパイラプログラムを記録した記録媒体 |
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 |