CN117724987B - 一种基于纹理转换跟踪的OpenGL层次化实现验证方法 - Google Patents
一种基于纹理转换跟踪的OpenGL层次化实现验证方法 Download PDFInfo
- Publication number
- CN117724987B CN117724987B CN202410179337.7A CN202410179337A CN117724987B CN 117724987 B CN117724987 B CN 117724987B CN 202410179337 A CN202410179337 A CN 202410179337A CN 117724987 B CN117724987 B CN 117724987B
- Authority
- CN
- China
- Prior art keywords
- opengl
- texture
- interface
- vulkan
- gpu
- 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 52
- 238000012795 verification Methods 0.000 title claims abstract description 34
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 29
- 238000013507 mapping Methods 0.000 claims description 24
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 9
- 238000009877 rendering Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100065701 Arabidopsis thaliana ETC2 gene Proteins 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- 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
- Image Generation (AREA)
Abstract
本发明公开了一种基于纹理转换跟踪的OpenGL层次化实现验证方法,首先判断待测GPU的图形驱动是否支持Vulkan库,如果不支持则说明直接实现了OpenGL接口,否则构建接口实现方式测试程序,并在OpenGL和Vulkan间纹理转换相关的关键API内增加监测代码跟踪纹理转换,如果存在转换则说明基于Vulkan接口实现的OpenGL接口,否则说明直接实现了OpenGL接口,由此能够以软件方式准确判断GPU图形驱动对OpenGL接口的实现方式。
Description
技术领域
本发明属于计算机软件开发技术领域,具体涉及一种基于纹理转换跟踪的OpenGL层次化实现验证方法。
背景技术
目前大多数的图形应用都是基于OpenGL开发的,因此采用直接支持OpenGL的GPU运行此类图形应用是最高效的方法。随着技术的发展出现了Vulkan图形API。OpenGL和Vulkan是两种不同的图形API,提供的纹理格式也不完全相同,与OpenGL相比Vulkan的控制能力更广泛、支持的新式格式更多。具体来说,OpenGL的纹理格式(Texture Format)被定义为内部格式(Internal Format),其确定了图像数据在GPU内存中存储的布局及精度。OpenGL的纹理格式包括纹理类型、颜色组件及支持的数据类型,其中,纹理类型包括1D、2D、3D、Cube Map等,颜色组件包括RGB、RGBA、Luminance Alpha等,数据类型包括UnsignedByte、Float等。Vulkan使用VkFormat枚举类型指定具体的纹理格式,各纹理格式均具有包括通道位数和类型等信息的规范说明,此外,Vulkan还支持sRGB格式及更细粒度的纹理压缩格式,如ASTC、ETC2、BC等。总体来说,Vulkan提供了更加丰富和精细的纹理格式选择,并使开发者有更大的控制自由去优化图像的存储和访问。
然而,现有情况是多数GPU实际仅提供对Vulkan接口的支持,尤其是基于移动GPUIP实现的GPU通常不能直接支持OpenGL,一般采用基于Vulkan接口这类层次化的方式实现OpenGL,但其往往对外宣称直接支持OpenGL,采用这种方式实现的OpenGL有可能导致部分图形应用无法使用,因此验证OpenGL的实际实现方式是非常必要的,目前对于此类问题还没有更准确高效的解决办法。
发明内容
有鉴于此,本发明提供了一种基于纹理转换跟踪的OpenGL层次化实现验证方法,实现了以软件方式对GPU图形驱动是否实现了OpenGL接口以及以何种方式实现了OpenGL接口的准确高效判断。
本发明提供的一种基于纹理转换跟踪的OpenGL层次化实现验证方法,包括以下步骤:
步骤1、检测待测GPU的图形驱动是否支持Vulkan接口,如果支持则执行步骤2;否则判定待测GPU为直接实现了OpenGL接口,结束本流程;
步骤2、构建接口实现方式测试程序,在接口实现方式测试程序中生成目标位图,采用OpenGL接口创建纹理对象,基于目标位图创建纹理,设定纹理的格式为OpenGL的内部格式,为纹理分配数据缓冲区记为OpenGL纹理缓冲区,再对纹理执行纹理渲染操作;
步骤3、确定待测GPU的图形驱动中与OpenGL和Vulkan间纹理转换相关的关键API,在关键API中增加监测代码,由监测代码获取Vulkan接口分配的存储空间及接口实现方式测试程序分配的存储空间,若两个存储空间中的数据相同则输出验证过程结束,否则输出执行后续流程;
步骤4、启动待测GPU所在系统,再启动接口实现方式测试程序,若系统输出验证过程结束则判定待测GPU的图形驱动基于Vulkan接口实现的OpenGL接口,并终止执行接口实现方式测试程序,完成验证结束本流程;若系统输出执行后续流程,则待接口实现方式测试程序执行完毕,判定待测GPU的图形驱动为直接实现了OpenGL接口,完成验证结束本流程。
进一步地,所述步骤2中所述纹理对象为2D类型。
进一步地,所述步骤3中所述关键API包括:vkBindImageMemory、vkCmdCopyBufferToImage及vkCmdCopyImage。
进一步地,所述步骤3中所述在关键API中增加监测代码的方式为对关键API执行Hook操作。
进一步地,所述步骤3中所述存储空间为内存或显存。
进一步地,所述vkBindImageMemory内增加监测代码的执行过程为:获取Vulkan接口当前的图像对象VkImage所使用的存储空间,建立VkImage的ID与该存储空间之间的映射关系,记为第一映射关系,将第一映射关系加入第一映射关系列表中,再执行原vkBindImageMemory中的处理流程;
所述vkCmdCopyBufferToImage内增加监测代码的执行过程为:先执行原vkCmdCopyBufferToImage中的处理流程,根据vkCmdCopyBufferToImage所调用的VkImage的ID在第一映射关系列表查找到与之对应的存储空间,并将该存储空间记为目标内存空间,获取接口实现方式测试程序所生成纹理的数据缓冲区即OpenGL纹理缓冲区,若目标内存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,否则输出执行后续流程。
进一步地,所述vkCmdCopyImage内增加监测代码的执行过程为:先执行原vkCmdCopyImage中的处理流程,将vkCmdCopyImage执行复制操作的当前显存的地址映射到内存对应的地址空间,将映射得到的内存记为目标显存空间,获取接口实现方式测试程序所生成纹理对象的数据缓冲区即OpenGL纹理缓冲区,若目标显存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,否则输出执行后续流程。
有益效果
本发明首先判断待测GPU的图形驱动是否支持Vulkan接口,如果不支持则说明直接实现了OpenGL接口,否则构建接口实现方式测试程序,并在OpenGL和Vulkan间纹理转换相关的关键API内增加监测代码跟踪纹理转换,如果存在转换则说明基于Vulkan接口实现的OpenGL接口,否则说明直接实现了OpenGL接口,由此能够以软件方式准确判断GPU图形驱动对OpenGL接口的实现方式。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供了一种基于纹理转换跟踪的OpenGL层次化实现验证方法,其核心思想是:首先判断待测GPU的图形驱动是否支持Vulkan接口,如果不支持则说明直接实现了OpenGL接口,否则构建接口实现方式测试程序,并在OpenGL和Vulkan间纹理转换相关的关键API内增加监测代码,在接口实现方式测试程序执行过程中判断Vulkan接口分配的存储空间及接口实现方式测试程序分配的存储空间中的数据是否一致,如果一致则说明基于Vulkan接口实现的OpenGL接口,否则说明直接实现了OpenGL接口。
本发明提供的一种基于纹理转换跟踪的OpenGL层次化实现验证方法,具体包括以下步骤:
步骤1、检测待测GPU的图形驱动是否支持Vulkan接口,如果支持则执行步骤2;否则判定待测GPU为直接实现了OpenGL接口,结束本流程。
其中,检测待测GPU的图形驱动是否支持Vulkan库的方式,包括在待测GPU所在系统上执行Vulkan中的相关命令,如果执行正常则说明待测GPU的图形驱动支持Vulkan库,否则说明不支持;还可以检测待测GPU的图形驱动程序代码中是否包含Vulkan库的方式进行判断,如果包含则说明待测GPU的图形驱动支持Vulkan库,否则说明不支持。
步骤2、构建接口实现方式测试程序,在接口实现方式测试程序中生成目标位图,采用OpenGL接口创建设定类型的纹理对象,基于目标位图创建纹理,设定纹理的格式为OpenGL的内部格式,为纹理分配数据缓冲区记为OpenGL纹理缓冲区,再对纹理执行纹理渲染操作。
步骤3、确定待测GPU的图形驱动中与OpenGL和Vulkan间纹理转换相关的关键API,包括vkBindImageMemory、vkCmdCopyBufferToImage及vkCmdCopyImage;修改待测GPU的图形驱动,即在关键API中增加监测代码,由监测代码分别获取Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间,若两个存储空间中的数据相同则输出验证过程结束,否则输出执行后续流程。
进一步地,OpenGL和Vulkan间纹理转换相关的关键API还可选用vkCreateImage、vkAllocateMemory、vkMapMemory、vkUnmapMemory等。
进一步地,当监测代码获取Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间内的数据时,锁定Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间,并在比较分析后解锁Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间。
这种情况,步骤3中由监测代码分别获取Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间,若两个存储空间中的数据相同则输出验证过程结束,否则解锁Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间,实际的执行过程为:由监测代码分别获取并锁定Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间,若两个存储空间中的数据相同则输出验证过程结束,否则解锁Vulkan库分配的存储空间及接口实现方式测试程序分配的存储空间。
具体来说,以vkBindImageMemory、vkCmdCopyBufferToImage及vkCmdCopyImage作为关键API,可通过对上述关键API执行Hook操作实现对其执行过程的监测,vkBindImageMemory和vkCmdCopyBufferToImage两个函数主要用于监测内存中的纹理数据的拷贝,vkCmdCopyImage函数则用于监测显存中的纹理数据的拷贝。
其中,为vkBindImageMemory构造的Hook函数,执行过程为:获取Vulkan接口当前的图像对象VkImage所使用的存储空间,建立VkImage的ID与该存储空间之间的映射关系,记为第一映射关系,将第一映射关系加入第一映射关系列表中,再执行原vkBindImageMemory中的处理流程。其中,第一映射关系中记录存储空间的地址,该存储空间可为内存或显存。
为vkCmdCopyBufferToImage构造的Hook函数,执行过程为:先执行原vkCmdCopyBufferToImage中的处理流程,锁定当前系统存储空间操作防止数据被修改,根据vkCmdCopyBufferToImage所调用的VkImage的ID在第一映射关系列表查找到与之对应的存储空间,并将该存储空间记为目标内存空间,获取接口实现方式测试程序所生成纹理的数据缓冲区即OpenGL纹理缓冲区,若目标内存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,若数据不同则解除对当前系统存储空间的锁定。其中,锁定的当前系统存储空间包括内存和显存。
为vkCmdCopyImage构造的Hook函数,执行过程为:先执行原vkCmdCopyImage中的处理流程,锁定当前系统存储空间操作防止数据被修改,将vkCmdCopyImage执行复制操作的当前显存的地址映射到内存对应的地址空间,将映射得到的内存记为目标显存空间,获取接口实现方式测试程序所生成纹理对象的数据缓冲区即OpenGL纹理缓冲区,若目标显存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,若数据不同则解除对当前系统存储空间的锁定。
步骤4、启动步骤3修改后的待测GPU所在系统,再启动接口实现方式测试程序,若系统输出验证过程结束,则判定待测GPU的图形驱动基于Vulkan接口实现的OpenGL接口,并终止接口实现方式测试程序的执行,完成验证过程;若系统输出执行后续流程,则待接口实现方式测试程序执行完毕后,判定待测GPU的图形驱动为直接实现了OpenGL接口,完成验证过程。
实施例
本实施例中采用本发明提供的一种基于纹理转换跟踪的OpenGL层次化实现验证方法实现了对待测GPU的图形驱动中OpenGL接口实现方式的判断,具体包括以下步骤:
S1、构建针对待测GPU的图形驱动的接口实现方式测试程序,包括:
S1.1、初始化待测GPU所在系统内的OpenGL环境,确保接口实现方式测试程序完成了OpenGL上下文的设置。
S1.2、生成纹理对象,将该纹理对象绑定到GL_TEXTURE_2D目标,即声明该纹理对象为2D类型的纹理对象。除此之外,纹理对象也可采用其他类型。
示例代码如下:
{GLuint textureID;
glGenTextures(1,&textureID);
glBindTexture(GL_TEXTURE_2D,textureID);}
S1.3、使用glTexImage2D函数创建纹理,并设置纹理的格式为GL_RGBA8的内部格式。
实例代码如下:
{glTexImage2D(GL_TEXTURE_2D,//纹理目标
0,//mipmap等级
GL_RGBA8,//纹理存储的内部格式
width,//纹理宽度
height,//纹理高度
0,//边框
GL_RGBA,//纹理数据的格式
GL_UNSIGNED_BYTE,//纹理数据的类型
TexBuffer);//纹理数据指针}
其中,width和height表示纹理的尺寸,TexBuffer为位图对应的数据缓冲区指针,本实施例基于该位图创建的纹理,该位图可为本发明随机生成的位图并确保其唯一性。
S1.4、调用glGetTexImage获取生成的纹理的数据缓冲区指针,记为openglTextureBuffer,该数据缓冲区内的数据虽然是由TexBuffer生成的,但内容和TexBuffer不同,其中包含了纹理信息。
S1.5、对S1.3创建的OpenGL纹理执行纹理渲染操作。
具体包括以下步骤:
S1.5.1、绑定纹理,并在着色器程序中进行采样,示例代码如下:
{glActiveTexture(GL_TEXTURE0);//激活纹理单元
glBindTexture(GL_TEXTURE_2D,textureID);//绑定纹理}
S1.5.2、在着色器中使用采样器uniform引用纹理单元,并通过该采样器访问纹理数据。在顶点/片段着色器中的示例代码为:
{uniformsampler2D u_texture;//uniform采样器变量
...
void main(){
...
vec4 color=texture(u_texture,texCoords);//使用纹理坐标texCoords获取颜色
...
}}
S1.5.3、在渲染循环中,确保已将采样器与相应的纹理单元关联起来,示例代码为:
{GLint textureUniformLocation=glGetUniformLocation(shaderProgram,"u_texture");
glUniform1i(textureUniformLocation,0);//0对应于GL_TEXTURE0}
S1.5.4、执行渲染操作将纹理应用到对应的几何体上。
S2、将OpenGL纹理转换为Vulkan纹理一定会用到API作为关键API,Hook核心API,即Hook以下三个函数:vkBindImageMemory和vkCmdCopyBufferToImage,vkCmdCopyImage。
具体来说,在将OpenGL纹理转换为Vulkan纹理时,一定会将OpenGL纹理的内容复制到某个VkImage对象内,然后基于该VkImage对象进行格式转换,对本实施例来说,就是将格式为GL_RGBA8的VkImage对象进行转码,转码为格式为VK_FORMAT_R8G8B8A8_UNORM的VkImage对象。
通过在Hook函数内检测Vulkan库是否执行了将接口实现方式测试程序中构造的格式为GL_RGBA8的纹理转换为Vulkan的VK_FORMAT_R8G8B8A8_UNORM格式的纹理的操作。
vkBindImageMemory的Hook函数执行步骤包括:
S2.1.1、建立VkImage的ID与内存或显存的映射关系,并将映射关系加入到列表vkImageId2Buffer中;
S2.1.2、执行标准vkBindImageMemory。
vkCmdCopyBufferToImage的Hook函数执行步骤如下:
S2.2.1、执行标准vkCmdCopyBufferToImage;
S2.2.2、禁用fence或者其他用于Buffer数据的信号量,以防止数据被篡改;
S2.2.3、根据当前vkCmdCopyBufferToImage调用的imageID,在vkImageId2Buffer中查找对应的内存或显存,记为vkImageBuffer;
S2.2.4、比较vkImageBuffer与openglTextureBuffer的内容,如二者相同,则报出OpenGL接口是基于Vulkan接口实现的,并退出当前程序;否则恢复fence或者其他用于Buffer数据的信号量。
vkCmdCopyImage的Hook函数执行步骤如下:
S2.3.1、执行标准vkCmdCopyImage;
S2.3.2、禁用fence或者其他用于Buffer数据的信号量,以防止数据被篡改;
S2.3.3、锁定复制的目标显存地址,将该显存地址映射到内存地址空间,记为vkImageBufferInRAM;
S2.3.4、比较vkImageBufferInRAM与openglTextureBuffer的内容,如二者相同,则报出OpenGL接口是基于Vulkan接口实现的,并退出当前程序;否则恢复fence或者其他用于Buffer数据的信号量。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于纹理转换跟踪的OpenGL层次化实现验证方法,其特征在于,包括以下步骤:
步骤1、检测待测GPU的图形驱动是否支持Vulkan接口,如果支持则执行步骤2;否则判定待测GPU为直接实现了OpenGL接口,结束本流程;
步骤2、构建接口实现方式测试程序,在接口实现方式测试程序中生成目标位图,采用OpenGL接口创建纹理对象,基于目标位图创建纹理,设定纹理的格式为OpenGL的内部格式,为纹理分配数据缓冲区,记为OpenGL纹理缓冲区,再对纹理执行纹理渲染操作;
步骤3、确定待测GPU的图形驱动中与OpenGL和Vulkan间纹理转换相关的关键API,在关键API中增加监测代码,由监测代码获取Vulkan接口分配的存储空间及接口实现方式测试程序分配的存储空间,若两个存储空间中的数据相同则输出验证过程结束,否则输出执行后续流程;
步骤4、启动待测GPU所在系统,再启动接口实现方式测试程序,若系统输出验证过程结束,则判定待测GPU的图形驱动为基于Vulkan接口实现的OpenGL接口,并终止执行接口实现方式测试程序,完成验证结束本流程;若系统输出执行后续流程,则待接口实现方式测试程序执行完毕,判定待测GPU的图形驱动为直接实现了OpenGL接口,完成验证结束本流程;
所述步骤3中所述关键API包括:vkBindImageMemory、vkCmdCopyBufferToImage及vkCmdCopyImage。
2.根据权利要求1所述的OpenGL层次化实现验证方法,其特征在于,所述步骤2中所述纹理对象为2D类型。
3.根据权利要求1所述的OpenGL层次化实现验证方法,其特征在于,所述步骤3中所述在关键API中增加监测代码的方式为对关键API执行Hook操作。
4.根据权利要求1所述的OpenGL层次化实现验证方法,其特征在于,所述步骤3中所述存储空间为内存或显存。
5.根据权利要求1所述的OpenGL层次化实现验证方法,其特征在于,所述vkBindImageMemory内增加监测代码的执行过程为:获取Vulkan接口当前的图像对象VkImage所使用的存储空间,建立VkImage的ID与该存储空间之间的映射关系,记为第一映射关系,将第一映射关系加入第一映射关系列表中,再执行原vkBindImageMemory中的处理流程;
所述vkCmdCopyBufferToImage内增加监测代码的执行过程为:先执行原vkCmdCopyBufferToImage中的处理流程,根据vkCmdCopyBufferToImage所调用的VkImage的ID在第一映射关系列表查找到与之对应的存储空间,并将该存储空间记为目标内存空间,获取接口实现方式测试程序所生成纹理的数据缓冲区即OpenGL纹理缓冲区,若目标内存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,否则输出执行后续流程。
6.根据权利要求1所述的OpenGL层次化实现验证方法,其特征在于,所述vkCmdCopyImage内增加监测代码的执行过程为:先执行原vkCmdCopyImage中的处理流程,将vkCmdCopyImage执行复制操作的当前显存的地址映射到内存对应的地址空间,将映射得到的内存记为目标显存空间,获取接口实现方式测试程序所生成纹理对象的数据缓冲区即OpenGL纹理缓冲区,若目标显存空间及OpenGL纹理缓冲区中存储的数据相同则输出验证过程结束,否则输出执行后续流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410179337.7A CN117724987B (zh) | 2024-02-18 | 2024-02-18 | 一种基于纹理转换跟踪的OpenGL层次化实现验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410179337.7A CN117724987B (zh) | 2024-02-18 | 2024-02-18 | 一种基于纹理转换跟踪的OpenGL层次化实现验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117724987A CN117724987A (zh) | 2024-03-19 |
CN117724987B true CN117724987B (zh) | 2024-05-17 |
Family
ID=90203874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410179337.7A Active CN117724987B (zh) | 2024-02-18 | 2024-02-18 | 一种基于纹理转换跟踪的OpenGL层次化实现验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724987B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022095808A1 (zh) * | 2020-11-06 | 2022-05-12 | 华为技术有限公司 | 基于Vulkan实现图形渲染的方法及相关装置 |
CN116962813A (zh) * | 2023-07-31 | 2023-10-27 | 摩尔线程智能科技(北京)有限责任公司 | 一种yuv数据渲染系统及方法、电子设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2946074C (en) * | 2015-10-21 | 2024-02-13 | Stephen Viggers | Systems and methods for using an opengl api with a vulkan graphics driver |
US10789669B2 (en) * | 2017-08-09 | 2020-09-29 | Channel One Holdings Inc. | Systems and methods for using EGL with an OpenGL API and a Vulkan graphics driver |
US20230196677A1 (en) * | 2021-12-16 | 2023-06-22 | Nvidia Corporation | Application programming interface to create and modify graphics objects |
-
2024
- 2024-02-18 CN CN202410179337.7A patent/CN117724987B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022095808A1 (zh) * | 2020-11-06 | 2022-05-12 | 华为技术有限公司 | 基于Vulkan实现图形渲染的方法及相关装置 |
CN116962813A (zh) * | 2023-07-31 | 2023-10-27 | 摩尔线程智能科技(北京)有限责任公司 | 一种yuv数据渲染系统及方法、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
高性能GPU模拟器驱动设计研究;赵士彭;张立志;赵皓宇;苏孟豪;刘苏;;高技术通讯;20200515(第05期);第5页-12页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117724987A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7710430B2 (en) | Methods, systems, and data structures for generating a rasterizer | |
US8659589B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
US20200327715A1 (en) | Graphics library extensions | |
US9865084B2 (en) | Graphics processing using attributes with associated meta information | |
US7907145B1 (en) | Multiple data buffers for processing graphics data | |
US8547382B2 (en) | Video graphics system and method of pixel data compression | |
US20160148338A1 (en) | Optimized multi-pass rendering on tiled base architectures | |
US7609273B1 (en) | Pixel load instruction for a programmable graphics processor | |
CN101675453A (zh) | 用于分析对于应用程序修改前命令改变的性能的图形命令管理工具和方法 | |
US10504281B2 (en) | Tracking pixel lineage in variable rate shading | |
KR102659643B1 (ko) | 레지던시 맵 디스크립터 | |
CN111989715A (zh) | 用于与硬件实例化兼容的gpu的压缩可见性状态 | |
CN117724987B (zh) | 一种基于纹理转换跟踪的OpenGL层次化实现验证方法 | |
CN106204413A (zh) | 利用分层加速结构的图形渲染 | |
CN117743195B (zh) | 基于渲染时间差异度量的图形接口层次化实现验证方法 | |
CN115861511B (zh) | 绘制命令的处理方法、装置、系统和计算机设备 | |
CN117830457B (zh) | 一种基于帧内信号量的渲染同步优化方法 | |
CN115880134B (zh) | 采用矢量寄存器的常量数据处理方法及图形处理器、介质 | |
Trapp | OpenGL-Performance and Bottlenecks | |
CN117170953A (zh) | 一种基于多路视频编码的渲染差异比对方法 | |
CN118276929A (zh) | 一种二进制文件的跨平台兼容方法、设备、装置和系统 | |
CN118689488A (zh) | 一种gpu编译器前置属性配置方法 | |
CN117395434A (zh) | 硬件编解码调试方法、装置、设备及存储介质 | |
JP2006039926A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |