CN117830457B - 一种基于帧内信号量的渲染同步优化方法 - Google Patents
一种基于帧内信号量的渲染同步优化方法 Download PDFInfo
- Publication number
- CN117830457B CN117830457B CN202410247637.4A CN202410247637A CN117830457B CN 117830457 B CN117830457 B CN 117830457B CN 202410247637 A CN202410247637 A CN 202410247637A CN 117830457 B CN117830457 B CN 117830457B
- Authority
- CN
- China
- Prior art keywords
- function
- data frame
- frame
- memory
- 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 47
- 238000009877 rendering Methods 0.000 title claims abstract description 35
- 238000005457 optimization Methods 0.000 title claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 21
- 230000006870 function Effects 0.000 claims description 85
- 239000000872 buffer Substances 0.000 claims description 27
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 14
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000006386 memory function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000012536 storage buffer Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种基于帧内信号量的渲染同步优化方法,在系统执行每帧数据的渲染操作时通过监测数据帧中最后一个字节的写操作完成情况以实时确定渲染操作的执行过程,当最后一个字节的数据写入后直接执行GPU提供的同步函数完成数据帧的上屏操作,上述过程无需图形应用程序参与,避免了图形应用程序与相关系统API之间的调用,省去了内核态到用户态之间的多次转换,显著减少了帧同步延迟,提升了渲染流畅性,此外,本发明的实现无需修改应用程序具有广泛的通用性。
Description
技术领域
本发明属于计算机软件开发技术领域,具体涉及一种基于帧内信号量的渲染同步优化方法。
背景技术
现有计算机软件开发中通常采用图形API编写与图形处理相关的图形应用程序,上述图形API包括OpenGL、DirectX、Vulkan等等。这些图形应用程序通常在完成一帧数据的渲染后,还需要再由图形应用程序主动调用相关系统API实现帧同步,即执行数据的上屏操作。该操作过程要求图形应用程序只有在等待一系列渲染API完成调用后才能调用帧同步API执行上屏操作,而渲染过程通常会涉及多线程同步、函数返回等待等操作,调用帧同步又将引入一个完整的帧同步调用延迟,这些操作涉及内核态到用户态之间的多次转换,占用整个图形渲染时间的20%以上,因此会引入较大的系统延迟,降低渲染流畅性,难以满足追求高帧率的游戏类等图形应用的帧率要求。
发明内容
有鉴于此,本发明提供了一种基于帧内信号量的渲染同步优化方法,能够以应用程序透明的方式实现各类图形应用程序的高效渲染同步。
本发明提供的一种基于帧内信号量的渲染同步优化方法,具体包括以下步骤:
步骤1、在系统执行数据帧的渲染操作时,监测与图像对象创建相关的函数记为第一函数,获取第一函数内设置的图像特征,计算图像特征对应的存储空间,累加所有的存储空间得到数据帧占用的实际存储空间;为数据帧分配全局唯一的数据帧ID,将数据帧ID添加至待同步帧列表中;
步骤2、监测为图像对象分配存储空间的函数记为第二函数,获取第二函数返回的内存缓冲区的起始地址记为数据帧起始地址,将数据帧起始地址与实际存储空间求和后与1的差值作为数据帧目标地址;
步骤3、若GPU以内存作为显存则执行步骤4,否则执行步骤5;
步骤4、监测系统中与内存写操作相关的函数记为第三函数,获取第三函数的输入参数记为第一参数,若第一参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,结束本流程;否则执行步骤6;
步骤5、监测GPU驱动中与写显存相关的函数记为第四函数,获取第四函数的输入参数记为第二参数,若第二参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,结束本流程;否则执行步骤6;
步骤6、按照系统原有方式执行后续操作完成数据帧的渲染操作结束本流程。
进一步地,所述步骤1中所述图像特征包括图像分辨率、图像像素格式、数据缓冲、着色器缓冲、纹理及采样器。
进一步地,所述步骤1中所述计算图像特征对应的存储空间的方式为:在第一次计算图像特征所占存储空间大小时建立图像特征与其所占存储空间大小间的映射关系,再次计算相同图像特征时直接从映射关系中获取其所占存储空间大小。
进一步地,所述步骤3还包括若GPU提供了监测显存写操作的API则执行步骤4。
进一步地,所述GPU提供的同步函数的执行方式为:将同步函数的输入参数记为第三参数,若第三参数中数据帧的数据帧ID在待同步帧列表中则完成后续的上屏操作,否则不执行后续操作结束同步函数的执行过程。
进一步地,所述步骤4中所述监测系统中与内存写操作相关的函数记为第三函数的方式为:在x86平台上通过DR0-DR7寄存器监测内存地址实现。
进一步地,所述步骤4中所述监测系统中与内存写操作相关的函数记为第三函数的方式为:对于英伟达的GPU平台上采用CUDA API监测写显存操作实现。
有益效果
本发明在系统执行每帧数据的渲染操作时,通过监测数据帧中最后一个字节的写操作完成情况以实时确定渲染操作的执行过程,当最后一个字节的数据写入后直接执行GPU提供的同步函数完成数据帧的上屏操作,上述过程无需图形应用程序参与,避免了图形应用程序与相关系统API之间的调用,省去了内核态到用户态之间的多次转换,显著减少了帧同步延迟,提升了渲染流畅性,此外,本发明的实现无需修改应用程序具有广泛的通用性。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供的一种基于帧内信号量的渲染同步优化方法,其核心思想是:在系统执行每帧数据的渲染操作时,通过监测数据帧中最后一个字节的写操作完成情况以实时确定渲染操作的执行过程,当最后一个字节的数据写入后直接执行GPU提供的同步函数完成数据帧的上屏操作,上述过程无需图形应用程序参与,避免了图形应用程序与相关系统API之间的调用,省去了内核态到用户态之间的多次转换。
本发明提供的一种基于帧内信号量的渲染同步优化方法,具体包括以下步骤:
步骤1、在系统执行每帧数据的渲染操作时,监测被调用的、与图像对象创建相关的函数记为第一函数,获取第一函数内设置的与存储空间分配相关的图像特征,包括图像分辨率、图像像素格式、数据缓冲、着色器缓冲、纹理、采样器等,累加所有图像特征对应的存储空间得到渲染该数据帧实际所需占用的存储空间大小,记为实际存储空间;同时为该数据帧分配全局唯一的ID记为数据帧ID,将数据帧ID添加至待同步帧列表中。
具体来说,图形API中与图像创建相关的函数,如Vulkan接口提供的用于创建图像对象VkImage或VkBuffer的函数vkCreateImage,该函数提供了VkImageCreateInfo结构的数组,该数组指定了创建一个或多个图像对象的重要图像特征,包括深度缓冲、模板缓冲、帧缓冲附件、Uniform缓冲等。在图像对象创建时,系统还未在设备上为该图像对象分配物理存储空间,但是创建图像对象的过程中确定了与分配存储空间相关的逻辑内存信息,该内存信息来自 VkImageCreateInfo对象,其中包含格式、图像大小、创建标志、图像特征等等。
由于图像特征所占存储空间大小与数据帧的大小无关,因此,为了进一步提高实际存储空间的计算效率,本发明可在第一次计算某图像特征所占存储空间大小时建立图像特征与其所占存储空间大小间的映射关系,以便在计算其他具有相同图像特征的数据帧的实际存储空间时不必再次计算该图像特征的所占存储空间大小。
步骤2、监测用于为图像对象分配存储空间的函数记为第二函数,获取第二函数返回的内存缓冲区的起始地址记为数据帧起始地址,将数据帧起始地址与实际存储空间求和后与1的差值作为数据帧目标地址。
为图像对象分配存储空间的函数,如Vulkan接口提供的vkAllocateMemory函数来分配VkDeviceMemory类型的设备内存对象。
步骤3、若GPU以内存作为显存或GPU提供了监测显存写操作的API则执行步骤4,否则执行步骤5。
在实际使用过程中,GPU可以采用系统存储中的内存存储数据,也可以采用位于GPU内部的GPU设备存储即为显存存储数据。
步骤4、监测系统中与内存写操作相关的函数记为第三函数,获取第三函数的输入参数记为第一参数,第一参数中包含写操作的执行对象即待写入数据的内存缓冲区的起始地址及地址范围,若第一参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,即完成当前数据帧的渲染操作结束本流程;否则执行步骤6。
其中,监测第三函数的方式根据平台或芯片的不同采用不同的方式实现,例如,x86平台上监测第三函数的方式为通过DR0-DR7寄存器监测内存地址,对于英伟达的中高端GPU平台监测写显存的操作可利用CUDA API监测写显存操作。
在x86架构中DR0-DR7是调试寄存器(Debug Registers),DR0-DR3用于存储断点地址,DR6和DR7用于存储控制和状态信息。这些寄存器可用于硬件断点,即在特定的内存地址上设置断点以监测对内存的执行、写入或访问操作。以下是通过DR0-DR7寄存器监测内存地址被修改的基本步骤包括:
步骤4.1.1、选择一个空闲的调试寄存器,如DR0,将需要监测的内存地址设置到该调试寄存器中。
步骤4.1.2、设置DR7寄存器启用对应的断点,并指定断点的类型,具体包括设置长度LENn和读写位R/Wn:
-LENn:指定要监测的数据长度,通常为1、2、4或8字节;
-R/Wn:指定断点的触发条件,00表示仅在执行时触发,01表示数据写入时触发,10表示I/O读写时触发,11表示数据读取或写入时触发;
具体来说,每一个调试寄存器(DR0-DR3)对应DR7中两个用于控制的位,DR0对应DR7中的L0(第0位)和G0(第1位),用于局部和全局开关;DR1对应DR7中的L1(第2位)和G1(第3位);DR2对应DR7中的L2(第4位)和G2(第5位);DR3对应DR7中的L3(第6位)和G3(第7位);例如,监控DR0寄存器所对应地址的写操作,则需要在DR7设置L0启用局部断点和设置触发条件为写入R/W0。
步骤4.1.3、当程序运行到设置断点的地址进行了指定操作时,如写操作,处理器会进入调试异常(Debug Exception),产生一个中断。
步骤4.1.4、在异常处理程序中,检查DR6寄存器确定哪一个断点被触发,DR6的第0到第3位分别对应了DR0到DR3的断点触发状态。
实际实现过程中,使用硬件断点需要有相应的权限,通常需要在操作系统的内核模式下才能设置。而在用户模式下,可以通过ptrace系统调用请求内核设置硬件断点。此外,在多线程环境下,其他线程可能会影响或清除DR寄存器的取值,因此需要进行同步操作。
对于英伟达的中高端GPU平台监测写显存的操作需要利用CUDA API监测写显存操作,通常需要使用CUDA的运行时API或者驱动API来跟踪显存写入事件。CUDA API本身并不直接提供显存写入监测功能,可通过分析显存管理和内核执行的相关信息来间接获得显存写入的数据。具体过程包括:
步骤4.2.1、记录显存分配(cudaMalloc、cudaMallocPitch),通过跟踪所有显存分配的调用,了解程序对显存的需求并创立一个显存分配记录。
步骤4.2.2、跟踪内核执行过程,当CUDA内核启动时会执行写显存操作,采用CUDA运行时API中的cudaEventCreate、cudaEventRecord、cudaEventSynchronize和cudaEventElapsedTime等函数可在内核执行前后放置事件跟踪其执行时间。
步骤4.2.3、使用CUDA流监测写操作。CUDA流是异步执行的概念,使用cudaStreamCreate、cudaMemcpyAsync、cudaStreamSynchronize等函数将显存的写操作放入不同的流中以监控写操作是否按预期完成。
步骤4.2.4、利用CUDA的Memory Checker检测运行时内存访问错误。CUDA工具链中包含Memory Checker工具用于检测运行时内存访问错误,如非法访问、越界、竞争及显存泄露等问题。
步骤4.2.5、分析API调用推断显存的写操作。针对显存的写操作,主要由cudaMemcpy、cudaMemcpyAsync、cudaMemcpyToSymbol、cudaMemcpyToSymbolAsync等拷贝函数来完成,可跟踪这些函数的调用记录它们的调用次数、传输的数据量、源和目标指针等信息,通过这些记录数据推断显存写操作的情况。
步骤4.2.6、使用CUPTI推断显存的写操作。CUDA Profiling Tools Interface(CUPTI)是CUDA工具套件的一部分,提供了用于收集性能数据的API。采用CUPTI能够获取有关内存传输和内核执行的详细信息,进而推断写显存的操作。
上述方法是通过跟踪和分析CUDA程序执行过程中显存使用相关的事件,以监测显存的写入模式。若实现实时监控则需要更深入的系统级工具或硬件的支持。
步骤5、监测GPU驱动中与写显存操作相关的函数记为第四函数,获取第四函数的输入参数记为第二参数,第二参数中包含写操作的执行对象即待写入数据的显存缓冲区的起始地址及地址范围;若第二参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,即完成当前数据帧的渲染操作结束本流程;否则执行步骤6。
步骤6、按照系统的原有方式执行后续操作,完成当前数据帧的渲染操作结束本流程。
为了进一步提高上屏操作的可靠性,本发明对GPU提供的同步函数进行了如下修改:将同步函数的输入参数记为第三参数,若第三参数中数据帧的数据帧ID在待同步帧列表中则完成后续的上屏操作,否则不执行后续操作结束同步函数的执行过程。
实施例
本实施例以Vulkan接口为例,采用本发明提供的一种基于帧内信号量的渲染同步优化方法通过修改相关图像API实现了各类图形应用程序的高效渲染同步,具体包括以下步骤:
S1、监测渲染操作中一帧数据的创建操作,即监测VkBuffer或VkImage对象的创建过程,计算函数执行过程中所占用显存的大小,具体步骤如下:
S1.1、修改vkCreateBuffer和vkCreateImage函数,监视VkBuffer或VkImage对象的创建。
S1.2、获取vkCreateBuffer和vkCreateImage这两个函数的输入参数VkBufferCreateInfo和VkImageCreateInfo结构体,根据结构体中的数据帧参数计算一帧数据的实际大小,即实际存储空间。
Vulkan接口中相关API如vkBindBufferMemory或vkBindImageMemory,可在实际绑定显存时获取显存大小,但此时获取的显存大小是按照32、64甚至128字节对齐后的大小,这种情况下数据帧的实际大小往往与该显存大小不同,即数据帧的最后一个字节大概率不是该显存大小确定的最后一个字节,因此,为了能够准确监测数据帧的最后一个字节就需要计算数据帧的实际大小。数据帧的实际大小的计算过程包括图像所占显存大小的计算及其他相关属性所占显存大小的计算。
图像所占显存大小的计算:获取图像的分辨率和像素格式,例如,对于交换链图像(Swapchain Images)来说交换链中每个图像的分辨率和像素格式决定了其所占显存大小,如果分辨率为1920*1080且每个像素为32位色深,那么单个图像的大小为1920*1080*4字节,色深格式如VK_FORMAT_B8G8R8A8_UNORM。
其他相关属性所占显存大小的计算包括:
深度缓冲(Depth Buffer),如果使用深度测试则需要深度缓冲,深度缓冲的格式和交换链图像的分辨率也会影响显存的占用,深度缓冲的格式如VK_FORMAT_D32_SFLOAT等;
模板缓冲(Stencil Buffer),如果使用了模板测试则需要模板缓冲,模板缓冲的格式如VK_FORMAT_S8_UINT,该缓冲也会消耗一定的显存;
帧缓冲附件(Frame Buffer Attachments),除了标准的颜色缓冲、深度缓冲、模板缓冲等之外,还可能需要其他的帧缓冲附件,例如用于后期处理效果的附加颜色缓冲等;
Uniform缓冲(Uniform Buffer)或存储缓冲(Storage Buffer),着色器中用到的各种缓冲区,包括Uniform缓冲、存储缓冲等,这些缓冲区的大小均受到着色器使用情况的影响;
此外,还有其它资源如纹理(Texture)、采样器(Sampler)、顶点缓冲(VertexBuffer)和索引缓冲(Index Buffer)等,这些都将占用一定的显存。
这些相关属性可通过Vulkan接口提供的API函数查询特定资源的显存需求确定,此类API函数如vkGetImageMemoryRequirements。
将上述获取的图像所占显存大小及相关属性所占显存大小进行累加,累加结果即为一帧数据的实际存储空间。
S1.3、修改VkBuffer和(或)VkImage对象的数据结构,即在其中新增成员变量frameRealSize,将S1.2计算得到的实际存储空间保存到frameRealSize成员变量中。
S1.4、修改VkBuffer和(或)VkImage对象的数据结构,即在其中新增成员变量frameUUID,已实现为每帧数据分配一个全局唯一的ID,以解决图形应用并行渲染多帧数据时的标识问题。
S1.5、将数据帧的frameUUID加入待同步帧列表中,该列表记为frameToPresent。
S2、监视对数据帧内最后一个字节的写操作,判断该数据帧是否完成了渲染,具体包括:
S2.1、如果GPU是核显方式,即采用内存作为显存,或GPU提供了监视显存写操作的API,则采用CPU或GPU提供的相关机制监测数据帧内最后一个字节的写操作,而不必修改GPU的驱动程序。通过修改为数据帧绑定内存的函数vkBindBufferMemory和vkBindImageMemory实现执行以下步骤:
S2.1.1、执行vkBindBufferMemory和vkBindImageMemory的标准流程;
S2.1.2、获取vkBindBufferMemory和vkBindImageMemory返回的内存缓冲区起始地址,记为pFrameBuffer;
S2.1.3、获取当前数据帧的大小,即VkBuffer和VkImage中的成员变量frameRealSize的取值,利用CPU或GPU的相关API监视最后一个字节的写操作,即pFrameBuffer+frameRealSize-1对应地址的写操作;
S2.1.4、在写操作异常或断点捕获函数内,直接执行GPU提供的底层同步函数完成上屏操作;
S2.1.5、将当前数据帧的frameUUID从frameToPresent中移除。
S2.2、如果GPU不是核显方式,也未提供监视显存写操作的API,则修改GPU驱动内相关写显存函数,通过对写操作的目的地址的判断来监视一帧数据最后一个字节的写操作,具体步骤如下:
修改GPU驱动的写显存函数(如Vulkan接口的vkCmdCopyBuffer),判断待写入的目标地址范围是否包含此帧的最后一个字节,该写显存函数的输入参数都包含了目标缓冲区(VkBuffer)信息,VkBuffer内有数据帧的起始地址及写入数据的长度,但这个写入数据的长度可能仅是一帧数据的局部内容,因此需要对写入数据进行判断。如果写显存函数的输入参数的目标地址包含了pFrameBuffer+frameRealSize-1,则直接执行GPU提供的底层的同步函数执行上屏操作,再将当前数据帧的frameUUID从frameToPresent中移除;否则按照原有方式执行后续操作。
S3、修改Vulkan接口中与同步上屏相关的API,如vkQueuePresentKHR函数,修改后执行以下步骤:
S3.1、根据vkQueuePresentKHR函数的输入参数VkQueue,获取需要同步上屏的当前数据帧,若该数据帧的frameUUID在frameToPresent中则执行后续的标准操作,否则直接返回即不执行后续操作。
上述实施例以Vulkan接口为例说明本发明提供的一种基于帧内信号量的渲染同步优化方法的实现过程,对于其它接口如OpenGL、DirectX可采用类似思路,只需要调整具体API和属性。本发明适用于各种追求高帧率的游戏类应用,而对于主动控制上屏帧率的图形应用来说则不太适用。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于帧内信号量的渲染同步优化方法,其特征在于,具体包括以下步骤:
步骤1、在系统执行数据帧的渲染操作时,监测与图像对象创建相关的函数记为第一函数,获取第一函数内设置的图像特征,计算图像特征对应的存储空间,累加所有的存储空间得到数据帧占用的实际存储空间;为数据帧分配全局唯一的数据帧ID,将数据帧ID添加至待同步帧列表中;
步骤2、监测为图像对象分配存储空间的函数记为第二函数,获取第二函数返回的内存缓冲区的起始地址记为数据帧起始地址,将数据帧起始地址与实际存储空间求和后与1的差值作为数据帧目标地址;
步骤3、若GPU以内存作为显存则执行步骤4,否则执行步骤5;
步骤4、监测系统中与内存写操作相关的函数记为第三函数,获取第三函数的输入参数记为第一参数,若第一参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,结束本流程;否则执行步骤6;
步骤5、监测GPU驱动中与写显存相关的函数记为第四函数,获取第四函数的输入参数记为第二参数,若第二参数中包含数据帧目标地址,则执行GPU提供的同步函数完成数据帧的上屏操作,再将该数据帧ID从待同步帧列表中删除,结束本流程;否则执行步骤6;
步骤6、按照系统原有方式执行后续操作完成数据帧的渲染操作结束本流程。
2.根据权利要求1所述的渲染同步优化方法,其特征在于,所述步骤1中所述图像特征包括图像分辨率、图像像素格式、数据缓冲、着色器缓冲、纹理及采样器。
3.根据权利要求1所述的渲染同步优化方法,其特征在于,所述步骤1中所述计算图像特征对应的存储空间的方式为:在第一次计算图像特征所占存储空间大小时建立图像特征与其所占存储空间大小间的映射关系,再次计算相同图像特征时直接从映射关系中获取其所占存储空间大小。
4.根据权利要求1所述的渲染同步优化方法,其特征在于,所述步骤3还包括若GPU提供了监测显存写操作的API则执行步骤4。
5.根据权利要求1所述的渲染同步优化方法,其特征在于,所述GPU提供的同步函数的执行方式为:将同步函数的输入参数记为第三参数,若第三参数中数据帧的数据帧ID在待同步帧列表中则完成后续的上屏操作,否则不执行后续操作结束同步函数的执行过程。
6.根据权利要求1所述的渲染同步优化方法,其特征在于,所述步骤4中所述监测系统中与内存写操作相关的函数记为第三函数的方式为:在x86平台上通过DR0-DR7寄存器监测内存地址实现。
7. 根据权利要求1所述的渲染同步优化方法,其特征在于,所述步骤4中所述监测系统中与内存写操作相关的函数记为第三函数的方式为:对于英伟达的GPU平台上采用CUDAAPI监测写显存操作实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410247637.4A CN117830457B (zh) | 2024-03-05 | 2024-03-05 | 一种基于帧内信号量的渲染同步优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410247637.4A CN117830457B (zh) | 2024-03-05 | 2024-03-05 | 一种基于帧内信号量的渲染同步优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117830457A CN117830457A (zh) | 2024-04-05 |
CN117830457B true CN117830457B (zh) | 2024-04-26 |
Family
ID=90519436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410247637.4A Active CN117830457B (zh) | 2024-03-05 | 2024-03-05 | 一种基于帧内信号量的渲染同步优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117830457B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857535A (zh) * | 2011-07-01 | 2013-01-02 | 云联(北京)信息技术有限公司 | 一种计算机处理单元、计算机网关、交互式系统 |
CN109194960A (zh) * | 2018-11-13 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种图像帧渲染方法、装置及电子设备 |
CN115409687A (zh) * | 2022-10-31 | 2022-11-29 | 北京麟卓信息科技有限公司 | 一种基于显示缓冲区合成的渲染差异检测方法 |
US11776507B1 (en) * | 2022-07-20 | 2023-10-03 | Ivan Svirid | Systems and methods for reducing display latency |
CN117274030A (zh) * | 2023-10-07 | 2023-12-22 | 浙江大学 | 一种移动端的Vulkan绘制流程优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
-
2024
- 2024-03-05 CN CN202410247637.4A patent/CN117830457B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857535A (zh) * | 2011-07-01 | 2013-01-02 | 云联(北京)信息技术有限公司 | 一种计算机处理单元、计算机网关、交互式系统 |
CN109194960A (zh) * | 2018-11-13 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种图像帧渲染方法、装置及电子设备 |
US11776507B1 (en) * | 2022-07-20 | 2023-10-03 | Ivan Svirid | Systems and methods for reducing display latency |
CN115409687A (zh) * | 2022-10-31 | 2022-11-29 | 北京麟卓信息科技有限公司 | 一种基于显示缓冲区合成的渲染差异检测方法 |
CN117274030A (zh) * | 2023-10-07 | 2023-12-22 | 浙江大学 | 一种移动端的Vulkan绘制流程优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117830457A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11609840B2 (en) | Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction | |
JP5123323B2 (ja) | アプリケーションの変更前にコマンドの変更のパフォーマンスを解析するためのグラフィックコマンド管理ツールおよびその方法 | |
JP4896376B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US7095416B1 (en) | Facilitating performance analysis for processing | |
JP4979880B2 (ja) | グラフィックス処理ユニットのマルチスレッド式カーネル | |
US8051409B1 (en) | Monitoring memory accesses for multiple computer processes | |
US7950003B1 (en) | Heads-up-display software development tool for analyzing and optimizing computer software | |
US8667473B2 (en) | Analyzing video game performance using non-intrusive capture and storage of run-time game data | |
US7178145B2 (en) | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system | |
US20070165042A1 (en) | Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method | |
US20150206277A1 (en) | Unified memory systems and methods | |
US20070006172A1 (en) | Method and system of identifying overlays used by a program | |
US20130238938A1 (en) | Methods and apparatus for interactive debugging on a non-pre-emptible graphics processing unit | |
US20020004966A1 (en) | Painting apparatus | |
US6987517B1 (en) | Programmable graphics processor for generalized texturing | |
US6330691B1 (en) | Use of dynamic translation to provide breakpoints in non-writeable object code | |
US9013494B2 (en) | Heads-up-display software development tool | |
CN108986012B (zh) | 着色器剖析器 | |
Gao et al. | Trinity:{High-Performance} Mobile Emulation through Graphics Projection | |
CN117830457B (zh) | 一种基于帧内信号量的渲染同步优化方法 | |
US7890740B2 (en) | Processor comprising a first and a second mode of operation and method of operating the same | |
GB2605375A (en) | Data processors | |
Schnitzer et al. | Concepts for execution time prediction of 3D GPU rendering | |
Shreiner et al. | Performance opengl: Platform independent techniques | |
JP2007172456A (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 |