CN118625979A - 渲染方法及相关设备 - Google Patents
渲染方法及相关设备 Download PDFInfo
- Publication number
- CN118625979A CN118625979A CN202310267611.1A CN202310267611A CN118625979A CN 118625979 A CN118625979 A CN 118625979A CN 202310267611 A CN202310267611 A CN 202310267611A CN 118625979 A CN118625979 A CN 118625979A
- Authority
- CN
- China
- Prior art keywords
- rendering
- application interface
- task group
- node
- time
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04803—Split screen, i.e. subdividing the display area or the window area into separate subareas
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本申请实施例提供一种渲染方法及相关设备,涉及电子设备领域;该方法中,先确定待显帧的分组结果,该分组结果可以使得待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和,即未做分组时待显帧所需的绘制时长。再根据该分组结果划分待显帧的绘制任务得到至少一个绘制任务组,最后,由至少一个绘制线程处理上述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,上述至少一个绘制结果用于合成得到待显帧的总绘制结果,以渲染待显帧。可见,利用本方案的渲染方法,预先确定待显帧的分组结果,以实现对待显帧的最优渲染,可以有效提升待显帧的渲染效率。
Description
技术领域
本发明实施例涉及电子设备领域,尤其涉及一种渲染方法及相关设备。
背景技术
电子设备可以提供和用户实现交互的用户界面(User Interface,UI)。用户界面中包含图标、窗口、控件等界面元素,其中控件可以包括图片、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏等可视的界面元素。
用户界面的渲染任务一般采用串行流程进行处理,当渲染任务愈加繁重,例如随着终端屏幕尺寸的增大,屏幕上可呈现的界面元素也越来越多,渲染内容增多,此时利用串行流程进行渲染的处理效率低下。因此,如何提升渲染效率迫在眉睫。
发明内容
本申请提供一种渲染方法及相关设备,可以提升待显示的画面帧的渲染效率。
第一方面,提供一种渲染方法。
该方法包括以下步骤:确定待显帧的分组结果。其中,待显帧用于显示至少一个应用界面。分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。利用至少一个绘制线程处理至少一个绘制任务组的绘制任务以得到至少一个绘制结果,至少一个绘制结果用于合成得到待显帧的总绘制结果。
本方案中,先确定待显帧的分组结果,该分组结果可以使得待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和,即未做分组时待显帧所需的绘制时长。再根据该分组结果划分待显帧的绘制任务得到至少一个绘制任务组,最后,由至少一个绘制线程处理上述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,上述至少一个绘制结果用于合成得到待显帧的总绘制结果,以渲染待显帧。可见,利用本方案的渲染方法,预先确定待显帧的分组结果,以实现对待显帧的最优渲染,可以有效提升待显帧的渲染效率。
结合第一方面的一种可能的实施方式中,上述渲染方法还包括:发送至少一个绘制结果。
可见,本案中,将至少一个绘制任务组对应的至少一个绘制结果发送给其他设备或模块,使得其他设备或模块可以合成得到待显帧的总绘制结果,最终完成待显帧的渲染。
结合第一方面的一种可能的实施方式中,上述渲染方法还包括:对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。
其中,至少两个空间树用于渲染得到用户界面。用户界面为至少一个应用界面中的至少一个。
可见,本申请中,将用户界面对应的渲染树拆分得到至少两个空间树,且保证每个空间树中的绘制节点拆分前后的状态操作不变,这样,在利用至少两个空间树渲染得到上述用户界面时,可以实现正确渲染,确保用户界面的渲染结果的正确性。
结合第一方面的一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。其中,渲染区域不重叠是指渲染区域完全不重叠,这样,可以进一步确保用户界面的渲染结果的正确性。
结合第一方面的一种可能的实施方式中,上述对用户界面对应的渲染树进行拆分,得到至少两个空间树,包括:
确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中每个绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。
其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
外接图形是指规则图形和/或图形面积可计算的图形,例如矩形、圆形、正方形、梯形等。由于绘制节点对应的渲染区域的形状各异,无法对绘制节点进行精准划分,因此,利用绘制节点对应的外接图形可以准确地对绘制节点进行划分。另外,划分渲染树中的节点时,先划分绘制节点,再从绘制节点回溯到渲染树的根节点,回溯过程中经过的状态操作节点与上述绘制节点归为同一个集合,这样,可以确保绘制节点在划分前后的状态操作不变,保障拆分后得到的空间树可以正确地进行渲染。
结合第一方面的一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。这样,可以进一步确保用户界面的渲染结果的正确性。
结合第一方面的一种可能的实施方式中,绘制节点对应的渲染区域的外接图形为绘制节点对应的渲染区域的包围盒。无需重新建立外接图形,直接使用绘制节点已有的包围盒作为外接图形,节省处理流程,提升渲染效率。
结合第一方面的一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个绘制线程。一个内核负责一个绘制线程,这样,可以保障渲染效率最高。
结合第一方面的一种可能的实施方式中,分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为分组方案中绘制任务组的数目和合成开销之间的乘积。
可见,本申请中,通过确定至少一个应用界面的分组方案,当分组方案的第一值满足预设条件时,确定该分组方案为上述分组结果。
结合第一方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,所述第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。可见,可以将二等分方案作为上述至少一个应用界面的一种可能的分组方案。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,所述第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
可见,还可以通过移动二分点到应用界面的绘制任务的起点和/或终点,以得到上述至少一个应用界面可能的分组方案,避免切分应用界面时产生的切分开销,以减小绘制任务组的绘制时长。
结合第一方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为M时,所述M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,所述第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
可见,对于分组方案中绘制任务组的数目为M时,采用类似分组方案中绘制任务组的数目为二时的方法,将M等分方案作为上述至少一个应用界面一种可能的分组方案。再在第一M分点位于第一应用界面的绘制任务范围内时,通过固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点和/或终点,可以得到上述至少一个应用界面可能的分组方案。
结合第一方面的一种可能的实施方式中,绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
绘制任务组包括非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积。
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
结合第一方面的一种可能的实施方式中,完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长。
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
本申请中,将应用界面的加权平均绘制时长或者渲染指令总次数作为应用界面的绘制时长,可以准确地估算应用界面的绘制负载大小。
第二方面,本申请还提供一种渲染方法,该方法包括以下步骤:
对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。上述至少两个空间树用于渲染上述用户界面。
本申请中,用户界面为屏幕上呈现给用户的至少一个应用界面。将用户界面对应的渲染树拆分得到至少两个空间树,且保证每个空间树中的绘制节点拆分前后的状态操作不变,这样,在利用至少两个空间树渲染得到上述用户界面时,可以确保用户界面的渲染结果的正确性。
结合第二方面的一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。其中,渲染区域不重叠是指渲染区域完全不重叠,这样,可以进一步确保用户界面的渲染结果的正确性。
结合第二方面的一种可能的实施方式中,上述对用户界面对应的渲染树进行拆分,得到至少两个空间树,包括:
确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
由于绘制节点对应的渲染区域的形状各异,无法对绘制节点进行精准划分,因此,本申请中,利用绘制节点对应的外接图形可以准确地对绘制节点进行划分。另外,划分渲染树中的节点时,先划分绘制节点,再从绘制节点回溯到渲染树的根节点,回溯过程中经过的状态操作节点与上述绘制节点归为同一个集合,这样,可以确保绘制节点在划分前后的状态操作不变,保障拆分后得到的空间树可以正确地进行渲染。
结合第二方面的一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。这样,可以进一步确保用户界面的渲染结果的正确性。
结合第二方面的一种可能的实施方式中,绘制节点对应的渲染区域的外接图形为绘制节点对应的渲染区域的包围盒。无需重新建立外接图形,直接使用绘制节点已有的包围盒作为外接图形,节省处理流程,提升渲染效率。
结合第二方面的一种可能的实施方式中,在对用户界面对应的渲染树进行拆分之前,渲染方法还包括:确定待显帧的分组结果。其中,待显帧用于显示上述至少一个应用界面。分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。
本方案中,先确定待显帧的分组结果,该分组结果可以使得待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和,即未做分组时待显帧所需的绘制时长。当分组结果指示需要对用户界面进行拆分时,采用第二方面提供的拆分方法进行拆分。
结合第二方面的一种可能的实施方式中,渲染方法还包括:根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。利用至少一个绘制线程处理至少一个绘制任务组的绘制任务以得到至少一个绘制结果,至少一个绘制结果用于合成得到待显帧的总绘制结果。
可见,利用本方案的渲染方法,预先确定待显帧的分组结果,以实现对待显帧的最优渲染,可以有效提升待显帧的渲染效率。进一步地,当分组结果指示需要对用户界面进行拆分,则在对用户界面对应的渲染树进行拆分之后,根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组,再利用绘制线程处理绘制任务组的绘制任务。
结合第二方面的一种可能的实施方式中,上述渲染方法还包括:发送至少一个绘制结果。
结合第二方面的一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个绘制线程。一个内核负责一个绘制线程,这样,可以保障渲染效率最高。
结合第二方面的一种可能的实施方式中,分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为分组方案中绘制任务组的数目和合成开销之间的乘积。
结合第二方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,所述第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,所述第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
结合第二方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为M时,所述M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,所述第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
结合第二方面的一种可能的实施方式中,绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
绘制任务组包括非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积。
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
结合第二方面的一种可能的实施方式中,完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长。
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
第三方面,本申请还提供一种渲染装置,该装置包括确定模块、划分模块和处理模块,其中:
确定模块,用于确定待显帧对应的分组结果。其中,待显帧用于显示至少一个应用界面,分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。
划分模块,用于根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。
处理模块,用于利用至少一个绘制线程处理至少一个绘制任务组以得到至少一个绘制结果。
结合第三方面的一种可能的实施方式中,上述渲染装置还包括发送模块,其中:
发送模块,用于发送至少一个绘制结果。
结合第三方面的一种可能的实施方式中,上述渲染装置还包括拆分模块,其中:
拆分模块,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。其中,至少两个空间树用于渲染得到用户界面。用户界面为至少一个应用界面中的至少一个。
结合第三方面的一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。
结合第三方面的一种可能的实施方式中,上述拆分模块,具体用于:
确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中每个绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
结合第三方面的一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。
所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
结合第三方面的一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个所述绘制线程。
结合第三方面的一种可能的实施方式中,上述分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和。
结合第三方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,所述第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,所述第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
结合第三方面的一种可能的实施方式中,所述分组方案中绘制任务组的数目为M时,所述M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,所述第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
结合第三方面的一种可能的实施方式中,上述绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和;
绘制任务组包括非完整的应用界面的绘制任务时,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积;
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
结合第三方面的一种可能的实施方式中,上述完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长;
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
第四方面,本申请还提供一种渲染装置,该装置包括拆分模块,其中:
拆分模块,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作;上述至少两个空间树用于渲染用户界面。结合第四方面的一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。
结合第四方面的一种可能的实施方式中,上述拆分模块,具体用于:
确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
结合第四方面的一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。
结合第四方面的一种可能的实施方式中,上述绘制节点对应的渲染区域的外接图形为绘制节点对应的渲染区域的包围盒。
结合第四方面的一种可能的实施方式中,上述渲染装置还包括确定模块,其中:
确定模块,用于确定待显帧的分组结果。其中,待显帧用于显示上述至少一个应用界面。分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。
结合第四方面的一种可能的实施方式中,上述渲染装置还包括划分模块和处理模块,其中:
划分模块,用于根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。
处理模块,用于利用至少一个绘制线程处理至少一个绘制任务组的绘制任务以得到至少一个绘制结果,至少一个绘制结果用于合成得到待显帧的总绘制结果。
可见,当分组结果指示不需要对用户界面进行拆分时,划分模块根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组,处理模块再利用绘制线程处理绘制任务组的绘制任务。
进一步地,当分组结果指示需要对用户界面进行拆分,则在拆分模块对用户界面对应的渲染树进行拆分之后,划分模块根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组,处理模块再利用绘制线程处理绘制任务组的绘制任务。
结合第四方面的一种可能的实施方式中,上述渲染装置还包括发送模块,其中:
发送模块,用于发送至少一个绘制结果。
结合第四方面的一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个绘制线程。
结合第四方面的一种可能的实施方式中,分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为分组方案中绘制任务组的数目和合成开销之间的乘积。
结合第四方面的一种可能的实施方式中,分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
结合第四方面的一种可能的实施方式中,分组方案中绘制任务组的数目为M时,M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
结合第四方面的一种可能的实施方式中,绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
绘制任务组包括非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积。
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
结合第四方面的一种可能的实施方式中,完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长。
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
第五方面,本申请还提供一种电子设备,包括处理器和存储器,其中,所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如第一方面或第二方面任一项所述的渲染方法。
第六方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面或第二方面任一项所述的渲染方法。
第七方面,本申请还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行第一方面或第二方面任一项所述的渲染方法。
第八方面,本申请还提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行第一方面或第二方面所述的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第二方面所述的方法。
附图说明
下面对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种渲染方法的应用架构示意图;
图2是本申请实施例提供的一种渲染方法的流程示意图;
图3A是本申请实施例提供的一种确定切分方案的过程示意图;
图3B是本申请实施例提供的另一种确定切分方案的过程示意图;
图3C是本申请实施例提供的一种绘制任务组的时长计算示意图;
图4A是本申请实施例提供的一种渲染方法的流程示意图;
图4B是本申请实施例提供的一种单线程单帧绘制示意图;
图4C是本申请实施例提供的一种多线程绘制示意图;
图5是本申请实施例提供的另一种渲染方法的流程示意图;
图6A是本申请实施例提供的一种渲染树的示意图;
图6B是本申请实施例提供的一种绘制节点的包围盒示意图;
图6C是本申请实施例提供的一种划分矩形的示意图;
图6D是本申请实施例提供的一种渲染树的标记示意图;
图6E是本申请实施例提供的一种空间树及其绘制结果的示意图;
图6F是本申请实施例提供的一种应用界面的线程分配示意图;
图6G是本申请实施例提供的另一种应用界面的线程分配示意图;
图7是本申请实施例提供的一种渲染装置的流程示意图;
图8是本发明实施例提供的另一种渲染装置的结构示意图;
图9是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A、同时存在A和B、单独存在B这三种情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。而本申请中实施例的步骤的序号(如步骤S1、步骤S21等)只为了区分不同的步骤,不对步骤之间的先后执行顺序造成限定。
以及,除非有相反的说明,本申请实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一设备和第二设备,只是为了便于描述,而并不是表示这第一设备和第二设备的结构、重要程度等的不同,在某些实施例中,第一设备和第二设备还可以是同样的设备。
本申请实施例中所用,根据上下文,术语“当……时”可以被解释为意思是“如果……”或“在……后”或“响应于确定……”或“响应于检测到……”。以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
由于本申请实施例涉及的应用,为了便于理解,下面先对本申请实施例涉及的相关术语等相关概念进行介绍。
(1)、渲染管线
渲染管线又称渲染流水线,它是图形图像从数据一步一步形成最终输出的画面所要经历的各种操作过程,一般包括:顶点数据的输入、顶点着色器、曲面细分过程、几何着色器、图元组装、裁剪剔除、光栅化、片段着色器以及混合测试等流程。
(2)、渲染帧率
渲染帧率是指每秒的帧率(Frame Pre Second,FPS),即以帧为单位的位图图像每秒连续出现在显示器上的次数(或速率)。简单来说就是一秒钟,屏幕显示多少张画面。
(3)、画布
画布是渲染引擎提供的核心类,封装了所有对设备进行的画图操作,并且记载管理设备的绘制状态,通过调用渲染画布的接口可实现对渲染纹理的绘制或状态更改。
(4)、渲染树
用户界面(User Interface,UI)是指屏幕上呈现给用户的至少一个应用界面。而渲染树用于用户界面的布局和绘制,负责真正的渲染,保存了元素的大小、布局等信息。其中,渲染树包括多个渲染节点,每个渲染节点包含该节点的布局信息以及录制好的绘制操作信息(DrawOp),布局信息包括渲染节点的位置、大小(例如宽度、高度)以及包围盒,包围盒是指渲染节点对应的绘制区域(或渲染区域)的外接矩形。而绘制操作信息是指渲染节点需要绘制的内容,包括但不限于以下至少一项:绘制图形、绘制文本字符、绘制图片、画布裁剪(Clip)、画布旋转(Transform)、画布移动(Move)、画布透明度修改。
渲染节点用于执行绘制操作和/或状态操作,其中绘制操作可理解为进行渲染的操作,包括但不限于以下至少一项:绘制图形、绘制文本字符、绘制图片。
状态操作可理解为对画布的属性(例如画布的大小、位置、透明度等)进行修改的操作,包括但不限于以下至少一项:画布裁剪、画布旋转、画布移动、画布透明度修改。
本申请实施例中,绘制节点是指渲染树中用于执行绘制操作的渲染节点,而状态操作节点是指渲染树中用于执行状态操作的渲染节点。示例性地,绘制节点和状态操作节点可以是同一个渲染节点,即该渲染节点用于执行绘制操作和状态操作。
(5)、缓存队列(Buffer Queue)
缓存队列用于将生成图形数据缓冲区的一方(生产方)连接到接受数据以进行显示或进一步处理的一方(消耗方)。
(6)、UI控件
UI控件是指用户可以交互或操作的组件,例如按钮,输入框等。
(7)、渲染空间树(简称空间树)
空间树是由某个渲染区域内的UI控件对应的渲染节点(即绘制节点和/或状态操作节点)组成的树形结构,主要表示UI控件在空间中的关系。可选地,不同的空间树之间在空间关系上不相交,即不同的空间树之间对应的渲染区域完全不重叠。
(8)、窗口
窗口是一个图形界面元素,用于显示应用程序的内容,供用户查看和交互。窗口通常是一个矩形区域,可以调整大小,并且通常可以根据提供窗口的应用程序对其施加的功能和限制进行编辑。
(9)、Z序
Z序是指窗口的Z轴顺序,一个窗口的Z序表示该窗口在堆叠窗口列表中的位置,也可以理解为应用界面的Z轴顺序。这个窗口堆叠的方向是沿着一条假想轴,即Z轴,从屏幕向外延伸。
用户界面的渲染任务一般采用串行流程进行处理,当渲染任务愈加繁重,此时串行流程的处理效率低下。例如,用户界面包括的应用界面数目增多时,渲染任务加重,此时采用串行处理流程的效率不理想。因此,如何提升渲染效率迫在眉睫。
本申请为此提出一种渲染方法,通过先确定待显示的画面帧(即待显帧)的分组结果,再依据该分组结果处理待显帧的绘制任务得到至少一个绘制任务组,最后利用至少一个绘制线程处理上述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,合成至少一个绘制结果即得到待显帧的总绘制结果。其中,待显帧用于显示至少一个应用界面,由于上述分组结果可以使得待显帧的绘制时长小于至少一个应用界面的绘制时长之和,即未做分组时待显帧所需的绘制时长,因此,利用本申请的渲染方法,可以有效提升待显帧的渲染效率。
另外,当分组结果指示需要对用户界面进行拆分时,可以利用本申请提供的另一种渲染方法进行用户界面拆分,上述用户界面为至少一个应用界面中的至少一个。当然,上述用户界面也可以理解为屏幕上呈现给用户的至少一个应用界面,本申请的渲染方法同样可以适用。其中,本申请实施例中,对用户界面进行拆分时,是将用户界面对应的渲染树拆分得到至少两个空间树,且保证每个空间树中的绘制节点拆分前后的状态操作不变,这样,在利用至少两个空间树渲染得到上述用户界面时,可以确保用户界面的渲染结果的正确性。
下面对本申请的渲染方法的应用架构进行介绍。
参考图1,图1是本申请实施例提供的一种渲染方法的应用架构示意图。其中,图1中的数字代表的信息分别为:
①为绘制内容更新消息;
②为显示列表;
③为绘制任务组;
④为图形处理器(Graphics Processing Unit,GPU)绘制指令;
⑤为总绘制结果的缓存(Buffer)。
本申请实施例中的渲染方法可以应用于电子设备,其中,参考图1,电子设备包括中央处理器(Central Processing Unit,CPU)和GPU,其中,本申请的渲染方法主要在CPU侧执行,CPU负责准备数据,GPU执行渲染。
下面对利用图1中的应用架构进行渲染的过程进行具体说明:
1、当电子设备的屏幕上绘制的内容需要更新时,则发送绘制内容更新消息给CPU以触发UI线程。
2、UI线程完成控件的测量和布局,由控件信息构建出渲染树,渲染树包含若干个渲染节点,每个渲染节点中包含一个显示列表,该显示列表用于存储若干的需要处理的绘制操作信息。然后UI线程向渲染主线程发送同步(Sync)信号以触发渲染主线程与UI线程进行状态同步,包括同步显示列表,除此之外,UI线程还会跟渲染主线程同步节点属性信息(如节点的大小,位置等)。
3、渲染主线程为当前的待显帧申请一块绘制缓存,而后确定待显帧的绘制任务的分组结果(具体参考图2至图4C的相关描述),再根据分组结果处理待显帧的绘制任务。当待显帧的分组结果指示需要对用户界面进行拆分时,则对用户界面进行拆分(具体参考图5至图6G的相关描述)。再根据分组结果组合待显帧的绘制任务得到至少一个绘制任务组,最后,将至少一个绘制任务组发送给工作线程。
4、工作线程接收到至少一个绘制任务组后,将为至少一个绘制线程中的每个绘制线程创建需要的资源,包括申请绘制缓存。每个绘制线程拥有一个独立的GPU渲染管线(例如图1中的“共享上下文”、“创建渲染目标”、“执行绘制操作”、“提交绘制指令”,其中,创建上下文和渲染目标不需要每帧重新操作,可仅清空内容)。工作线程将至少一个绘制任务组的绘制任务分配给至少一个绘制线程进行处理,以得到至少一个绘制结果,即GPU指令。其中,一个绘制线程处理一个绘制任务组的绘制任务,每个绘制线程将CPU指令转换为GPU指令,随后将GPU指令提交给GPU进行处理。
5、GPU接收到GPU指令后开始执行渲染工作,即为对应的像素点计算填充正确的颜色,由于每个绘制线程提交到单独的绘制缓存上,最终GPU还需要将各个绘制缓存的绘制结果进行合成得到总绘制结果,最终将总绘制结果的缓存提交给硬件合成器。
6、硬件合成器等待GPU渲染完成后,将总绘制结果送屏上显。
下面对本申请实施例提供的渲染方法做具体说明。
参考图2,图2是本申请实施例提供的一种渲染方法的流程示意图;渲染方法包括以下步骤:
201、确定待显帧的分组结果。
具体地,待显帧即等待显示的画面帧。待显帧用于显示至少一个应用界面。上述分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。
202、根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。
具体地,当分组结果指示需要对用户界面进行拆分时,上述用户界面为上述至少一个应用界面中的至少一个应用界面组成的界面,可以采用下面图5所示的方法对用户界面进行拆分处理,在此不做赘述,再根据分组结果将拆分后得到的空间树对应的绘制任务划分至相应的绘制任务组中。另外,当分组结果指示不需要对应用界面进行拆分时,则根据分组结果组合至少一个应用界面的绘制任务即可。而当分组结果指示不需要对至少一个应用界面的绘制任务进行拆分时,则将至少一个应用界面的绘制任务作为一个绘制任务组。
203、利用至少一个绘制线程处理至少一个绘制任务组的绘制任务以得到至少一个绘制结果,上述至少一个绘制结果用于合成得到待显帧的总绘制结果。
本申请实施例中,先确定待显帧的分组结果,该分组结果可以使得待显帧的绘制时长小于至少一个应用界面的绘制时长之和,即未做分组时待显帧所需的绘制时长。再根据该分组结果划分待显帧的绘制任务得到至少一个绘制任务组,最后,由至少一个绘制线程处理上述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,上述至少一个绘制结果用于合成得到待显帧的总绘制结果,以渲染待显帧。可见,利用本申请实施例的渲染方法,预先确定待显帧的分组结果,以实现对待显帧的最优渲染,可以有效提升待显帧的渲染效率。
示例性地,本申请实施例通过对不同情况的待显帧的渲染任务进行判断,以确定相应的分组结果,使得待显帧的渲染效率最优。例如,在渲染任务繁重时,分组结果可以将渲染任务分为两组或以上;而在渲染任务较轻时,可以不对渲染任务进行分组。实际的分组结果根据待显帧的渲染任务的实际情况进行确定。
在一种可能的实施方式中,参考图2,上述渲染方法还包括:
204、发送至少一个绘制结果。
本申请实施例中,将至少一个绘制任务组对应的至少一个绘制结果发送给其他设备或模块,使得其他设备或模块可以合成得到待显帧的总绘制结果,最终完成待显帧的渲染。示例性地,由CPU执行步骤204,CPU向GPU发送至少一个绘制结果,以使GPU根据上述至少一个绘制结果合成得到待显帧的总绘制结果。
在一种可能的实施方式中,本申请实施例中,同一时刻,由电子设备的CPU的一个内核执行上述至少一个绘制线程。
在一种可能的实施方式中,本申请实施例中,同一时刻,电子设备中的CPU的一个内核执行一个绘制线程。由一个内核负责一个绘制线程,这样,可以保障待显帧的渲染效率最高。另外,当电子设备具有两个或以上的内核时,利用本申请实施例的方法,通过对待显帧的绘制内容进行合理分组,可以充分发挥电子设备的多核能力,使硬件能发挥其最大能效,避免渲染负载不均问题。
示例性地,当电子设备具有两个或以上的内核时,本申请实施例中,同一时刻,执行任务的绘制线程的数量小于或等于电子设备的CPU的内核数量,可以根据实际情况进行设定。
在一种可能的实施方式中,分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为分组方案中绘制任务组的数目和合成开销之间的乘积。
其中,分组方案是将至少一个应用界面的绘制任务组成至少一个绘制任务组的方案。本申请实施例中,通过确定至少一个应用界面的分组方案,当分组方案的第一值满足预设条件时,确定该分组方案为上述分组结果。
示例性地,可以先确定至少一个应用界面的至少一个分组方案,再确定上述至少一个分组方案中第一值满足预设条件的分组方案为上述至少一个应用界面的分组结果。本申请实施例中,可以根据实际情况设置相应的预设条件,对此不做特别限定。例如,预设条件为第一值最小,以使单帧的绘制时长最小。
具体地,每帧的绘制时长主要受窗口负载的影响,窗口负载即每个应用界面的绘制时长。需要绘制的应用界面越多,所有窗口的总负载越大,单帧绘制时间将越长。此外每帧的绘制时长还主要受GPU合成次数(即待显帧的绘制任务组的数目M)的影响,每次合成均造成一定的合成开销α,α为经验值,一般与合成缓存的大小以及设备的算力相关,可通过实际测试得到。因此本实施实例需要计算合适的GPU合成次数。多个绘制任务组并行绘制,因此每帧绘制时长主要受(绘制时间)最长的绘制任务组的影响,进一步当最长的绘制任务组的绘制时长的最短时,单帧的绘制时长也最短。即本申请实施例通过时间预算,合成次数约束,设备的最大线程数来决定绘制任务的分组。
作为优化,想要最大限度地让多个绘制任务组被同时执行,因为一个绘制周期内,同一时刻下每个CPU核心可以单独执行一个绘制任务组的绘制操作,所以让GPU合成次数的最大值等于电子设备的CPU的核心数m,以最大限度地并行执行绘制操作。当最长的绘制任务组的时长最短时,单帧的绘制时长最小,绘制帧率最大。其中Tj表示第j个绘制任务组的绘制时长。
本申请实施例中,设定上述第一值D为:
D=Tmax+M*α (1)
其中,Tmax=max(T),Tj∈T,1≤j≤m,Tmax表示分组方案中最长的绘制任务组的绘制时长。
本申请实施例中,可以先获得至少一个应用界面的至少一种可能的分组方案,再根据式子(1)计算每种分组方案的第一值,并将其中第一值最小的分组方案作为至少一个应用界面的分组结果,以使得待显帧的绘制时长小于至少一个应用界面的绘制时长之和。
在一种可能的实施方式中,分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。本申请实施例中,可以将二等分方案作为上述至少一个应用界面的一种可能的分组方案。
其中,预设顺序可以根据实际情况进行确定,例如,按照Z序从小到大进行排列得到应用界面序列。预设顺序也可以为Z序从大到小的顺序,对应用界面序列的顺序不做特别限定。另外,由于应用界面的绘制顺序必须是按照Z序从小到大的顺序,因此,在GPU合成阶段,需要按照应用界面的Z序从小到大顺序依次合成,进而保证绘制结果的正确性。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
本申请实施例中,还可以通过移动二分点到应用界面的绘制任务的起点和/或终点,以得到上述至少一个应用界面可能的分组方案,避免切分应用界面时产生的切分开销,以减小绘制任务组的绘制时长。
在一种可能的实施方式中,分组方案中绘制任务组的数目为M时,M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
本申请实施例中,对于分组方案中绘制任务组的数目为M时,采用类似分组方案中绘制任务组的数目为二时的方法,将M等分方案作为上述至少一个应用界面一种可能的分组方案。再在第一M分点位于第一应用界面的绘制任务范围内时,通过固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点和/或终点,可以得到上述至少一个应用界面可能的分组方案。
示例性地,还可以通过人工分组等方法确定上述至少一个应用界面的可能的分组方案,对上述至少一个应用界面的分组方法不做限定。
下面对获得上述至少一个应用界面的至少一种可能的分组方案的方法进行具体说明:
先确定待显帧的绘制任务组的数目M,数目M的选取范围为1到m,m为电子设备的中央处理器CPU的内核数量,也即电子设备所支持的最大的GPU合成次数。
确定每种数目M下,应用界面序列对应的至少一个切分方案,则可以得到m种数目M对应的Y个切分方案,Y大于或等于m。每个切分方案将应用界面序列切分为至少一份,每份对应一个绘制任务组。数目M下的一个切分方案即为上述至少一个应用界面的一种可能的分组方案。
根据式子(1)确定每个切分方案对应的第一值,将Y个切分方案中第一值最小的切分方案以及对应的数目M确定为分组结果,切分方案的第一值为切分方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为数目M和合成开销的乘积。
本申请实施例中,通过确定每种数目M对应的至少一个切分方案,再从Y个切分方案中确定一个第一值最小的切分方案,将第一值最小的切分方案以及对应的数目M作为分组结果,可以保证分组结果的准确度。
示例性地,假设确定每种数目M对应的至少一个切分方案,下面提供一种确定上述三个切分方案的可能的解决思路,首先以数目M为2时确定对应的三个切分方案为例,参考图3A,图3A是本申请实施例提供的一种确定切分方案的过程示意图,应用界面序列304以按照背景应用、抖音应用、淘宝应用、状态栏应用和导航栏应用这一顺序为例,先确定应用界面序列304的二分点302,二分点302位于淘宝应用的绘制任务范围内,将二分点302对应的切分方案作为应用界面序列304的一个切分方案。再将二分点302往左移至淘宝应用的绘制任务的起点301,将起点301对应的切分方案作为应用界面序列304的一个切分方案。同样地,将二分点302往右移至淘宝应用的绘制任务的终点303,将终点303对应的切分方案作为应用界面序列304的一个切分方案。至此,可以确定数目M为2时,应用界面序列304对应的三个切分方案。另外,当二分点302和起点301或终点303重叠时,则数目M为2时对应的切分方案为两个。
参考图3B,图3B是本申请实施例提供的另一种确定切分方案的过程示意图。继续以数目M为3为例,同样地,先确定三分点,分别为305和306,将三分点305、三分点306对应的切分方案作为应用界面序列304的一个切分方案。再固定三分点306的位置,将应用界面序列304的起点到三分点306的部分按照图3A的方法分别左移和右移三分点305到达抖音应用的绘制任务的起点和终点,将三分点306和抖音应用的绘制任务的起点对应的切分方案作为应用界面序列304的一个切分方案,以及将三分点306和抖音应用的绘制任务的终点对应的切分方案作为应用界面序列304的一个切分方案。同理,再固定三分点305的位置,将三分点305到应用界面序列304的终点的部分按照图3A的方法分别左移和右移三分点306到达状态栏应用的绘制任务的起点和终点,将三分点305和状态栏应用的绘制任务的起点对应的切分方案作为应用界面序列304的一个切分方案,以及将三分点305和状态栏应用的绘制任务的终点对应的切分方案作为应用界面序列304的一个切分方案。
对于数目M为大于3的情况,确定切分方案的方法与数目M为3时的确定方法相同,不再赘述。不同的是,需要确定的是M分点,再将M-2个M分点的位置固定,依次左右移动剩余的一个M分点至应用界面的边界点(即应用界面的绘制任务的起点和终点)。
在一种可能的实施方式中,上述绘制任务组包括完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
具体地,当一个绘制任务组的前后切割点的位置均位于应用界面的边界上时,参考图3C,图3C是本申请实施例提供的一种绘制任务组的时长计算示意图,其中,应用界面序列304以按照背景应用、抖音应用、淘宝应用、状态栏应用和导航栏应用这一顺序为例,绘制任务组H1包括背景应用和抖音应用两个完整的应用界面的绘制任务。此种情况下,绘制任务组的绘制时长由式子(2)来确定:
其中,tp到tq表示该绘制任务组中包括的完整的应用界面相应所需的绘制时长。
示例性地,参考图3C,绘制任务组H1的绘制时长为背景应用所需的绘制时长与抖音应用所需的绘制时长之和。
在一种可能的实施方式中,上述绘制任务组包括非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积。
具体地,当一个绘制任务组的前后切割点的位置均位于应用界面内部且该绘制任务组中并未包括完整的应用界面时,一种可能的情况,绘制任务组只包括一个非完整的应用界面的绘制任务,参考图3C,其中,绘制任务组H2包括淘宝应用的一部分绘制任务,此种情况下,绘制任务组的绘制时长为非完整的应用界面的绘制时长加一个切分开销β,切分开销β通常与被切割应用界面的渲染树的节点个数相关,由于该值一般较小,这里可以简化为一个系统实测得到的切割固定开销,也可以对于每种应用界面实测一个切分开销β。非完整的应用界面的绘制时长为切分比例与完整的应用界面的绘制时长的乘积,切分比例为绘制任务组的绘制任务占据整个应用界面的绘制任务的比例。以图3C为例,此时,绘制任务组H2的绘制时长为淘宝应用的绘制时长t5与k的乘积,k为绘制任务组H2占据淘宝应用的绘制任务组的比例。
另一种可能的情况为绘制任务组包括两个非完整的应用界面的绘制任务,参考图3C,绘制任务组H3包括淘宝应用的一部分绘制任务以及状态栏应用的一部分绘制任务,此种情况下,绘制任务组的绘制时长为两个非完整的应用界面的绘制时长加两个切分开销β。绘制任务组H3包括淘宝应用的一部分绘制任务占据淘宝应用的绘制任务的比例为u,其中,k与u之和为一。而绘制任务组H3包括状态栏应用的一部分绘制任务占据状态栏应用的绘制任务的比例为e。
在一种可能的实施方式中,上述绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
参考图3C,绘制任务组H4包括状态栏应用的一部分绘制任务以及导航栏应用的绘制任务,其中,绘制任务组H4包括状态栏应用的一部分绘制任务占据状态栏应用的绘制任务的比例为n,e与n之和为一。可见,图3C中只包括一个非完整的应用界面,因此,此时的第一绘制时长中包括一个切分开销β。当绘制任务组包括两个非完整的应用界面的绘制任务时,第一绘制时长中包括两个切分开销β。
在一种可能的实施方式中,上述完整的应用界面的绘制时长可以为应用界面的加权平均绘制时长。其中,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值。第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长。
本申请实施例中,利用每个应用界面运行的历史运行时间拟合每个应用界面的负载,将应用界面的加权平均绘制时长作为应用界面的绘制时长,可以准确地估算应用界面的绘制负载大小。
在本申请实施例中,定义窗口的负载为CPU处理窗口的绘制操作的时长。由于操作系统调度导致CPU运行核频率变化,即CPU单位时间执行的指令数存在变化。因此同一应用在相同的绘制操作下,多帧绘制时长的差别也很明显。本申请实施例使用多帧加权平均绘制时长来相对准确地估算窗口绘制负载,本申请实施例中使用的估算加权平均绘制时长的计算方式能最大限度地降低因系统调度导致的负载剧烈抖动的影响。
在本申请实施例中,加权平均绘制时长的计算方式如式子(3)和(4)所示。
an-1=max(0.1,0.9×an-2),其中n≥2, a1=1 (4)
其中,为估算的第n帧的加权平均绘制时长,即第n帧的绘制负载。为前n-2帧的加权平均负载。tn-1为第n-1帧的实测负载。an-1为加权平均因子,其值由式子(4)计算得到。为了确保当前帧的加权平均绘制时长的准确性,历史帧的加权平均绘制时长的加权平均因子对当前帧的加权平均绘制时长的影响更大,因此,本申请实施例中,第n-1帧的实测负载的权重最终确定在一个经验值,如式子(4)所示,经验值可以为0.1或0.2等。当窗口第一次被绘制,即n等于1时,定义式子(3)中的等于0,同时定义式子(4)中第一帧的平均负载因子a1等于1,则第一帧加权平均负载等于实际负载为t1。后续第2帧至第n帧被绘制时,先使用式子(4)计算出加权平均因子,再使用式子(3)计算出当前帧的加权平均绘制时长。
在一种可能的实施方式中,上述完整的应用界面的绘制时长可以为应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令、渲染指令的数量及其对应的权重的加权运算值。
本申请实施例中,将应用界面的渲染指令总次数作为应用界面的绘制时长,可以准确地估算应用界面的绘制负载大小。
具体地,首先,确定每种渲染指令对应的权重,权重的具体数值可以根据实际情况进行设置。例如,在不同的设备上实际测量一种渲染指令所需的执行时间,再计算一个平均时间作为该渲染指令最终的执行时间,执行时间长的渲染指令的权重越大。接着,统计绘制应用界面所需要的每种渲染指令的数量,计算不同渲染指令的权重与对应的指令数量的乘积,再将不同乘积求和,可以得到应用界面的渲染指令总次数。
下面以一个例子对本申请实施例的渲染方法进行具体说明:
参考图4A,图4A是本申请实施例提供的一种渲染方法的流程示意图。具体流程包为:
当电子设备的图形渲染模块启动时,先初始化执行图形渲染任务的绘制线程池,包括为每个绘制线程创建绘制资源,绘制资源包括二维(Second Dimension,简称2D)引擎实例资源和绘制后端资源。例如,使用OpenGL作为渲染后端,为实现绘制资源在多个线程间共享,则绘制线程根据主线程的上下文创建共享上下文资源。
其中,线程池的线程数量可以根据CPU的硬件能力确定。进一步地,对于多核心CPU,绘制线程的数量与CPU的核心数量相同,让同一时刻下,每个绘制线程运行在一个单独的CPU核心,以充分使用CPU的多核能力。绘制线程的数量也可以小于CPU的核心数量,对此不做特别限定。
完成线程池的初始化后,进入到每一帧的绘制流程。每帧首先判断是否接收到绘制信号,若未接收到则线程池挂起。当接收到一帧绘制信号时,首先更新渲染树信息,包括绘制操作信息以及渲染节点的属性信息,完成信息更新后进入确定分组结果。
基于式子(1)使得第一值满足预设条件以确定待显帧的分组结果,其中,分组结果包括每个应用界面被拆分为多少份,每份的比例为多少,且至少一个应用界面是如何分组的。按照分组结果处理至少一个应用界面的绘制任务得到至少一个绘制任务组,并将至少一个绘制任务组加入任务队列中。其中,如果不存在需要拆分的应用界面,则将待显帧中包含的所有绘制操作信息打包为一个任务。如果存在需要拆分的应用界面,则按照下面图5所示的方法处理应用界面。
接着,判断任务队列中的待绘制任务组是否为空,若是,则合成所有绘制结果,并送显。否则,在线程池中寻找空闲线程来处理绘制任务组的绘制任务,判断线程池中是否有空闲线程,若没有空闲线程,则进行等待。若有空闲线程,则将待绘制的绘制任务组分配给空闲线程,由该线程执行绘制任务。每次绘制任务组的任务执行完成后,将绘制任务组的绘制结果保存,并将执行该绘制任务组的绘制任务的线程标记为空闲,并从任务队列中删除该绘制任务组。重复执行上述过程,直到任务队列中所有任务执行完成后,将所有任务绘制的结果进行合成并送显。
下面以一个具体例子介绍本申请实施例的渲染方法的优势。以电子设备显示多个前台应用为例,参考图4B,图4B是本申请实施例提供的一种单线程单帧绘制示意图;以待显帧用于显示背景应用、抖音应用、淘宝应用、状态栏应用和导航栏应用五个应用界面为例,其中,分屏模式下屏幕左右区域各显示一个应用(如:淘宝和抖音),即两个应用并排显示。状态栏应用用于显示时间,电池电量和网络信号等。导航栏应用用于切换窗口等。淘宝应用和抖音应用都为自由窗口,其窗口的z序是可以变化的。假设淘宝应用的z序大,抖音应用的z序小。则按照每个应用界面的z序从小到大顺序,则绘制顺序为背景、抖音、淘宝、状态栏和导航栏。当采用单线程处理待显帧的绘制任务时,按照应用界面的Z序进行渲染,可以确定单帧绘制时长为5个应用的各自绘制时长之和,即t1+t2+t3+t4+t5,总共21ms,其中,t1为背景应用的绘制时长,t2为抖音应用的绘制时长,t3为淘宝应用的绘制时长,t4为状态栏应用的绘制时长,而t5为导航栏应用的绘制时长。t1=3ms,t2=10ms,t3=6ms,t4=1ms,t5=1ms。
参考图4C,图4C是本申请实施例提供的一种多线程绘制示意图;当利用本申请实施例的渲染方法处理上述待显帧的绘制任务时,假设电子设备的CPU具有三个核心,则最多可以划分成3个绘制任务组,M的最大值为3。假设利用图2所示的方法最终确定的分组结果为:第一个绘制任务组包括背景应用和0.4比例的抖音应用。第二组绘制任务包括0.6比例的抖音应用和0.4比例的淘宝应用。第三组绘制任务包括0.6比例的淘宝应用,状态栏和导航栏。由于利用本申请的渲染方法确定的分组结果可以使得每个绘制任务组的绘制时长相等或接近,因此,单帧绘制时长为任意一个绘制任务组的绘制时长,以第一组绘制任务为例,单帧绘制时长为t1+t2-1+β+M*α=3+4+0.5+3*0.5=9ms,相对单线程的情况,渲染效率可以提升57.1%。另外,本申请实施例中,可以在一个进程完成五个应用界面的渲染,因此可以支持跨窗口动效。
下面对本申请实施例提供的对用户界面进行拆分的方法进行具体说明。
参考图5,图5是本申请实施例提供的另一种渲染方法的流程示意图。其中,渲染方法包括以下步骤:
501、对用户界面对应的渲染树进行拆分,得到至少两个空间树。
其中,上述用户界面为至少一个应用界面。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。上述至少两个空间树用于渲染用户界面。
具体地,由于应用界面的控件的设计组成逻辑为父子关系,例如一个按钮控件,其父节点为按钮的背景,子节点为按钮上的文字等。该类父子关系组成一颗完整的渲染树,渲染树上每个节点包括布局信息以及录制好的绘制操作信息,而由于控件的组织关系可能存在夹层结构,即渲染节点可能在空间上耦合,二维控件的绘制是一系列有状态、有顺序的操作,若想要将应用界面的绘制任务进行拆分必须保证拆分后的每个绘制任务的状态与顺序和原始串行绘制时保持一致。因此,本申请实施例在拆分渲染树时,是对用户界面对应的绘制节点进行拆分,并保证拆分前后的绘制节点的状态操作不变,以拆分得到至少两个空间树。其中,可以根据实际情况确定空间树的具体数目。
本申请实施例中,将用户界面对应的渲染树拆分得到至少两个空间树,且保证每个空间树中的绘制节点拆分前后的状态操作不变,这样,在利用至少两个空间树渲染得到上述用户界面时,可以确保用户界面的渲染结果的正确性,另外,对用户界面的渲染任务进行拆分得到至少两个空间树,利用至少两个空间树进行渲染时可以支持正确地并行渲染。
在一种可能的实施方式中,上述至少两个空间树对应的渲染区域存在重叠,这样可以减少拆分渲染树所需的时间,提升渲染树的拆分效率。
在一种可能的实施方式中,当渲染区域有重叠时,重叠部分的渲染结果可能会出错,因此,本申请实施例中,上述至少两个空间树对应的渲染区域不重叠。其中,上述渲染区域不重叠是指渲染区域完全不重叠,这样可以进一步确保用户界面的渲染结果的正确性。
在一种可能的实施方式中,上述步骤501包括:
511、确定渲染树中的每个绘制节点对应的渲染区域的外接图形。
其中,本申请实施例中,绘制节点是指渲染树中用于执行绘制操作的渲染节点,而状态操作节点是指渲染树中用于执行状态操作的渲染节点。示例性地,绘制节点和状态操作节点可以是同一个渲染节点,即该渲染节点用于执行绘制操作和状态操作。
而外接图形是指规则图形和/或图形面积可计算的图形,例如矩形、圆形、正方形、梯形等。示例性地,本申请实施例中的外接图形可以是通常意义中的外接图形,即外接图形与渲染区域的各个顶点都相交。又示例性地,本申请实施例中的外接图形可以是包含渲染区域的图形,即渲染区域的各个顶点与外接图形并不相交,而是有一定的距离,该距离的具体取值可以根据实际需要进行设置,在此不做特别限定。
进一步示例性地,本申请实施例中,可以根据绘制节点的布局信息(包括渲染区域的位置和形状等)确定该绘制节点的外接图形。又示例性地,也可以直接利用绘制节点的包围盒,将包围盒作为绘制节点的外接图形,无需重新建立外接图形,节省处理流程,提升渲染效率。
本申请实施例中,确定绘制节点的渲染区域对应的外接图形,以根据外接图形近似估计该绘制节点的绘制负载大小。
512、将渲染树中绘制节点对应的外接图形划分为至少两个集合。
具体地,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。其中,第一阈值、第二阈值的具体数值可以根据实际情况进行设置,不做特别限定,使得至少两个集合中任意两个集合的外接图形的数量相差不大,和/或,使得至少两个集合中任意两个集合的外接图形的面积之和相差不大即可,这样划分可以保证拆分后得到的至少两个空间树中任意两个空间树之间的绘制负载相近,即可以实现绘制负载均衡式地拆分。
示例性地,对于至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,可以把用户界面抽象成了二维数组,获取绘制节点的外接图形等于在二维数组里打标记,这时可以抽象成通用问题:如何切分二组数组的区域,使得每个区域内的外接图形数量尽量均等,可以采用逐层扫描线算法,或者线段树算法等来解决上述通用问题。
示例性地,上述至少两个集合对应的渲染区域重叠。这样,可以减少外接图形划分所需的时间。又示例性地,上述至少两个集合对应的渲染区域不重叠,这样可以进一步确保用户界面的渲染结果的正确性。
又示例性地,为了提升外接图形划分的准确性,还可以先对外接图形进行粗划分得到若干个小集合,再根据第一阈值和/或第二阈值对若干个小集合进行组合得到上述至少两个集合。其中,每个小集合可以是预设数量的外接图形所组成的,或者,每个小集合可以是相邻的预设数量的外接图形所组成的。上述预设数量的具体数值可以根据实际情况进行设置,不做特别限定,例如,预设数量为2、3、4或5等。可选地,任意两个小集合之间也满足上述第一阈值和/或第二阈值对应的条件。同样地,可以采用逐层扫描线算法,或者线段树算法等来划分得到若干个小集合。
513、根据至少两个集合对渲染树进行拆分得到至少两个空间树。
其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
具体地,由于绘制节点对应的渲染区域的形状各异,无法对绘制节点进行精准划分,因此,本申请实施例中,利用绘制节点对应的外接图形可以准确地对绘制节点进行划分。另外,划分渲染树中的节点时,先划分绘制节点,再从绘制节点回溯到渲染树的根节点,回溯过程中经过的状态操作节点与上述绘制节点归为同一个集合,这样,可以确保绘制节点在划分前后的状态操作不变,保障拆分后得到的空间树可以正确地进行渲染。
另外,外接图形划分时,当一个外接图形被划入至少两个集合(以两个集合为例,此时,外接图形的一部分属于一个集合A,而该外接图形的另一部分属于另一个集合B)时,计算集合中包括的外接图形的数量时,上述至少两个集合都需要将该外接图形算入其中。且该外接图形对应的绘制节点的渲染区域的位置覆盖至少两个空间树对应的渲染区域,因此渲染时,假设由至少两个绘制线程来处理上述至少两个集合对应的至少两个空间树对应的绘制任务,每个绘制线程负责处理该外接图形位于该绘制线程对应的集合中的绘制任务,例如绘制节点的外接图形的部分区域a位于集合A,该外接图形除了部分区域a之外剩余的部分区域b位于集合B,集合A对应的空间树对应的绘制线程1处理部分区域a对应的绘制任务,集合B对应的空间树对应的绘制线程2处理部分区域b对应的绘制任务。
下面以用户界面为一个应用界面为例,对用户界面拆分的具体过程进行说明:
参考图6A,图6A是本申请实施例提供的一种渲染树的示意图。图6A为一个应用界面的渲染树,其中,root为渲染树的根节点,节点A、节点B和节点C为状态操作节点,而节点D、节点E、节点F、节点G、节点H、节点I、节点J、节点K为绘制节点。
首先,如图6B所示,图6B是本申请实施例提供的一种绘制节点的包围盒示意图,从应用界面601对应的渲染树中获取渲染节点的布局信息,再利用渲染节点的布局信息将绘制节点(如节点D、节点E等)抽象为矩形,也即包围盒。
接着,在需要渲染的区域中将各节点(即绘制节点)进行标记,如图6B中的“D”、“E”、“F”、“G”、“H”、“I”、“J”和“K”。再将矩形进行划分,得到至少两个集合。例如,以将矩形划分得到两个集合为例,节点D、节点E、节点J和节点K对应的矩形为一个集合,而节点H、节点I、节点F和节点G对应的矩形为另一个集合。
示例性地,本实施例中,参考图6C,图6C是本申请实施例提供的一种划分矩形的示意图;使用逐层扫描线算法(如图6C中的扫描线602)将整个需要渲染的区域划分为多个均衡的小区域(即上述小集合),即划分的多个小区域中每个小区域包含的矩形的数量近似相等(每个小区域的矩形数量之差小于第一阈值),小区域包括节点D对应的矩形和节点E对应的矩形组成的小区域、节点J对应的矩形和节点K对应的矩形组成的小区域、节点H对应的矩形和节点I对应的矩形组成的小区域、以及节点F对应的矩形和节点G对应的矩形组成的小区域。而后根据实际需要对各个小区域进行组合,以得到至少两个集合。例如,以将矩形划分得到两个集合为例,将节点D对应的矩形和节点E对应的矩形组成的小区域、节点J对应的矩形和节点K对应的矩形组成的小区域组成一个集合,而节点H对应的矩形和节点I对应的矩形组成的小区域、以及节点F对应的矩形和节点G对应的矩形组成的小区域组成另一个集合。
进一步地,根据上述至少两个集合遍历渲染树,进而构建出至少两个空间树。其中,将集合中的矩形对应的绘制节点归为同一个空间树,而对于集合中的每个矩形,从矩形对应的节点往根节点回溯,期间经过的状态操作节点归入该矩形所在的空间树。
示例性地,参考图6D,图6D是本申请实施例提供的一种渲染树的标记示意图,在根据至少两个集合得到至少两个空间树时,可以利用二进制数进行标记的方法来划分。以节点D、节点E、节点J和节点K对应的矩形为一个集合A,而节点H、节点I、节点F和节点G对应的矩形为另一个集合B为例,由于有两个集合,因此,可以用两位的二进制数来标记渲染树上的节点,当节点属于集合B时,第一位的二进制数为1,否则为0。当节点属于集合A时,第二位的二进制数为1,否则为0。其中,对于矩形对应的节点、以及集合中的矩形对应的节点往根节点回溯时所经过的状态操作节点用上述方法进行标记后,可以得到至少两个空间树,例如,节点D被标记为“01”,表示节点D属于集合A,而节点F被标记为“10”,表示节点F属于集合B。而根节点被标记为“11”,表示根节点属于集合A和集合B。对图6D的渲染树拆分得到图6E所示的集合A对应的空间树603和集合B对应的空间树604,可见,当以矩形的数量来衡量绘制负载时,由于空间树603和空间树604对应的矩形数量相等,它们的绘制负载占比为1/2。
然后依据空间树的划分,将每个空间树中包含的绘制操作信息打包为单个任务。由于空间树是以UI控件的空间位置构建的,因此,每个空间树表示一个区域的绘制任务。示例性地,通过渲染树拆分后,每个空间树对应的渲染区域不存在重叠,并且空间树可以保证其绘制操作信息按从下到上的保证状态的顺序执行,所以空间树对应的任务也能被并行执行。例如,如图6E所示,渲染树被拆分为集合A对应的空间树603和集合B对应的空间树604。其中,根据空间树603进行渲染可以得到应用界面601的左半部分,根据空间树604进行渲染可以得到应用界面601的右半部分。
当电子设备的系统只有1个前台应用,而且该应用的负载很大如抖音,系统的性能取决于最慢的应用,抖音的执行时长影响整体的性能。参考图6F,图6F是本申请实施例提供的一种应用界面的线程分配示意图;其中,线程1负责处理背景应用的渲染任务,渲染一帧所需的绘制时长为t1。线程2负责处理抖音应用的渲染任务,渲染一帧所需的绘制时长为t2。而线程3负责处理状态栏应用和导航栏应用的渲染任务,渲染一帧所需的绘制时长分别为t3和t4。此时,完成单帧渲染所需的时长取决于绘制时长最长的线程,即线程2对应的绘制时长t2。而按照本申请实施例的方案,可以对抖音应用的绘制任务进行拆分,得到至少两个子绘制任务,此时可以将至少两个子绘制任务分配给至少两个线程进行处理,进而减小单帧所需的绘制时长。例如,将抖音拆分成抖音-1对应的子绘制任务(所需的绘制时长为t2-1)和抖音-2对应的子绘制任务(所需的绘制时长为t2-2)。参考图6G,图6G是本申请实施例提供的另一种应用界面的线程分配示意图。假设将抖音-1对应的子绘制任务分配给线程1进行处理,而将抖音-2对应的子绘制任务继续分配给线程2进行处理。此时,单帧的绘制时长为t2-2,可见,t2-2小于抖音的绘制时长t2。可见,利用本申请的方法,可以实现正确地并行渲染,以提升应用界面的渲染效率。
下面对本申请提供的装置进行说明。
图7和图8为本申请实施例提供的可能的渲染装置的结构示意图。这些渲染装置可以用于实现上述方法实施例的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该渲染装置可以是电子设备,还可以是应用于电子设备中的模块(如芯片)。
如图7所示,渲染装置700包括确定模块701、划分模块702和处理模块703。渲染装置700用于实现上述图2中所示的方法实施例的功能。或者,渲染装置700可以包括用于实现上述图2中所示的方法实施例中的任一功能或操作的模块,该模块可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。
当渲染装置700用于实现图2所示的方法实施例中的功能时,确定模块701,用于确定待显帧对应的分组结果。其中,待显帧用于显示至少一个应用界面,分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。划分模块702,用于根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。处理模块703,用于利用至少一个绘制线程处理至少一个绘制任务组以得到至少一个绘制结果。
在一种可能的实施方式中,上述渲染装置700还包括发送模块,其中:
发送模块,用于发送至少一个绘制结果。
在一种可能的实施方式中,上述渲染装置700还包括拆分模块,其中:
拆分模块,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。其中,至少两个空间树用于渲染得到用户界面。用户界面为至少一个应用界面中的至少一个。
在一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。
在一种可能的实施方式中,上述拆分模块,具体用于:确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中每个绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。
在一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。
所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
在一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个所述绘制线程。
在一种可能的实施方式中,上述分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和。
在一种可能的实施方式中,所述分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,所述第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,所述第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
在一种可能的实施方式中,所述分组方案中绘制任务组的数目为M时,所述M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,所述第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
在一种可能的实施方式中,上述绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和;
绘制任务组包括非完整的应用界面的绘制任务时,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积;
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
在一种可能的实施方式中,上述完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长;
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
如图8所示,渲染装置800包括拆分模块801。渲染装置800用于实现上述图5中所示的方法实施例的功能。或者,渲染装置800可以包括用于实现上述图5中所示的方法实施例中的任一功能或操作的模块,该模块可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。
当渲染装置800用于实现图5所示的方法实施例中的功能时,拆分模块801,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树。每个空间树中的绘制节点拆分前后的状态操作不变,状态操作为对画布的属性进行修改的操作。上述至少两个空间树用于渲染用户界面。
在一种可能的实施方式中,上述至少两个空间树对应的渲染区域不重叠。
在一种可能的实施方式中,上述拆分模块801,具体用于:
确定渲染树中的每个绘制节点对应的渲染区域的外接图形。将渲染树中绘制节点对应的外接图形划分为至少两个集合。其中,至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值。根据至少两个集合对渲染树进行拆分得到至少两个空间树。其中,集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到渲染树的根节点时经过的状态操作节点。在一种可能的实施方式中,上述至少两个集合对应的渲染区域不重叠。
在一种可能的实施方式中,上述绘制节点对应的渲染区域的外接图形为绘制节点对应的渲染区域的包围盒。
在一种可能的实施方式中,上述渲染装置还包括确定模块,其中:
确定模块,用于确定待显帧的分组结果。其中,待显帧用于显示上述至少一个应用界面。分组结果用于将至少一个应用界面的绘制任务组成至少一个绘制任务组,以使待显帧的绘制时长小于或等于至少一个应用界面的绘制时长之和。
在一种可能的实施方式中,上述渲染装置还包括划分模块和处理模块,其中:
划分模块,用于根据分组结果将至少一个应用界面的绘制任务划分为至少一个绘制任务组。
处理模块,用于利用至少一个绘制线程处理至少一个绘制任务组的绘制任务以得到至少一个绘制结果,至少一个绘制结果用于合成得到待显帧的总绘制结果。
在一种可能的实施方式中,上述渲染装置还包括发送模块,其中:
发送模块,用于发送至少一个绘制结果。
在一种可能的实施方式中,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个绘制线程。
在一种可能的实施方式中,分组结果为第一值满足预设条件的至少一个应用界面的分组方案,分组方案的第一值为分组方案对应的最长的绘制任务组的绘制时长与合成时长之和,合成时长为分组方案中绘制任务组的数目和合成开销之间的乘积。
在一种可能的实施方式中,分组方案中绘制任务组的数目为二时,上述至少一个应用界面的分组方案包括第一分组方案,第一分组方案为将应用界面序列切分成绘制时长相等的两部分,上述应用界面序列为将上述至少一个应用界面按照预设顺序进行排列得到的序列。
可选地,上述至少一个应用界面的分组方案还包括第二分组方案和/或第三分组方案,第二分组方案为二分点位于第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的起点。上述二分点为将应用界面序列切分成绘制时长相等的两部分所对应的位置,上述第一应用界面为上述至少一个应用界面中的一个。
而上述第三分组方案为上述二分点位于上述第一应用界面的绘制任务范围内时,将上述二分点移动到第一应用界面的绘制任务的终点。
在一种可能的实施方式中,分组方案中绘制任务组的数目为M时,M大于或等于三,上述至少一个应用界面的分组方案包括第四分组方案,第四分组方案为将应用界面序列切分成绘制时长相等的M个部分。
可选地,上述至少一个应用界面的分组方案还包括第五分组方案,上述第五分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个的位置,并将上述第一M分点移动到第一应用界面的绘制任务的起点。上述M-1个M分点为将应用界面序列切分成绘制时长相等的M个部分所对应的位置,上述第一M分点为上述M-1个M分点中的任意一个。
可选地,上述至少一个应用界面的分组方案还包括第六分组方案,上述第六分组方案是第一M分点位于第一应用界面的绘制任务范围内时,固定上述应用界面序列的M-1个M分点中的M-2个,并将上述第一M分点移动到第一应用界面的绘制任务的终点。
在一种可能的实施方式中,绘制任务组的绘制时长为以下至少一项:
绘制任务组包括完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
绘制任务组包括非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第一绘制时长,第一绘制时长为绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,切分时长为非完整的应用界面的数目和切分开销的乘积。
绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,此处的“包括”是指仅仅包括,绘制任务组的绘制时长为第二绘制时长,第二绘制时长为第一绘制时长与第三绘制时长之和,第三绘制时长为绘制任务组中包括的完整的应用界面的绘制时长之和。
在一种可能的实施方式中,完整的应用界面的绘制时长为以下任一项:
应用界面的加权平均绘制时长,加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,第四绘制时长为应用界面在待显帧之前的第二帧中的绘制实测时长,第五绘制时长为应用界面在待显帧的前一帧中的绘制实测时长。
应用界面的渲染指令总次数,渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
本申请还提供一种电子设备,图9所示的电子设备900包括存储器901、处理器902、通信接口904以及总线903。其中,存储器901、处理器902、通信接口904通过总线903实现彼此之间的通信连接。
存储器901可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器901可以存储程序,当存储器901中存储的程序被处理器902执行时,处理器902和通信接口904用于执行本申请实施例的渲染方法的各个步骤。
处理器902可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的渲染装置中的单元所需执行的功能,或者执行本申请实施例的渲染方法。
处理器902还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请实施例的渲染方法的各个步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902还可以是通用处理器、数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field ProgrammableGate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例的渲染方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器901,处理器902读取存储器901中的信息,结合其硬件完成本申请实施例的渲染装置中包括的单元所需执行的功能,或者执行本申请实施例的渲染方法。
通信接口904使用例如但不限于收发器一类的收发装置,来实现电子设备900与其他设备或通信网络之间的通信。例如,可以通过通信接口904获取数据。
总线903可包括在电子设备900各个部件(例如,存储器901、处理器902、通信接口904)之间传送信息的通路。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (34)
1.一种渲染方法,其特征在于,所述方法包括:
确定待显帧的分组结果,其中,所述待显帧用于显示至少一个应用界面,所述分组结果用于将所述至少一个应用界面的绘制任务组成至少一个绘制任务组,以使所述待显帧的绘制时长小于或等于所述至少一个应用界面的绘制时长之和;
根据所述分组结果将所述至少一个应用界面的绘制任务划分为所述至少一个绘制任务组;
利用至少一个绘制线程处理所述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,所述至少一个绘制结果用于合成得到所述待显帧的总绘制结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
发送所述至少一个绘制结果。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
对用户界面对应的渲染树进行拆分,得到至少两个空间树,每个所述空间树中的绘制节点拆分前后的状态操作不变,所述状态操作为对画布的属性进行修改的操作;所述至少两个空间树用于渲染得到所述用户界面,所述用户界面为所述至少一个应用界面中的至少一个。
4.根据权利要求3所述的方法,其特征在于,所述至少两个空间树对应的渲染区域不重叠。
5.根据权利要求3或4所述的方法,其特征在于,所述对用户界面对应的渲染树进行拆分,得到至少两个空间树,包括:
确定所述渲染树中的每个绘制节点对应的渲染区域的外接图形;
将所述渲染树中每个绘制节点对应的外接图形划分为至少两个集合,其中,所述至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,所述至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值;
根据所述至少两个集合对所述渲染树进行拆分得到所述至少两个空间树。
6.根据权利要求5所述的方法,其特征在于,所述至少两个集合对应的渲染区域不重叠。
7.根据权利要求5或6所述的方法,其特征在于,所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
8.根据权利要求1至7任一项所述的方法,其特征在于,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个所述绘制线程。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述分组结果为第一值满足预设条件的所述至少一个应用界面的分组方案,所述分组方案的第一值为所述分组方案对应的最长的绘制任务组的绘制时长与合成时长之和。
10.根据权利要求9所述的方法,其特征在于,所述绘制任务组的绘制时长为以下至少一项:
所述绘制任务组包括完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为所述绘制任务组中包括的完整的应用界面的绘制时长之和;
所述绘制任务组包括非完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为第一绘制时长,所述第一绘制时长为所述绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,所述切分时长为所述非完整的应用界面的数目和切分开销的乘积;
所述绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为第二绘制时长,所述第二绘制时长为所述第一绘制时长与第三绘制时长之和,所述第三绘制时长为所述绘制任务组中包括的完整的应用界面的绘制时长之和。
11.根据权利要求10所述的方法,其特征在于,所述完整的应用界面的绘制时长为以下任一项:
所述应用界面的加权平均绘制时长,所述加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,所述第四绘制时长为所述应用界面在所述待显帧之前的第二帧中的绘制实测时长,所述第五绘制时长为所述应用界面在所述待显帧的前一帧中的绘制实测时长;
所述应用界面的渲染指令总次数,所述渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
12.一种渲染方法,其特征在于,所述方法包括:
对用户界面对应的渲染树进行拆分,得到至少两个空间树,每个所述空间树中的绘制节点拆分前后的状态操作不变,所述状态操作为对画布的属性进行修改的操作;所述至少两个空间树用于渲染所述用户界面。
13.根据权利要求12所述的方法,其特征在于,所述至少两个空间树对应的渲染区域不重叠。
14.根据权利要求12或13所述的方法,其特征在于,所述对用户界面对应的渲染树进行拆分,得到至少两个空间树,包括:
确定所述渲染树中的每个绘制节点对应的渲染区域的外接图形;
将所述渲染树中绘制节点对应的外接图形划分为至少两个集合,其中,所述至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,所述至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值;
根据所述至少两个集合对所述渲染树进行拆分得到所述至少两个空间树,所述集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到所述渲染树的根节点时经过的状态操作节点。
15.根据权利要求14所述的方法,其特征在于,所述至少两个集合对应的渲染区域不重叠。
16.根据权利要求14或15所述的方法,其特征在于,所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
17.一种渲染装置,其特征在于,包括:
确定模块,用于确定待显帧的分组结果,其中,所述待显帧用于显示至少一个应用界面,所述分组结果用于将所述至少一个应用界面的绘制任务组成至少一个绘制任务组,以使所述待显帧的绘制时长小于或等于所述至少一个应用界面的绘制时长之和;
划分模块,用于根据所述分组结果将所述至少一个应用界面的绘制任务划分为所述至少一个绘制任务组;
处理模块,用于利用至少一个绘制线程处理所述至少一个绘制任务组的绘制任务以得到至少一个绘制结果,所述至少一个绘制结果用于合成得到所述待显帧的总绘制结果。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
发送模块,用于发送所述至少一个绘制结果。
19.根据权利要求17或18所述的装置,其特征在于,所述装置还包括:
拆分模块,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树,每个所述空间树中的绘制节点拆分前后的状态操作不变,所述状态操作为对画布的属性进行修改的操作;所述至少两个空间树用于渲染得到所述用户界面,所述用户界面为所述至少一个应用界面中的至少一个。
20.根据权利要求19所述的装置,其特征在于,所述至少两个空间树对应的渲染区域不重叠。
21.根据权利要求19或20所述的装置,其特征在于,所述拆分模块具体用于:
确定所述渲染树中的每个绘制节点对应的渲染区域的外接图形;
将所述渲染树中每个绘制节点对应的外接图形划分为至少两个集合,其中,所述至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,所述至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值;
根据所述至少两个集合对所述渲染树进行拆分得到所述至少两个空间树。
22.根据权利要求21所述的装置,其特征在于,所述至少两个集合对应的渲染区域不重叠。
23.根据权利要求21或22所述的装置,其特征在于,所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
24.根据权利要求17至23任一项所述的装置,其特征在于,同一时刻,电子设备中的中央处理器CPU的一个内核执行一个所述绘制线程。
25.根据权利要求17至24任一项所述的装置,其特征在于,所述分组结果为第一值满足预设条件的所述至少一个应用界面的分组方案,所述分组方案的第一值为所述分组方案对应的最长的绘制任务组的绘制时长与合成时长之和。
26.根据权利要求25所述的装置,其特征在于,所述绘制任务组的绘制时长为以下至少一项:
所述绘制任务组包括完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为所述绘制任务组中包括的完整的应用界面的绘制时长之和;
所述绘制任务组包括非完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为第一绘制时长,所述第一绘制时长为所述绘制任务组中包括的非完整的应用界面的绘制时长之和与切分时长的总和,所述切分时长为所述非完整的应用界面的数目和切分开销的乘积;
所述绘制任务组包括完整的应用界面的绘制任务和非完整的应用界面的绘制任务时,所述绘制任务组的绘制时长为第二绘制时长,所述第二绘制时长为所述第一绘制时长与第三绘制时长之和,所述第三绘制时长为所述绘制任务组中包括的完整的应用界面的绘制时长之和。
27.根据权利要求26所述的装置,其特征在于,所述完整的应用界面的绘制时长为以下任一项:
所述应用界面的加权平均绘制时长,所述加权平均绘制时长为第四绘制时长、第五绘制时长以及各自的权重的加权运算值,所述第四绘制时长为所述应用界面在所述待显帧之前的第二帧中的绘制实测时长,所述第五绘制时长为所述应用界面在所述待显帧的前一帧中的绘制实测时长;
所述应用界面的渲染指令总次数,所述渲染指令总次数为不同种类的渲染指令的数量及其对应的权重的加权运算值。
28.一种渲染装置,其特征在于,包括:
拆分模块,用于对用户界面对应的渲染树进行拆分,得到至少两个空间树,每个所述空间树中的绘制节点拆分前后的状态操作不变,所述状态操作为对画布的属性进行修改的操作;所述至少两个空间树用于渲染所述用户界面。
29.根据权利要求28所述的装置,其特征在于,所述至少两个空间树对应的渲染区域不重叠。
30.根据权利要求28或29所述的装置,其特征在于,所述拆分模块具体用于:
确定所述渲染树中的每个绘制节点对应的渲染区域的外接图形;
将所述渲染树中绘制节点对应的外接图形划分为至少两个集合,其中,所述至少两个集合中任意两个集合中的外接图形的数量之差小于第一阈值,和/或,所述至少两个集合中任意两个集合中的外接图形的面积之和的差小于第二阈值;
根据所述至少两个集合对所述渲染树进行拆分得到所述至少两个空间树,所述集合对应的空间树包括该集合中的外接图形对应的绘制节点,以及从该绘制节点回溯到所述渲染树的根节点时经过的状态操作节点。
31.根据权利要求30所述的装置,其特征在于,所述至少两个集合对应的渲染区域不重叠。
32.根据权利要求30或31所述的装置,其特征在于,所述绘制节点对应的渲染区域的外接图形为所述绘制节点对应的渲染区域的包围盒。
33.一种电子设备,其特征在于,包括处理器和存储器,其中,所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1至16任一项所述的渲染方法。
34.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至16任一项所述的渲染方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310267611.1A CN118625979A (zh) | 2023-03-08 | 2023-03-08 | 渲染方法及相关设备 |
PCT/CN2024/080397 WO2024183771A1 (zh) | 2023-03-08 | 2024-03-06 | 渲染方法及相关设备 |
EP24765933.7A EP4478187A1 (en) | 2023-03-08 | 2024-03-06 | Rendering method and related device |
CN202480000463.XA CN119096273A (zh) | 2023-03-08 | 2024-03-06 | 渲染方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310267611.1A CN118625979A (zh) | 2023-03-08 | 2023-03-08 | 渲染方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118625979A true CN118625979A (zh) | 2024-09-10 |
Family
ID=92603739
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310267611.1A Pending CN118625979A (zh) | 2023-03-08 | 2023-03-08 | 渲染方法及相关设备 |
CN202480000463.XA Pending CN119096273A (zh) | 2023-03-08 | 2024-03-06 | 渲染方法及相关设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202480000463.XA Pending CN119096273A (zh) | 2023-03-08 | 2024-03-06 | 渲染方法及相关设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4478187A1 (zh) |
CN (2) | CN118625979A (zh) |
WO (1) | WO2024183771A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8330763B2 (en) * | 2007-11-28 | 2012-12-11 | Siemens Aktiengesellschaft | Apparatus and method for volume rendering on multiple graphics processing units (GPUs) |
CN103310475B (zh) * | 2012-03-16 | 2017-09-12 | 腾讯科技(深圳)有限公司 | 动画播放方法及装置 |
CN110764849A (zh) * | 2018-07-25 | 2020-02-07 | 优视科技有限公司 | 用户界面的渲染方法、设备、客户端装置及电子设备 |
CN117806745B (zh) * | 2022-10-19 | 2024-10-29 | 华为技术有限公司 | 界面生成方法及电子设备 |
-
2023
- 2023-03-08 CN CN202310267611.1A patent/CN118625979A/zh active Pending
-
2024
- 2024-03-06 EP EP24765933.7A patent/EP4478187A1/en active Pending
- 2024-03-06 WO PCT/CN2024/080397 patent/WO2024183771A1/zh active Application Filing
- 2024-03-06 CN CN202480000463.XA patent/CN119096273A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN119096273A (zh) | 2024-12-06 |
EP4478187A1 (en) | 2024-12-18 |
WO2024183771A1 (zh) | 2024-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102419745B1 (ko) | 게임 렌더링 방법, 및 게임 자원 파일 생성 방법, 장치, 및 기기 | |
CN108665520A (zh) | 一种页面动画渲染的方法及装置 | |
US8669982B2 (en) | Method and system for generating and displaying an interactive dynamic culling graph view of multiply connected objects | |
CN110989878B (zh) | 小程序中的动画展示方法、装置、电子设备及存储介质 | |
TW201909109A (zh) | 用於圖形處理的衝穿技術 | |
KR102292789B1 (ko) | 디스플레이장치 및 그 제어방법 | |
JP2012525638A (ja) | データ可視化プラットフォームのパフォーマンスの最適化 | |
CN113827965B (zh) | 游戏场景中样条线的渲染方法、装置及设备 | |
CN114862999A (zh) | 一种打点渲染方法、装置、设备及存储介质 | |
US20240070962A1 (en) | Graphics processing method and system | |
US20230343021A1 (en) | Visible element determination method and apparatus, storage medium, and electronic device | |
US20230316626A1 (en) | Image rendering method and apparatus, computer device, and computer-readable storage medium | |
CN108509241B (zh) | 一种图像的全屏显示方法、全屏显示装置及移动终端 | |
CN114648603A (zh) | 一种基于canvas与echarts实现飞线动效的方法及系统 | |
US10424084B2 (en) | Digital content rendering that supports alpha is shape (AIS) as part of knockout groups | |
AU2013260722A1 (en) | Scheduling interpreting and rasterising tasks in a multi-threaded RIP | |
KR102482874B1 (ko) | 렌더링 장치 및 방법 | |
CN118625979A (zh) | 渲染方法及相关设备 | |
KR20120024315A (ko) | 사용자 이벤트에 반응한 프레임워크를 표시하는 프레임워크 표시 시스템 및 방법 | |
WO2024078111A1 (zh) | 界面渲染的方法及电子设备 | |
CN113608809B (zh) | 组件的布局方法、装置、设备、存储介质及程序产品 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN115268916A (zh) | 一种基于低代码开发平台的动态表单实现方法及系统 | |
US10546399B2 (en) | Pencil ink render using high priority queues | |
CN116670719A (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 |