CN116414493A - 图像处理方法、电子设备及存储介质 - Google Patents

图像处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN116414493A
CN116414493A CN202111681775.6A CN202111681775A CN116414493A CN 116414493 A CN116414493 A CN 116414493A CN 202111681775 A CN202111681775 A CN 202111681775A CN 116414493 A CN116414493 A CN 116414493A
Authority
CN
China
Prior art keywords
frame buffer
command
rendering
processor
resolution
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
Application number
CN202111681775.6A
Other languages
English (en)
Inventor
李英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202111681775.6A priority Critical patent/CN116414493A/zh
Priority to PCT/CN2022/114624 priority patent/WO2023124149A1/zh
Priority to EP22913432.5A priority patent/EP4276618A1/en
Priority to US18/276,354 priority patent/US20240112298A1/en
Publication of CN116414493A publication Critical patent/CN116414493A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本申请提供了一种图像处理方法、电子设备及存储介质,涉及图像处理领域。该方法包括:接收应用程序下发的创建帧缓冲资源命令,创建帧缓冲资源命令对应的帧缓冲包含颜色附件;将颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识存储至预设存储空间;接收应用程序下发的渲染命令,该渲染命令对应于第一帧缓冲;若预设存储空间中有一帧缓冲标识与第一帧缓冲的帧缓冲标识一致,在第二帧缓冲上执行渲染命令对应的渲染操作,第二帧缓冲的分辨率小于第一帧缓冲的分辨率。本申请中的技术方案可以使用较小的分辨率执行图像中部分场景的渲染操作,减少电子设备在该图像的渲染过程中的算力和功耗开销。

Description

图像处理方法、电子设备及存储介质
技术领域
本申请涉及图像处理领域,尤其涉及一种图像处理方法、电子设备及存储介质。
背景技术
电子设备可以展示不同分辨率的图像,更高分辨率的图像可以带来更好的视觉体验。但是,电子设备在向用户展示图像之前,需要对图像进行渲染处理,所以更高分辨率的图像也意味着更大的渲染负荷,会增加电子设备在渲染过程中的算力和功耗开销,导致电子设备出现发热严重、运行卡顿等问题。
发明内容
鉴于以上内容,有必要提供一种图像处理方法、电子设备及存储介质,可以使用较小的分辨率执行图像中部分场景的渲染操作,减少电子设备在该图像的渲染过程中的算力和功耗开销。
为了达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种图像处理方法,应用于电子设备,电子设备上运行有应用程序,方法包括:接收应用程序下发的创建帧缓冲资源命令,创建帧缓冲资源命令对应的帧缓冲包含颜色附件;将颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识存储至预设存储空间;接收应用程序下发的渲染命令,该渲染命令对应于第一帧缓冲;若预设存储空间中有一帧缓冲标识与第一帧缓冲的帧缓冲标识一致,在第二帧缓冲上执行渲染命令对应的渲染操作,第二帧缓冲的分辨率小于第一帧缓冲的分辨率。上述技术方案,可以使用较小的分辨率执行图像中部分场景的渲染操作,减少电子设备在该图像的渲染过程中的算力和功耗开销。
在一种实现方式中,接收所述应用程序下发的创建帧缓冲资源命令包括:接收应用程序下发的第一创建帧缓冲资源命令,第一创建帧缓冲资源命令对应于第三帧缓冲,第三帧缓冲的颜色附件的数量满足预设数量条件;该方法还包括:存储第三帧缓冲的帧缓冲标识;接收到应用程序下发的渲染命令之前,该方法还包括:接收到应用程序下发的第二创建帧缓冲资源命令,第二创建帧缓冲资源命令对应于第四帧缓冲;若第四帧缓冲的分辨率与第三帧缓冲的分辨率相同,存储第四帧缓冲的帧缓冲标识。
上述技术方案,在识别到一个颜色附件数量满足预设数量条件的帧缓冲后,可以直接基于该帧缓冲的分辨率在后续接收到的创建帧缓冲资源命令中确定主帧缓冲,无需根据颜色附件数量确定主帧缓冲,可以减少识别过程中的算力,提高确定主帧缓冲的效率。
在一种实现方式中,接收到应用程序下发的渲染命令之后,该方法还包括:确定预设存储空间中是否有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致。
在一种实现方式中,将颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识存储至预设存储空间之前,该方法还包括:判断创建帧缓冲资源命令对应的帧缓冲的颜色附件的数量是否满足预设数量条件。
在一种实现方式中,在第二帧缓冲上执行渲染命令对应的渲染操作之前,该方法还包括:用第二帧缓冲替换第一帧缓冲。用第二帧缓冲替换渲染命令中的第一帧缓冲,使得可以在第二帧缓冲上完成渲染命令对应的渲染操作。
在一种实现方式中,若第四帧缓冲的分辨率与第三帧缓冲的分辨率相同,存储第四帧缓冲的帧缓冲标识之前,该方法还包括:获取第三帧缓冲的分辨率和第四帧缓冲的分辨率。
在一种实现方式中,接收应用程序下发的创建帧缓冲资源命令之后,该方法还包括:确定创建帧缓冲资源命令对应的帧缓冲的颜色附件的数量。
在一种实现方式中,电子设备包括处理器和内部存储器,该方法还包括:处理器接收应用程序下发的创建帧缓冲资源命令,该创建帧缓冲资源命令对应的帧缓冲包含颜色附件;处理器将颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识发送至内部存储器;内部存储器存储处理器发送的帧缓冲标识。处理器通过将颜色附件的数量满足预设数量条件的帧缓冲确定为主帧缓冲,提高了确定主帧缓冲的准确率。同时控制内部存储器将确定为主帧缓冲的帧缓冲标识进行存储,方便了后续调用存储的帧缓冲标识,从而提高了图像处理的效率。
在一种实现方式中,处理器接收应用程序下发的创建帧缓冲资源命令包括:处理器接收应用程序下发的第一创建帧缓冲资源命令,第一创建帧缓冲资源命令对应于第三帧缓冲,第三帧缓冲的颜色附件的数量满足预设数量条件;该方法还包括:内部存储器存储第三帧缓冲的帧缓冲标识;接收到应用程序下发的渲染命令之前,方法还包括:处理器接收应用程序下发的第二创建帧缓冲资源命令,第二创建帧缓冲资源命令对应于第四帧缓冲;若第四帧缓冲的分辨率与第三帧缓冲的分辨率相同,处理器向内部存储器发送第四帧缓冲的帧缓冲标识。
上述技术方案,处理器在识别到一个颜色附件数量满足预设数量条件的帧缓冲后,可以直接基于该帧缓冲的分辨率在后续接收到的创建帧缓冲资源命令中确定主帧缓冲,无需根据颜色附件数量确定主帧缓冲,可以减少识别过程中的算力,提高确定主帧缓冲的效率。
在一种实现方式中,接收到应用程序下发的渲染命令之后,该方法还包括:处理器从内部存储器中获取存储的帧缓冲标识。
在一种实现方式中,接收到应用程序下发的渲染命令之后,该方法还包括:处理器判断存储的帧缓冲标识中是否有一帧缓冲标识与第一帧缓冲的帧缓冲标识一致。
在一种实现方式中,所述电子设备包括图形处理器,所述方法还包括:处理器向图形处理器发送创建帧缓冲资源命令,创建帧缓冲资源命令用于指示图形处理器创建创建帧缓冲资源命令对应的帧缓冲。
在一种实现方式中,在第二帧缓冲上执行渲染命令对应的渲染操作包括:处理器将渲染命令中的第一帧缓冲替换为第二帧缓冲;处理器将渲染命令发送至图像处理器;图像处理器在第二帧缓冲上执行渲染命令对应的渲染操作。通过处理器将渲染命令中的第一帧缓冲替换为第二帧缓冲,使得图像处理器可以在第二帧缓冲上执行渲染命令对应的渲染操作,从而减小了电子设备在渲染图像过程中的算力消耗,减少了电子设备的发热。
在一种实现方式中,处理器包括拦截模块和识别模块,处理器接收应用程序下发的创建帧缓冲资源命令包括:拦截模块拦截应用程序下发的创建帧缓冲资源命令,并向识别模块发送创建帧缓冲资源命令;识别模块接收创建帧缓冲资源命令。
在一种实现方式中,识别模块接收创建帧缓冲资源命令包括:识别模块接收第一创建帧缓冲资源命令,第一创建帧缓冲资源命令对应于第三帧缓冲,第三帧缓冲的颜色附件的数量满足预设数量条件;所述方法还包括:内部存储器存储第三帧缓冲的帧缓冲标识;接收到应用程序下发的渲染命令之前,该方法还包括:识别模块接收到第二创建帧缓冲资源命令,第二创建帧缓冲资源命令对应于第四帧缓冲;若第四帧缓冲的分辨率与第三帧缓冲的分辨率相同,识别模块向内部存储器发送第四帧缓冲的帧缓冲标识。
在一种实现方式中,处理器包括决策模块,处理器从内部存储器中获取存储的帧缓冲标识之后,该方法还包括:决策模块判断存储的帧缓冲标识中是否有一帧缓冲标识与第一帧缓冲的帧缓冲标识一致。
在一种实现方式中,处理器包括替换模块,处理器将渲染命令中的第一帧缓冲替换为第二帧缓冲之前,该方法还包括:若预设存储空间中有一帧缓冲标识与第一帧缓冲的帧缓冲标识一致,决策模块将渲染命令发送至替换模块;处理器将渲染命令中的第一帧缓冲替换为第二帧缓冲包括:替换模块将渲染命令对应的第一帧缓冲替换为第二帧缓冲;处理器将渲染命令发送至图像处理器包括:替换模块将渲染命令发送至图像处理器。
第二方面,本申请实施例提供一种图像处理方法,应用于电子设备,电子设备上运行有应用程序,该方法包括:获取应用程序对应的历史渲染数据;基于历史渲染数据中历史帧缓冲对应的颜色附件数量,确定历史分辨率;确定应用程序下发的创建帧缓冲资源命令对应的帧缓冲;将分辨率与历史分辨率相同的帧缓冲的帧缓冲标识发送至预设存储空间;接收应用程序下发的渲染命令,该渲染命令对应于第五帧缓冲;若预设存储空间中有一帧缓冲标识与第五帧缓冲的帧缓冲标识一致,在第六帧缓冲上执行渲染命令对应的渲染操作,第六帧缓冲的分辨率小于第五帧缓冲的分辨率。
上述技术方案,能够使得电子设备可以基于历史渲染数据中历史帧缓冲对应的颜色附件数量确定历史分辨率,从而确定渲染过程中的主场景,使得可以使用较小的分辨率执行图像中部分场景的渲染操作,减少电子设备在该图像的渲染过程中的算力和功耗开销。
在一种实现方式中,基于历史渲染数据中历史帧缓冲对应的颜色附件数量,确定历史分辨率包括:判断历史渲染数据中是否有一历史帧缓冲的颜色附件数量满足预设数量条件;若有一历史帧缓冲的颜色附件数量满足预设数量条件,将历史帧缓冲的分辨率确定为历史分辨率。基于历史帧缓冲的颜色附件数量是否满足预设数量条件,确定历史帧缓冲是否为历史主帧缓冲,可以提高确定历史主帧缓冲的准确率。
在一种实现方式中,确定应用程序下发的创建帧缓冲资源命令对应的帧缓冲的分辨率之后,该方法还包括:将创建帧缓冲资源命令对应的帧缓冲的分辨率与历史分辨率进行比对。
在一种实现方式中,接收所述应用程序下发的渲染命令之后,该方法还包括:确定预设存储空间中是否有一帧缓冲标识与第五帧缓冲的帧缓冲标识一致。
在一种实现方式中,在第六帧缓冲上执行渲染命令对应的渲染操作之前,该方法还包括:用第六帧缓冲替换第五帧缓冲。通过用第六帧缓冲替换第五帧缓冲,使得可以在第六帧缓冲上完成渲染命令对应的渲染操作。
第三方面,本申请实施例提供一种电子设备,电子设备包括存储器和处理器;其中,存储器,用于存储程序指令;处理器,用于读取存储器中存储的程序指令,以实现上述的图像处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机可读指令,计算机可读指令被处理器执行时实现上述的图像处理方法。
另外,第三方面和第四方面所带来的技术效果可参见上述方法部分各涉及的方法相关的描述,此处不再赘述。
附图说明
图1A为本申请实施例提供的一种渲染命令的下发示意图。
图1B为本申请实施例提供的一种渲染命令的下发示意图。
图1C为本申请实施例提供的一种图像渲染的示意图。
图2为本申请实施例提供的一种图像处理方法的流程图。
图3为本申请实施例提供的一种渲染命令的下发示意图。
图4为本申请实施例提供的另一种图像处理方法的流程图。
图5为本申请实施例提供的一种基于历史渲染数据的图像处理方法的流程图。
图6为本申请实施例提供的一种电子设备的软件结构框图。
图7为本申请实施例提供的一种图像处理方法的流程示意图。
图8为本申请实施例提供的一种图像处理方法的流程图。
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,“示例性”、“或者”、“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性”、“或者”、“例如”等词旨在以具体方式呈现相关概念。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请中的技术领域的技术人员通常理解的含义相同。本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。应理解,本申请中除非另有说明,“/”表示或的意思。例如,A/B可以表示A或B。本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B三种情况。“至少一个”是指一个或者多个。“多个”是指两个或多于两个。例如,a、b或c中的至少一个,可以表示:a,b,c,a和b,a和c,b和c,a、b和c七种情况。
在用户使用电子设备的过程中,电子设备通过显示屏可以向用户展示多媒体流文件,以便于向用户提供丰富的视觉体验。
以多媒体流为视频流为例,该视频流可以包括多帧图像。电子设备可以在展示该视频流时,分别在显示屏上显示该视频流对应的多帧图像。在电子设备切换显示图像的频率高于人眼能够分辨的频率时,就可以实现在用户的无感知状态下对不同图像进行切换展示,从而获取连续观看的流程效果。
电子设备可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)。应用程序可以向CPU发出针对不同图像的渲染命令,从而在电子设备上播放视频流。CPU可以根据这些渲染命令,控制GPU对各帧图像进行渲染,渲染后的数据可存储至默认帧缓冲(provided framebuffer)中。默认帧缓冲可以是电子设备在内存中为当前需要显示的图像配置的存储空间,可在图像渲染前创建,默认帧缓冲中包含的内容可以全部在屏幕上呈现。也就是说,在电子设备需要显示某一图像时,可以根据默认帧缓冲中存储的该图像对应的数据,控制显示屏显示该图像。
在一些实现方式中,在电子设备显示第N-1帧图像时,可以根据应用程序下发的渲染命令,对后续将要显示的图像(如第N帧)进行渲染,从而获取用于显示第N帧图像的数据。可以理解的是,电子设备在渲染图像的过程中,需要将渲染的结果存储起来以便后续使用。因此,在本示例中,电子设备可以在对第N帧图像进行渲染之前,在内存中配置默认帧缓冲。默认帧缓冲可以对应到内存中的存储空间。在对图像进行渲染的过程中,需要对图像中包含的所有几何图形(如人物、房子、背包、树、草、地图、用户界面(User Interface,UI)控件等)进行渲染,并将渲染的结果存储在默认帧缓冲中。几何图形对应的具体内容可以根据实际情况进行设置,在此不做任何限定。例如,可以将图像中的一个人物确定为一个几何图形,也可以将图像中的一个人物的头部确定为一个几何图形,该人物的身体确定为另一个几何图形。
在本申请的一些实施例中,若一帧图像中包括数量较多的几何图形,或者包含显示效果不同的几何图形,可能导致默认帧缓冲的存储空间不足。同时,由于默认帧缓冲的存储空间不足,电子设备难以灵活处理该帧图像的渲染,可能得不到理想的效果。因此,往往需要创建多个帧缓冲来实现渲染,如应用程序帧缓冲(Application createdframebuffer)。可以通过GPU创建帧缓冲。电子设备创建多个帧缓冲后,电子设备可以将图像中的内容分别存储到多个帧缓冲中,再将多个帧缓冲中存储的内容进行融合,最后将融合后的内容转移到该图像对应的默认帧缓冲中。应用程序帧缓冲与默认帧缓冲作用类似,用于存储图像对应的渲染结果,只是应用程序帧缓冲中的内容不会直接在屏幕上呈现,实现离屏渲染(Off-Screen Rendering),而默认帧缓冲中的内容会直接在屏幕上呈现,实现在屏渲染(On-Screen Rendering)。在屏渲染,又称为当前屏幕渲染,指的是渲染操作是在当前用于显示的屏幕缓冲区(默认帧缓冲)中进行。离屏渲染,指的是渲染操作是在当前用于显示的屏幕缓冲区(默认帧缓冲)以外开辟的缓冲区(应用程序帧缓冲)中进行。
示例性的,图像A包含较多的几何图形,渲染图像A之前,可以创建两个帧缓冲(FB1,FB2)。渲染时,在执行对图像A的几何图形的存储时,FB1可以用于存储图像A中的一部分几何图形,FB2可以存储图像A中的另一部分几何图形。最后将FB1和FB2进行融合,将融合后的内容转移到图像A对应的默认帧缓冲(FB0)中。其中,FB1和FB2上存储的内容不会直接在屏幕上呈现,实现离屏渲染;FB0上的内容会直接在屏幕上呈现,实现在屏渲染。
结合图1A,为FB1对应的渲染命令的一种示例。待渲染的图像为第N帧图像,对应的帧缓冲包括FB1、FB2和FB0,FB0为默认帧缓冲。应用程序下发的渲染命令中,可以包括glBindFrameBuffer(FB1)函数,由此实现当前渲染操作与FB1的绑定。在绑定FB1之后,可以通过glViewport函数确定在帧缓冲中执行渲染操作时的绘制大小(w0,h0)。(w0,h0)的值根据该帧缓冲(FB1)的分辨率确定,(w0,h0)的值可以与该帧缓冲的分辨率相同。可以用glBindTexture函数确定绘制的内容(tex_id2)。可以用glDrawElement函数实现在FB1上的渲染操作。示例性的,中央处理器(Central Processing Unit/Processor,CPU)可以在执行glBindFrameBuffer(FB1)的指令时,确定激活(active)的帧缓冲为FB1。应用程序可以下发需在FB1上执行的glViewport函数、glBindTexture函数和glDrawElement函数等函数,以便于GPU确定可以在FB1上执行上述渲染命令相关的渲染操作,并将结果保存在FB1中。
对于需要使用FB2的渲染操作,类似地,结合图1B,CPU可以在执行glBindFrameBuffer(FB2)的指令时,确定激活的帧缓冲为FB2。应用程序可以下发需在FB2上执行的glViewport函数、glBindTexture函数和glDrawElement函数等函数,以便于GPU确定可以在FB2上执行上述渲染命令相关的渲染操作,并将结果保存在FB2中,由此完成对FB2上相关数据的渲染。
如此往复,即可完成对图像A对应的各个帧缓冲(FB1和FB2)的渲染命令。
电子设备将FB1和FB2中存储的内容(渲染结果)进行融合,将融合后的结果存储到FB0中,由此即可在FB0中获取图像A对应的全量数据。结合图1A以及图1B的示例,在GPU完成FB1和FB2上的渲染处理之后,即可在FB1和FB2中分别存储对应的数据(如各个像素点的颜色数据和/或深度数据等)。这些数据(如FB1和FB2中的数据)可以分别对应图像A的部分几何图形。结合图1C,电子设备可以将FB1和FB2中的数据渲染到FB0上。这样,在FB0上就可以获取图像A的全量数据,基于FB0上的数据可以显示图像A。
可以使用glGenFrameBuffer函数创建一个帧缓冲,例如,使用glGenFrameBuffer函数创建FB1和FB2。帧缓冲是一个缓冲器(buffer),可以用来存储数据。但是真正存储信息的不是帧缓冲本身,而是绑定到帧缓冲上面的纹理附件(texture attachments)或渲染缓冲对象附件(Renderbuffer object attachments)。帧缓冲提供一个附着点,用于绑定纹理附件和渲染缓冲对象附件,其中,纹理附件和渲染缓冲对象附件用于存储属性信息,例如,存储图像中几何图形的位置向量,法线向量,纹理颜色等信息。
根据目标纹理的格式的不同,纹理附件可以分为颜色附件(color attachment)、纹理深度附件(depth attachment)和模板纹理附件(stencil attachment)。一个帧缓冲中至少需要绑定一个颜色附件,颜色附件的数量与帧缓冲对应的存储数量有关,即场景中几何物体需要存储的属性信息越多,该帧缓冲需要绑定的颜色附件也越多。若一帧缓冲对应的颜色附件多,说明该缓冲涉及的属性信息越多,对该帧缓冲进行渲染时,需要的算力和存储带宽也越多。
通常,可以使用glGenTextures函数创建纹理。可以使用glTexImage2D函数为纹理配置内存。可以使用glTexImage2D函数根据纹理对应的分辨率为该纹理配置内存。可以使用RenderBuffer函数创建渲染缓冲对象。可以使用glTexStorage2D函数渲染缓冲对象配置内存。可以使用glTexStorage2D函数可以根据纹理对应的分辨率为该纹理配置内存。可以使用glFramebufferTexture2D函数将纹理绑定在帧缓冲上或者将渲染缓冲对象附件绑定到帧缓冲中。一纹理绑定在帧缓冲后,该纹理可被称为纹理附件;一渲染缓冲对象绑定在帧缓冲后,该渲染缓冲对象可被称为渲染缓冲对象附件。
应用程序在资源分配阶段过程中,会下发创建帧缓冲资源命令。创建帧缓冲资源命令用于创建图像对应的帧缓冲,为后续的图像渲染做准备。应用程序在需要进行图像渲染时,可以下发渲染命令,基于所述渲染命令和创建好的帧缓冲实现图像的渲染。例如,应用程序可以调用电子设备的图形库中的OpenGL接口创建图像对应的帧缓冲。
以下给出一种创建帧缓冲资源的指令流的示例:
unsigned int FB1;//定义一个帧缓冲(FB)的ID,变量名定义为FB1;
glGenFramebuffers(1,&FB1);//创建一个FB,ID值为FB1;
glBindFramebuffer(GL_FRAMEBUFFER,FB1);//绑定帧缓冲FB1;
unsigned int texture;//定义一个纹理,变量名定义为texture;
glGenTextures(1,&tex1);//创建一个纹理,ID值为tex1;
glBindTexture(GL_TEXTURE_2D,tex1);//绑定纹理tex1,其中GL_TEXTURE_2D用于指示纹理类型为2D纹理;
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,1280,626,0,GL_RGB,GL_UNSIGNED_BYTE,NULL);//给纹理tex1分配一个1280*626大小的内存空间,tex1对应的分辨率为1280*626;其中函数中的第2个参数(即0)可以用于指示纹理级别,函数中的第3个因子(即GL_RGB)可以用于指示目标纹理格式,函数中的第7个因子(即GL_RGB)可以用于指示入参的纹理格式,函数中的第8个因子(即GL_UNSIGNED_BYTE)可以用于指示入参纹理数据类型;
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,tex1,0);//将创建出来的纹理tex1绑定在帧缓冲FB1上;其中函数中的第1个因子(即GL_FRAMEBUFFER)可以用于指示目标,即绑定在帧缓冲FB1上;函数中的第2个因子(即GL_COLOR_ATTACHMENT0)可以用于指示附件类型,例如,此处附加的是一个颜色附件,其中“GL_COLOR_ATTACHMENT0”中的“0”表示颜色附件的数量为1,若第2个因子为GL_COLOR_ATTACHMENT1,其中的“1”表示有两个颜色附件;函数中的第3个因子(即GL_TEXTURE_2D)可以用于指示附加的纹理类型;函数中的第4个因子(即tex1)可以用于指示附加的实际纹理;函数中的第5个因子(即0)可以用于指示层级(Mipmap level),一般设置为0。
根据上述的创建帧缓冲的指令流可知,电子设备在创建图像对应的帧缓冲时,会为帧缓冲对应的纹理配置内存。配置的内存的大小由渲染图像对应的分辨率以及存储格式决定。配置内存后完成纹理与帧缓冲的绑定,即将纹理绑定在帧缓冲上。纹理附件可包括多个颜色附件,该帧缓冲绑定的颜色附件越多,帧缓冲对应的存储空间就越大。同时,一个帧缓冲绑定的颜色附件越多,说明该帧缓冲中的属性信息越多,这样就能够实现对图像进行更加精细地渲染。但是相应的,帧缓冲中的属性信息越多,渲染过程中该帧缓冲需要的计算也越多,所以需要的算力也越多。随着电子设备的发展,用户对于电子设备提供的显示画质要求越来越高。各帧图像的渲染都需要进行较高画质的渲染,这也对电子设备的图像处理能力提出了较高的要求。由此也会导致电子设备的功耗和发热的显著增加,从而影响用户体验。
为了解决上述问题,本申请实施例提供一种图像处理方法,可以使得电子设备根据图像对应的帧缓冲中颜色附件的数量,确定目标帧缓冲,调整该图像的渲染过程中目标帧缓冲的分辨率,从而降低图像渲染过程中对内存和算力造成的较大压力,进而避免由此产生的电子设备的发热和功耗的上升。
以下结合附图对本申请实施例提供的方案进行详细说明。
本申请实施例提供的图像处理方法,可以应用于电子设备中,电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、人工智能(artificial intelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等电子设备。本申请实施例对该设备的具体形态不作特殊限制。
为了便于说明,以下示例中,下发渲染命令的应用程序以游戏应用为例进行说明,该游戏应用使用OpenGL图形库进行相关的处理。应当理解的是,在其他的不同渲染引擎/渲染环境下,实施机制类似,仅对应的函数可能存在差异。
在游戏开始运行(加载)时,游戏应用进入资源分配阶段,游戏应用会向CPU下发创建帧缓冲资源命令,CPU控制GPU创建图像对应的帧缓冲,为后续的图像渲染做准备。创建帧缓冲资源命令中有生成帧缓冲的指令和创建帧缓冲对应的纹理的指令,并且有将生成的纹理绑定在帧缓冲上的指令。游戏应用需要渲染某个图像时,可以向CPU发起渲染命令。在该渲染命令中,可以包括渲染该图像所需要调用的帧缓冲,以及在各个帧缓冲中需要执行的渲染操作。
在该实施例中,在游戏应用进入资源分配阶段且创建图像对应的帧缓冲时,CPU拦截游戏应用发出的创建帧缓冲资源命令。CPU根据拦截到的创建帧缓冲资源命令,确定创建的每个帧缓冲中颜色附件的数量,并基于每个帧缓冲中颜色附件的数量在帧缓冲中确定主帧缓冲(分辨率较高,处理时消耗资源较多的帧缓冲)。例如,CPU将颜色附件数量大于预设阈值的帧缓冲确定为主帧缓冲,并将主帧缓冲对应的帧缓冲信息记录在预先构建的存储区域。其中,帧缓冲信息可以包括帧缓冲ID,还可以包括帧缓冲对应的分辨率。
当游戏应用需要渲染某个图像时,CPU拦截游戏应用下发的渲染命令,并确定所述渲染命令对应的帧缓冲。CPU将确定的帧缓冲与所述预先构建的存储区域中存储的帧缓冲ID进行比对,即将渲染命令对应的帧缓冲的帧缓冲ID与所述预先构建的存储区域中存储的帧缓冲ID进行比对。若渲染命令对应的帧缓冲的帧缓冲ID与所述预先构建的存储区域中存储的帧缓冲ID一致,确定该渲染命令对应的帧缓冲比对成功。若渲染命令对应的帧缓冲比对成功,确定该帧缓冲为主帧缓冲。对渲染命令中确定的主帧缓冲进行降分辨率操作,采用较低的分辨率执行主帧缓冲中的渲染操作。
上述实施例提供的方案,能够使得在图像渲染之前,CPU可以基于帧缓冲中的颜色附件,确定图像中会消耗渲染资源较高的主帧缓冲;接着在图像渲染过程中,CPU基于接收到的渲染命令,确定渲染命令对应的帧缓冲中是否存在与先前确定好的主帧缓冲标识(ID)一致的帧缓冲;若存在ID一致的帧缓冲,CPU将该帧缓冲确定为主帧缓冲,并使用临时帧缓冲替换所述主帧缓冲。临时帧缓冲的分辨率小于主帧缓冲的分辨率。临时帧缓冲是用于替换主帧缓冲的帧缓冲,可以是在CPU将该帧缓冲确定为主帧缓冲时,临时创建的帧缓冲。可以理解的是,在其他实施例中,也可以用别的名字替代临时帧缓冲这个名字,如第二帧缓冲等。CPU控制GPU在所述临时帧缓冲上执行所述渲染命令中与所述主帧缓冲对应的渲染操作,可以达到降低在主帧缓冲中的渲染操作消耗的算力资源的效果,从而减小了电子设备在图像渲染过程中的算力消耗。
以下结合示例,对本申请实施例提供的方案进行详细说明。示例性的,参考图2,为本申请实施例提供的一种图像处理方法的流程示意图。所述方法应用于电子设备,所述电子设备可以包括应用程序、CPU、GPU和内部存储器(下面简称内存)。如图2所示,该方法可以包括:
201,确定创建FB1资源命令对应的FB1的颜色附件数量。在应用程序加载过程,应用程序会向CPU下发创建帧缓冲资源命令(如创建FB1资源命令、创建FB2资源命令),创建帧缓冲资源命令用于创建图像对应的帧缓冲,为后续的图像渲染做准备,所述图像可以是待渲染的目标图像。创建帧缓冲资源命令包括glGenFrameBuffer函数、glGenTextures函数、glTexImage2D函数和glFramebufferTexture2D函数等。glGenFrameBuffer函数用于创建一个帧缓冲(FB),并为创建的FB赋予帧缓冲标识,如ID值。glGenTextures函数用于创建纹理,glTexImage2D函数用于为创建好的纹理配置内存。glFramebufferTexture2D函数用于将创建好的纹理绑定到帧缓冲上。通过识别帧缓冲命令中的glTexImage2D函数可以确定纹理对应的分辨率,也可以说是帧缓冲对应的分辨率。通过识别帧缓冲命令中的glFramebufferTexture2D函数可以确定绑定在帧缓冲上的颜色附件以及颜色附件对应的附件数量。
以下给出一种为帧缓冲绑定纹理的示例:
glBindFramebuffer(GL_FRAMEBUFFER,FB1);//绑定帧缓冲FB1;
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,tex0,0);//将创建出来的纹理tex0绑定在帧缓冲FB1上;其中函数中的第1个因子(即GL_FRAMEBUFFER)可以用于指示目标,即绑定在帧缓冲上,函数中的第2个因子(即GL_COLOR_ATTACHMENT0)可以用于指示附件类型,此处附加的是第一个颜色附件;函数中的第3个因子(即GL_TEXTURE_2D)可以用于指示附加的纹理类型,函数中的第4个因子(即tex0)可以用于指示附加的实际纹理,函数中的第5个因子(即0)可以用于指示层级(Mipmaplevel),一般设置为0。
1个glFramebufferTexture2D函数可以对应1个纹理。对一个帧缓冲可以下发多个glFramebufferTexture2D函数,为该帧缓冲绑定多个纹理。
例如,可以对FB1下发三个glFramebufferTexture2D函数,代码如下所示。
glBindFramebuffer(GL_FRAMEBUFFER,FB1);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,tex0,0);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT1,GL_TEXTURE_2D,tex1,0);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT2,GL_TEXTURE_2D,tex2,0)。
不同的颜色附件标识对应着不同的颜色附件数量。下面对颜色附件的附件标识进行说明。颜色附件的附件标识从GL_COLOR_ATTACHMENT0开始。GL_COLOR_ATTACHMENT0表示第一个颜色附件,GL_COLOR_ATTACHMENT1表示第二个颜色附件,GL_COLOR_ATTACHMENT2表示第三个颜色附件。通过识别帧缓冲颜色附件的附件标识,可以确定该帧缓冲绑定的颜色附件的数量。例如,识别F1颜色附件(GL_COLOR_ATTACHMENT2)的附件标识,可以确定F1绑定的颜色附件的数量为3。
202,判断FB1的颜色附件数量是否满足预设数量条件。
每个帧缓冲包括一个或多个颜色附件。颜色附件的数量与帧缓冲对应的存储数量有关,即帧缓冲对应存储的几何图形属性信息越多,该帧缓冲需要绑定的颜色附件也越多。若一帧缓冲对应的颜色附件多,说明该帧缓冲对应的渲染任务较重,对该帧缓冲进行渲染时,需要的算力也越多。因此可以基于颜色附件的数量,在所述创建帧缓冲资源命令对应的帧缓冲中确定主帧缓冲。主帧缓冲可以是渲染过程中,渲染任务较重,渲染分辨率较高、执行渲染操作数量较大的帧缓冲。
预设数量条件可以根据实际情况进行设置。在本申请的一些实施例中,所述预设数量条件可以为:帧缓冲的颜色附件数量大于预设数量阈值。预先设置一个数量阈值,在此不对数量阈值的具体值进行限制,可根据实际情况进行设置,例如可以将数量阈值设置为2。若一帧缓冲的颜色附件数量大于所述预设数量阈值,确定该帧缓冲对应的任务越重,需要储存的几何图形属性信息越多对该帧缓冲渲染时消耗的算力也越多。若一帧缓冲对应的颜色附件数量满足预设数量条件,将该帧缓冲确定为主帧缓冲。应当理解的是,所述预设数量条件也可以为帧缓冲的颜色附件数量大于或等于预设数量阈值,还可以为帧缓冲的颜色附件数量不小于预设数量阈值,在此不对预设数量条件作任何限制。
203,FB1的颜色附件数量满足预设数量条件,CPU将FB1的帧缓冲标识发送至内存。
示例性的,创建FB1资源命令对应的FB1的颜色附件数量为3,预设数量条件为帧缓冲的颜色附件数量大于预设数量阈值,预设数量阈值为2。FB1的颜色附件数量大于所述预设数量阈值,满足预设数量条件。确定FB1为主帧缓冲,CPU将FB1的帧缓冲标识发送至内存。帧缓冲信息可以包括帧缓冲ID,还可以包括帧缓冲对应的分辨率。
204,CPU向GPU发送创建FB1资源命令。
GPU基于接收到的创建FB1资源命令,创建FB1资源。
应当理解的是,应用程序向CPU发送创建FB1资源命令之前,也可能向CPU发送过其他的创建帧缓冲资源命令,如创建FB0资源命令。但是在创建FB1资源命令之前,CPU接收到的创建帧缓冲资源命令对应的帧缓冲的颜色附件数量都不满足预设数量条件。
205,确定创建FB2资源命令对应的FB2的分辨率与FB1的分辨率一致。
应用程序向CPU发送创建FB2资源命令。CPU接收到创建FB2资源命令后,确定创建FB2资源命令对应的FB2的分辨率。
CPU将FB2的分辨率与FB1的分辨率进行比较,判断FB2的分辨率与FB1的分辨率是否一致。
FB2的分辨率与FB1的分辨率一致,确定FB2为主帧缓冲。CPU将FB2的帧缓冲标识发送至内存进行存储。例如,FB1的分辨率为1280x626,FB2的分辨率为1280x626,FB2的分辨率与FB1的分辨率一致,此时无需去判断FB2的颜色附件数量是否大满足所述预设数量条件,直接将FB2确定为主帧缓冲,并将FB2的帧缓冲标识发送至内存进行存储。
在一些实施方式中,可以通过对帧缓冲执行glGetIntegerv函数,确定该帧缓冲的分辨率,如通过对FB1执行glGetIntegerv函数,确定该FB1的分辨率。在一些实施方式中,CPU可以将FB1的分辨率存储至预设存储区域。通过将FB1的分辨率存储起来,方便后续在接收到其他的创建帧缓冲资源命令时,可以更快地基于FB1的分辨率确定其他的创建帧缓冲资源命令对应的帧缓冲是否为主帧缓冲。
206,CPU将FB2的帧缓冲标识发送至内存。
FB2的分辨率与FB1的分辨率一致,确定FB2为主帧缓冲。CPU将FB2的帧缓冲标识发送至内存进行存储。例如,FB1的分辨率为1280x626,FB2的分辨率为1280x626,FB2的分辨率与FB1的分辨率一致,此时无需去判断FB2的颜色附件数量是否大满足所述预设数量条件,直接将FB2确定为主帧缓冲,并将FB2的帧缓冲标识发送至内存进行存储。
207,CPU向GPU发送创建FB2资源命令。
GPU基于接收到的创建FB2资源命令,创建FB2资源。
208,确定创建FB3资源命令对应的FB3的分辨率与FB1的分辨率不一致。
应用程序向CPU发送创建FB3资源命令。CPU接收到创建FB3资源命令后,确定创建FB3资源命令对应的FB3的分辨率。CPU将FB3的分辨率与FB1的分辨率进行比较,判断FB3的分辨率与FB1的分辨率是否一致。
FB3的分辨率与FB1的分辨率不一致,确定FB3不为主帧缓冲,所以不需要把FB3的帧缓冲标识存储至内存。例如,FB1的分辨率为1280x626,FB3的分辨率为640x313,FB3的分辨率与FB1的分辨率不一致,确定FB3不为主帧缓冲,不需要把FB3的帧缓冲标识存储至内存。
209,CPU向GPU发送创建FB3资源命令。
210,从内存中获取存储的帧缓冲标识。
当应用程序需要渲染某个图像时,会向CPU下发渲染命令,如关于FB1的渲染命令。渲染命令用于渲染该图像对应的帧缓冲。例如,关于FB1的渲染命令用于渲染FB1。渲染命令中具体可以包括glBindFrameBuffer函数、glViewport函数、glBindTexture函数以及glDrawElement函数,关于渲染命令中相关函数的介绍可以参见上文中的描述,在此不做赘述。可以根据glBindFrameBuffer函数确定渲染命令对应的帧缓冲,即将glBindFrameBuffer函数绑定的帧缓冲确定为待渲染的帧缓冲。
CPU接收到渲染命令时,CPU可以获取内存中存储的帧缓冲标识。应当理解的是,CPU第一次接收到渲染命令时,CPU获取内存中存储的帧缓冲标识后,CPU可以将存储的帧缓冲标识存储至CPU中某一预设的存储空间。后续再次接收到渲染命令时,CPU无需从内存中获取存储的帧缓冲标识,可以直接基于CPU中某一预设的存储空间中读取存储的帧缓冲标识。在另一些实施例中,CPU也可以在每一次接收到渲染命令时,从内存中获取存储的帧缓冲标识。本申请中对从内存中获取存储的帧缓冲标识这一步骤的实施不做任何限制。
211、确定存储的帧缓冲标识中有一帧缓冲标识与FB1的帧缓冲标识一致时,用临时帧缓冲替换FB1,得到修改后的渲染命令。
CPU接收到关于FB1的渲染命令,CPU会判断存储的帧缓冲标识中是否有一帧缓冲标识与FB3的帧缓冲标识一致。
CPU确定存储的帧缓冲标识中有一帧缓冲标识与FB1的帧缓冲标识一致后,确定FB1为主帧缓冲。CPU用临时帧缓冲替换FB1,得到修改后的渲染命令。其中,所述临时帧缓冲的分辨率小于FB1的分辨率。在另一些实施例中,若CPU确定存储的帧缓冲标识中没有帧缓冲标识与FB1的帧缓冲标识一致,确定FB1不为主帧缓冲,则直接将关于FB1的渲染命令发送至GPU。
主帧缓冲的渲染分辨率较高、对应的执行渲染操作处理的像素较多。对主帧缓冲下的渲染处理进行调整,可以降低渲染处理对电子设备造成的压力,能获取相较于调整图像中其他帧缓冲中的渲染处理机制更加显著的效果。
在本申请实施例中,电子设备的处理器可以为主帧缓冲配置临时帧缓冲,该临时帧缓冲的分辨率小于主帧缓冲的分辨率。使得电子设备采用较小的分辨率,对主帧缓冲中的内容(几何图形)进行渲染操作,渲染操作中需要处理的像素较少,可以减少电子设备在图像渲染过程中的算力消耗,从而降低高分辨率的渲染对电子设备造成的影响,有效降低电子设备的发热。
在本申请的一些实施例中,可以基于主帧缓冲的分辨率,确定为主帧缓冲配置的临时帧缓冲的分辨率,如基于FB1的分辨率,确定为FB1配置的临时帧缓冲的分辨率。获取主帧缓冲的分辨率方法可以参见上述描述,在此不再赘述。
在本申请的一些实施例中,在电子设备中可以配置有缩放参数。该缩放参数可以用于确定临时帧缓冲的分辨率。例如,处理器可以根据如下公式(1)确定临时帧缓冲的分辨率。
公式(1):临时帧缓冲的分辨率=主帧缓冲的分辨率×缩放参数。
其中,缩放参数可以是小于1的正数。该缩放参数可以是用户配置的,也可以是电子设备中预置的,也可以是在需要时电子设备从云端获取的。
在确定临时帧缓冲的分辨率之后,CPU就可以在内存中为该临时帧缓冲配置对应大小的存储空间。在一些实现方式中,处理器可以通过创建临时帧缓冲对象,并将该临时帧缓冲对象绑定到内存中配置的存储空间上,实现临时帧缓冲的配置。其中,临时帧缓冲对象可以是该临时帧缓冲的名称。
参考图3示例,在执行FB1的渲染的过程中,临时帧缓冲为FB4,FB1分辨率为(w0,h0),FB1想要绘制的纹理为tex_id2,FB4分辨率为(w00,h00),在FB1中包括的drawcall数量为2(如glDrawElement1,以及glDrawElement2)为例。其中,FB4的分辨率小于FB1的分辨率。
CPU接收到来自应用程序的关于FB1的渲染命令包括如下指令:
bindFrameBuffer(FB1);
glViewport(w0,h0);
glBindTexture(tex_id2);
glDrawElement1;
glDrawElement2。
在本示例中,CPU可以在关于FB1的渲染命令中,将主帧缓冲的标识(如FB1)替换为临时帧缓冲的标识(如FB4),从而实现以临时帧缓冲替换主帧缓冲的操作,即用FB4替换FB1的操作。示例性的,CPU可以将bindFrameBuffer(FB1)替换为bindFrameBuffer(FB4)。那么,替换后的渲染命令可以为:
bindFrameBuffer(FB4);
glViewport(w00,h00);
glBindTexture(tex_id2);
glDrawElement1;
glDrawElement2。
也就是说,CPU可以将原先绑定主帧缓冲(如FB1)的渲染操作替换为绑定临时帧缓冲的渲染操作,得到修改后的渲染命令。
212,CPU向GPU发送修改后的渲染命令。
CPU将修改后的渲染命令下发给GPU后,GPU根据修改后的渲染命令可以在临时帧缓冲上实现原本在FB1上执行的渲染操作。例如,用FB4替换FB1后,GPU就可以在FB4上执行glDrawElement1以及glDrawElement2的渲染操作,并将结果存储在FB4上。
由于该临时帧缓冲(如FB4)的分辨率小于FB1的分辨率,因此临时帧缓冲在内存中占用的存储空间小于FB1在内存中占用的存储空间。对应的,由于在临时帧缓冲上执行的渲染操作的分辨率更低,也就是说在临时帧缓冲上执行相同渲染处理(如glDrawElement1以及glDrawElement2)时,需要处理的像素数量小于FB1,因此在临时帧缓冲上执行渲染操作时相较于FB1上执行渲染操作所需功耗更低,发热更小,从而减少了图像处理过程中消耗的功耗。
在本申请一些实施例中,电子设备在临时帧缓冲上执行FB1对应的渲染操作时,可以采用多重采样的技术。多重采样可以提升低分辨率渲染的显示效果,从而进一步提升向用户展示的图像的质量。
示例性的,CPU可以在向GPU下发在临时帧缓冲中执行渲染操作的渲染命令时,指示GPU使用更多的颜色,深度和/或模板信息对图元(如点,直线,多边形等几何图形)进行处理,从而达到虚化图像边缘的效果。这样,对于临时帧缓冲中进行渲染操作后获取的结果,在进行显示时,其图像边缘就不会由于分辨率较低产生锯齿的观感。由此即可实现提升图像质量的目的。
213,确定存储的帧缓冲标识中没有帧缓冲标识与FB3的帧缓冲标识一致。
应用程序会向CPU下发关于FB3的渲染命令,关于FB3的渲染命令用于渲染FB3。应当理解的是,在应用程序会向CPU下发关于FB3的渲染命令之前,应用程序可以向CPU下发关于FB2的渲染命令,关于FB2的渲染命令用于渲染FB2。因为FB2的分辨率与FB21的分辨率相同,关于FB2的渲染命令的执行过程与关于FB1的渲染命令一致,所以在此不做赘述。
CPU接收到关于FB3的渲染命令,CPU会判断存储的帧缓冲标识中是否有一帧缓冲标识与FB3的帧缓冲标识一致。CPU确定存储的帧缓冲标识中没有帧缓冲标识与关于FB3的渲染命令对应的FB3的帧缓冲标识一致后,确定FB3不为主帧缓冲。FB3不为主帧缓冲,所以CPU不需要使用临时帧缓冲替换FB3,也就不用对关于FB3的渲染命令进行处理。
214,CPU向GPU发送关于FB3的渲染命令。
GPU接收到关于FB3的渲染命令后,GPU可以在FB3上执行所述关于FB3的渲染命令对应的渲染操作,完成对FB3的渲染。
需要说明的是,在一些实施例中,电子设备可以通过CPU对所有主帧缓冲的渲染操作执行上述方案,如采用更小分辨率的临时帧缓冲执行主帧缓冲的渲染操作。在另一些实施例中,电子设备可以在需要进行功耗控制时,执行如图2所示的方案。比如,作为一种可能的实现,电子设备可以在负载大于预设阈值的情况下,确定需要进行功耗控制。由此即可触发如图2所示方案降低图像处理过程中的功耗。
可以理解的是,上述实施例中所示的执行顺序仅做示意,不构成任何限定,实施例中的一些步骤也可以被省略。例如,图2中的204可以在201之前执行,可以在也201与202之间执行,也可以在202与203之间执行。
上述实施例提供的方案中,CPU对接收的创建帧缓冲资源命令进行识别,确定创建帧缓冲资源命令对应的帧缓冲的颜色附件数量。判断所述创建帧缓冲资源命令对应的帧缓冲的颜色附件数量是否预设数量条件。根据颜色附件数量确定主帧缓冲,例如将颜色附件数量满足预设数量条件的帧缓冲确定为主帧缓冲。当识别到一个颜色附件数量满足预设数量条件的帧缓冲时,确定所述帧缓冲对应的第一分辨率,并将所述帧缓冲的帧缓冲标识存储至预设存储空间。后续,直接根据该帧缓冲对应的第一分辨率来对新接收到的创建帧缓冲资源命令进行识别,判断新接收到的创建帧缓冲资源命令对应的帧缓冲是否为主帧缓冲,无需根据颜色附件数量确定主帧缓冲。若一创建帧缓冲资源命令对应的帧缓冲的第二分辨率与第一分辨率一致,确定该帧缓冲为主帧缓冲,并将所述帧缓冲的帧缓冲标识存储至预设存储空间。若一创建帧缓冲资源命令对应的帧缓冲的第二分辨率与第一分辨率不一致,确定该帧缓冲不为主帧缓冲。CPU接收到渲染命令时,确定渲染命令对应的帧缓冲,并确定预设存储空间中存储的帧缓冲标识中是否有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致。若存储的帧缓冲标识中有一帧缓冲标识与所述帧缓冲的帧缓冲标识一致,CPU用临时帧缓冲替换所述帧缓冲,得到修改后的渲染命令,并将修改后的渲染命令发送至GPU。若存储的帧缓冲标识中没有帧缓冲标识与所述帧缓冲的帧缓冲标识一致,CPU无需对渲染命令进行处理,直接将渲染命令发送至GPU。
上述实施例提供的方案,能够使得电子设备可以基于帧缓冲中颜色附件的数量在图像渲染之前确定图像中会消耗渲染资源较高的帧缓冲(如称为主帧缓冲)。若确定一个帧缓冲中颜色附件数量满足预设数量条件时,基于该帧缓冲的分辨率,在其他的帧缓冲中确定主帧缓冲。后续可以直接基于分辨率确定主帧缓冲,无需根据颜色附件数量确定主帧缓冲,可以减少识别过程中的算力,提高确定主帧缓冲的效率。将确定的主帧缓冲的帧缓冲标识存储至预设存储空间。在接收到渲染命令时,确定渲染命令对应的帧缓冲。确定预设存储空间中是否有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致。若预设存储空间中有一帧缓冲标识与所述帧缓冲的帧缓冲标识一致,使用临时帧缓冲替换所述主帧缓冲,临时帧缓冲的分辨率小于主帧缓冲的分辨率,在所述临时帧缓冲上执行所述渲染命令中所述主帧缓冲对应的渲染操作。在临时帧缓冲上执行与主帧缓冲相同渲染处理时,需要处理的像素数量小于在主帧缓冲上进行渲染处理时需要处理的像素数量,所以减少了在主帧缓冲渲染操作中算力资源的消耗,从而减小了电子设备在渲染图像过程中的算力消耗,减少了电子设备的发热。
参考图4,为本申请实施例提供的另一种图像处理方法的流程图。所述方法应用于电子设备,所述电子设备可以包括应用程序、CPU、GPU和内存。如图4所示,该方法可以包括:
401,确定创建FB1资源命令对应的FB1的颜色附件数量。
在应用程序加载过程,应用程序会向CPU下发创建帧缓冲命令创建帧缓冲资源命令(如创建FB1资源命令、创建FB2资源命令)。
402,确定FB1的颜色附件数量满足预设数量条件后,发送FB1的帧缓冲标识至内存。
CPU判断FB1的颜色附件数量是否满足预设数量条件。确定FB1的颜色附件数量满足预设数量条件后,将FB1确定为主帧缓冲,CPU将FB1的帧缓冲标识发送至内存。
示例性的,创建FB1资源命令对应的FB1的颜色附件数量为3,预设数量条件为帧缓冲的颜色附件数量大于预设数量阈值,预设数量阈值为2。FB1的颜色附件数量大于所述预设数量阈值,满足预设数量条件。确定FB1为主帧缓冲,CPU将FB1的帧缓冲标识发送至内存。
403,CPU向GPU发送创建FB1资源命令。
404,确定创建FB2资源命令对应的FB2的颜色附件数量满足预设数量条件。
应用程序向CPU发送创建FB2资源命令。CPU接收到创建FB2资源命令后,确定创建FB2资源命令对应的FB2的颜色附件数量。CPU判断FB2的颜色附件数量是否满足预设数量条件。
405,CPU发送FB2的帧缓冲标识至内存。
确定FB2的颜色附件数量满足预设数量条件后,将FB2确定为主帧缓冲,CPU将FB2的帧缓冲标识发送至内存。
示例性的,创建FB2资源命令对应的FB1的颜色附件数量为4,预设数量条件为帧缓冲的颜色附件数量大于2。FB2的颜色附件数量大于2,满足预设数量条件。确定FB2为主帧缓冲,CPU将FB2的帧缓冲标识发送至内存。
406,CPU向GPU发送创建FB2资源命令。
407,确定创建FB3资源命令对应的FB3的颜色附件数量不满足预设数量条件。
应用程序向CPU发送创建FB3资源命令。CPU接收到创建FB3资源命令后,确定创建FB3资源命令对应的FB3的颜色附件数量。
CPU判断FB3的颜色附件数量是否满足预设数量条件。确定FB3的颜色附件数量不满足预设数量条件后,确定FB3不是主帧缓冲,不需要存储FB3的帧缓冲标识。示例性的,创建FB3资源命令对应的FB1的颜色附件数量为2,预设数量条件为帧缓冲的颜色附件数量大于2。FB3的颜色附件数量等于2,不满足预设数量条件。确定FB3不是主帧缓冲,不需要存储FB3的帧缓冲标识。
408,CPU向GPU发送创建FB3资源命令。
409,从内存中获取存储的帧缓冲标识。
当应用程序需要渲染某个图像时,会向CPU下发渲染命令,如关于FB1的渲染命令,关于FB1的渲染命令用于渲染FB1。CPU接收到渲染命令时,CPU会获取内存中存储的帧缓冲标识。
410、确定存储的帧缓冲标识中有一帧缓冲标识与FB1的帧缓冲标识一致时,用临时帧缓冲替换FB1,得到修改后的渲染命令。
CPU接收到关于FB1的渲染命令,CPU会判断存储的帧缓冲标识中是否有一帧缓冲标识与FB1的帧缓冲标识一致。
CPU确定存储的帧缓冲标识中有一帧缓冲标识与FB1的帧缓冲标识一致时,确定FB1为主场景。CPU用临时帧缓冲替换FB1,得到修改后的渲染命令。
411,CPU向GPU发送修改后的渲染命令。
412,确定存储的帧缓冲标识中没有帧缓冲标识与FB3的帧缓冲标识一致。
应用程序会向CPU下发关于FB3的渲染命令,关于FB3的渲染命令用于渲染FB3。应当理解的是,在应用程序会向CPU下发关于FB3的渲染命令之前,应用程序可以向CPU下发关于FB2的渲染命令,关于FB2的渲染命令用于渲染FB2。因为关于FB2的渲染命令的执行过程与关于FB1的渲染命令一致,所以在此不做赘述。
CPU接收到关于FB3的渲染命令,CPU会判断存储的帧缓冲标识中是否有一帧缓冲标识与FB3的帧缓冲标识一致。
CPU确定存储的帧缓冲标识内存中没有帧缓冲标识与关于FB3的渲染命令对应的FB3的帧缓冲标识一致后,确定FB3不为主帧缓冲。FB3不为主帧缓冲,所以CPU不需要使用临时帧缓冲替换FB3,也就不用对关于FB3的渲染命令进行处理。
413,CPU向GPU发送关于FB3的渲染命令。
上述401-413的一些具体实施方式可以参见上文中对图2中201-214的相关描述,在此不做赘述。
可以理解的是,上述实施例中所示的执行顺序仅做示意,不构成任何限定,实施例中的一些步骤也可以被省略。例如,图4中的403可以在401之前后执行,也可以在401与402之间执行。
上述实施例提供的方案中,CPU对接收的创建帧缓冲资源命令进行识别,确定创建帧缓冲资源命令对应的帧缓冲的颜色附件数量。判断所述创建帧缓冲资源命令对应的帧缓冲的颜色附件数量是否预设数量条件。将颜色附件数量满足预设数量条件的帧缓冲确定为主帧缓冲,并将所述帧缓冲对应的帧缓冲标识存储至预设存储空间。CPU接收到渲染命令时,确定渲染命令对应的帧缓冲。确定预设存储空间中是否有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致。若预设存储空间中有一帧缓冲标识与所述帧缓冲的帧缓冲标识一致,用临时帧缓冲替换所述帧缓冲,得到修改后的渲染命令,并将修改后的渲染命令发送至GPU。
上述实施例提供的方案,能够使得电子设备可以基于创建帧缓冲资源命令对应的帧缓冲中颜色附件的数量在图像渲染之前确定图像中会消耗渲染资源较高的帧缓冲(如称为主帧缓冲),并在预设存储空间中存储主帧缓冲对应的帧缓冲标识。在接收到渲染命令时,确定渲染命令对应的帧缓冲。确定预设存储空间中是否有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致。若预设存储空间中有一帧缓冲标识与所述帧缓冲的帧缓冲标识一致,使用第二帧缓冲替换所述主帧缓冲,第二帧缓冲的分辨率小于主帧缓冲的分辨率,在所述第二帧缓冲上执行所述渲染命令中主帧缓冲对应的渲染操作。在第二帧缓冲上执行与主帧缓冲相同渲染处理时,需要处理的像素数量小于在主帧缓冲上进行渲染处理时需要处理的像素数量,所以减少了在主帧缓冲渲染操作中算力资源的消耗,从而减小了电子设备在渲染图像过程中的算力消耗,减少了电子设备的发热。
图5为本申请实施例提供的一种基于历史渲染数据的图像处理方法的流程图。所述方法应用于电子设备,所述电子设备可以包括应用程序、CPU、GPU和内存。如图5所示,该方法可以包括:
501、基于所述历史渲染数据中历史帧缓冲对应的颜色附件数量,确定历史分辨率。
处理器向应用程序获取历史渲染数据。例如,处理器可以利用现有公开的图形分析工具(MGD,AGA,RenderDoc等)在应用程序中获取该应用程序的历史渲染数据。
主帧缓冲可以是渲染过程中,渲染任务较重,渲染分辨率较高、执行渲染操作数量较大的帧缓冲。可以根据历史渲染数据中的历史帧缓冲的颜色附件数量,在历史帧缓冲中确定历史主帧缓冲对应的历史分辨率。所述历史分辨率用于在创建帧缓冲资源命令中识别主帧缓冲。例如,若创建帧缓冲资源命令中一帧缓冲对应的分辨率与历史分辨率相同,将该帧缓冲确定为主帧缓冲。
可以将颜色附件数量满足预设数量条件的历史帧缓冲确定为历史主帧缓冲。
分析历史渲染数据中的历史帧缓冲(FB),若一历史FB的颜色附件数量满足预设数量条件,则认为该历史FB为历史主帧缓冲,将该历史FB对应的分辨率确定为历史分辨率。预设数量条件可以根据实际情况进行设置,在此不做任何限定。
例如,历史渲染数据中有一历史帧缓冲为FB1。FB1的颜色附件数量为3,预设数量条件为帧缓冲的颜色附件数量大于预设数量阈值,预设数量阈值为2。FB1的颜色附件数量大于2。FB1的颜色附件数量满足预设数量条件,则将FB1确定为历史主帧缓冲,将FB1的分辨率(如1280x606)确定为历史分辨率。
在一些实施方式中,可以通过识别帧缓冲对应的glViewPort(x,y)函数确定帧缓冲对应的分辨率,如根据FB1对应的glViewPort(x,y)函数确定FB1对应的分辨率。glViewPort(x,y)函数用于指定在帧缓冲中执行渲染操作时的绘制图像的大小。(x,y)的值根据帧缓冲的分辨率确定,表示在该x×y的像素区域中执行渲染操作。可以根据glViewPort(x,y)函数中x、y的值确定帧缓冲对应的分辨率。在另一些实施方式中,可以通过对帧缓冲执行glGetIntegerv函数,确定该帧缓冲的分辨率,如通过对FB1执行glGetIntegerv函数,确定该FB1的分辨率。
502、确定所述创建帧缓冲命令对应的帧缓冲的分辨率。
确定帧缓冲的分辨率的一些具体实施方法可以参见上文中的描述,在此不做任何赘述。
503,判断是否有一帧缓冲的分辨率是否与历史分辨率一致。
若所述创建帧缓冲资源命令对应的帧缓冲中一帧缓冲的分辨率与所述历史分辨率相同,确定所述帧缓冲为主帧缓冲。若所述创建帧缓冲资源命令对应的帧缓冲中没有帧缓冲的分辨率与所述历史分辨率相同,确定所述创建帧缓冲资源命令对应的帧缓冲没有主帧缓冲。
504,将分辨率与历史分辨率一致的帧缓冲的帧缓冲标识发送至内存。
505,向GPU发送创建帧缓冲资源命令。
CPU向GPU发送创建帧缓冲资源命令。
506,从内存中获取存储的帧缓冲标识。
处理器从内存中获取存储的帧缓冲标识。
507,确定渲染命令对应的帧缓冲。
当应用程序需要渲染某个图像时,会向CPU下发渲染命令,如关于FB1的渲染命令。每个渲染命令可以对应一个帧缓冲。
508,确定存储的帧缓冲标识中有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致时,用临时帧缓冲替换渲染命令对应的帧缓冲,得到修改后的渲染命令。
509,向GPU发送修改后的渲染命令。
上述501-509的一些具体实施方式可以参见上文中对图2中201-214的相关描述,在此不做赘述。
可以理解的是,上述实施例中所示的执行顺序仅做示意,不构成任何限定,实施例中的一些步骤也可以被省略。例如,图2中的505可以在501与502之间执行,可以在也502与503之间执行。
上述实施例提供的方案,能够使得电子设备可以基于历史渲染数据中历史帧缓冲对应的颜色附件数量确定历史分辨率,历史分辨率用于在对帧缓冲进行渲染之前确定会消耗渲染资源较高的帧缓冲(如称为主帧缓冲)。基于历史分辨率在创建帧缓冲资源命令对应的帧缓冲中确定主帧缓冲,并在预设存储空间中存储主帧缓冲对应的帧缓冲标识。接着在图像渲染过程中,接收到渲染命令时,确定渲染命令对应的帧缓冲。确定预设存储空间中是否有一帧缓冲标识与渲染命令对应的帧缓冲的帧缓冲标识一致。若预设存储空间中有一帧缓冲标识与所述帧缓冲的帧缓冲标识一致,用临时帧缓冲替换所述帧缓冲,在临时帧缓冲上执行与主帧缓冲相同渲染处理时。临时帧缓冲的分辨率小于主帧缓冲的分辨率。在临时帧缓冲上执行与主帧缓冲相同渲染处理时,需要处理的像素数量小于在主帧缓冲上进行渲染处理时需要处理的像素数量,所以减少了在主帧缓冲渲染操作中算力资源的消耗,从而减小了电子设备在渲染图像过程中的算力消耗,减少了电子设备的发热。
图6为本申请实施例提供的一种电子设备的软件结构框图。如图6所示,该电子设备可以包括应用层601,框架层602,系统库603,以及硬件层604等。
其中,应用层601也可以称为应用程序层,或者应用(application,APP)层。在一些实现中,应用程序层可以包括一系列应用程序包。应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。应用程序包还可以包括需要通过渲染图像向用户展示图片或者视频的应用程序。比如,该应用层601中包括的应用程序可以为游戏类应用程序,例如
Figure BDA0003448955130000171
等。
框架层602也可以称为应用程序框架层。该框架层602可以为应用层601的应用程序提供应用编程接口(application programming interface,API)和编程框架。框架层602包括一些预先定义的函数。
示例性的,框架层602可以包括窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,活动管理器,输入管理器等。窗口管理器提供窗口管理服务(Window ManagerService,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
在本申请实施例中,在框架层602中可以设置一个或多个功能模块,用于实现本申请实施例提供的渲染方案。示例性的,框架层602中可以设置有拦截模块,识别模块,决策模块以及替换模块等。在后续示例中,将会对上述各个模块的功能进行详细说明。
系统库603可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework),标准C库(Standard C library,libc),嵌入式系统的开放图形库(OpenGL for Embedded Systems,OpenGL ES)、Vulkan、SQLite、Webkit等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:动态图像专家组4(Moving PicturesExperts Group,MPEG4),H.264,动态影像专家压缩标准音频层面3(Moving PictureExperts Group Audio Layer3,MP3),高级音频编码(Advanced Audio Coding,AAC),自适应多码解码(Adaptive Multi-Rate,AMR),联合图像专家组(Joint Photographic ExpertsGroup,JPEG,或称为JPG),便携式网络图形(Portable Network Graphics,PNG)等。OpenGLES和/或Vulkan提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备的应用程序提供轻量级关系型数据库。在一些实现中,系统库603中的OpenGL提供渲染功能,可根据应用程序下发的渲染命令对待显示的图像进行渲染。
在如图5的示例中,电子设备中还可以包括硬件层604。该硬件层604中可以包括处理器,如中央处理器(Central Processing Unit/Processor,CPU),图形处理器(graphicsprocessing unit,GPU)等。在一些实现中,CPU可以用于控制框架层602中的各个模块实现其各自的功能,GPU可以用于根据框架层602中各个模块处理后的指令所调用的图形库(如OpenGL ES)中的API执行相应的渲染处理。
图7为本申请实施例提供的一种图像处理的流程示意图。如图7所示,应用层中的应用程序在加载过程,应用程序会下发创建帧缓冲资源命令,创建帧缓冲资源命令用于创建图像对应的帧缓冲,为后续的图像渲染做准备。框架层中的拦截模块会拦截创建帧缓冲资源命令,并将创建帧缓冲资源命令发送至框架层中的识别模块。识别模块会根据接收到的创建帧缓冲资源命令,在创建帧缓冲资源命令对应的帧缓冲中确定主帧缓冲,并将确定好的主帧缓冲对应的帧缓冲标识发送至硬件层的内存中。应用层中的应用程序在需要进行图像渲染时,可以下发渲染命令。拦截模块会拦截渲染命令,并将渲染命令发送至框架层中的决策模块。决策模块通过调用内存中主帧缓冲对应的帧缓冲标识,判断渲染命令对应的帧缓冲中是否具有主帧缓冲。若决策模块在渲染命令对应的帧缓冲中确定了主帧缓冲,决策模块将确定的主帧缓冲发送至框架层中的替换模块。替换模块修改渲染命令,用临时帧缓冲替换主帧缓冲,并将修改后的渲染命令发送至系统库的图形库中。最后,基于图像库和硬件层中的GPU实现图像渲染。硬件层中的CPU可以用于控制框架层中的各个模块(拦截模块、识别模块、决策模块、替换模块)实现其各自的功能。
需要说明的是,上述实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图8为本申请实施例提供的一种图像处理方法的流程图。该图像处理方法应用于电子设备,所述电子设备包括应用程序、拦截模块、识别模块、决策模块、替换模块、CPU、GPU和内存,其中拦截模块、识别模块、决策模块、替换模块为受CPU控制的模块,可以为CPU内的模块。如图8所示,所述方法包括:
701,拦截创建帧缓冲命令。
拦截模块拦截应用程序向CPU发出的创建帧缓冲资源命令。
702,发送创建帧缓冲命令。
拦截模块将拦截到的创建帧缓冲资源命令发送至识别模块。
703,在所述创建帧缓冲命令对应的帧缓冲中确定主帧缓冲。
识别模块在所述创建帧缓冲资源命令对应的帧缓冲中确定主帧缓冲。
704,发送主帧缓冲的帧缓冲标识。
识别模块将确定好的主帧缓冲对应的帧缓冲标识发送至内存中。
705,向GPU发送创建帧缓冲资源命令。
拦截模块向GPU发送创建帧缓冲资源命令。可以理解的是,CPU也可以控制其他模块向GPU发送创建帧缓冲资源命令,如控制识别模块向GPU发送创建帧缓冲资源命令。
706,拦截渲染命令。
拦截模块拦截应用程序下发的渲染命令。
707,发送渲染命令。
拦截模块将拦截到的渲染命令发送至决策模块。
708,从内存中获取存储的帧缓冲标识。
决策模块从内存中获取存储的帧缓冲标识。
709,确定存储的帧缓冲标识中有一帧缓冲标识与所述渲染命令对应的帧缓冲的帧缓冲标识一致。
710,发送所述渲染命令。
决策模块确定存储的帧缓冲标识中一帧缓冲标识与所述帧缓冲的帧缓冲标识一致后,决策模块确定该渲染命令对应的帧缓冲为主帧缓冲,并将该渲染命令发送至替换模块。
若确定存储的帧缓冲标识中没有帧缓冲标识与所述帧缓冲的帧缓冲标识一致后,决策模块确定该渲染命令对应的帧缓冲为主帧缓冲,将该渲染命令发送至替换模块。
711,用临时帧缓冲替换所述渲染命令对应的帧缓冲。
替换模块用临时帧缓冲替换所述渲染命令对应的帧缓冲,得到修改后的渲染命令。其中,临时帧缓冲的分辨率小于主帧缓冲的分辨率。替换模块将修改后的渲染命令发送至GPU,以使GPU基于修改后的渲染命令实现渲染。
上述701-711的具体实现方法可以参见对图2中201-214的相关描述和对图4中401-413的相关描述,在此不做赘述。可以理解的是,上述实施例中所示的执行顺序仅做示意,不构成任何限定,实施例中的一些步骤也可以被省略。
图9为本申请实施例提供的一种电子设备100的结构示意图。参考图9,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserial bus,USB)接口130,充电管理模块120,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。在本申请实施例中,GPU可以实现对图像的渲染,即实现对帧缓冲的渲染。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I1C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I1C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I1C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备100,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。
在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。在本申请实施例中,内部存储器121也可以称为内存。在一些实施例中,处理器(如CPU)可以在内存中为不同的图像的渲染处理创建对应的帧缓冲,可以将创建好的帧缓冲存储至内存中。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备12可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备12接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备12可以设置至少一个麦克风170C。在另一些实施例中,电子设备12可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备100平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of theUSA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备100姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多帧卡。所述多帧卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备100上运行时,使得电子设备100执行上述相关方法步骤实现上述实施例中的图像处理方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的图像处理方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的图像处理方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。

Claims (24)

1.一种图像处理方法,应用于电子设备,所述电子设备上运行有应用程序,其特征在于,所述方法包括:
接收所述应用程序下发的创建帧缓冲资源命令,所述创建帧缓冲资源命令对应的帧缓冲包含颜色附件;
将所述颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识存储至预设存储空间;
接收所述应用程序下发的渲染命令,所述渲染命令对应于第一帧缓冲;
若所述预设存储空间中有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致,在第二帧缓冲上执行所述渲染命令对应的渲染操作,所述第二帧缓冲的分辨率小于所述第一帧缓冲的分辨率。
2.根据权利要求1所述的方法,其特征在于,所述接收所述应用程序下发的创建帧缓冲资源命令包括:
接收所述应用程序下发的第一创建帧缓冲资源命令,所述第一创建帧缓冲资源命令对应于第三帧缓冲,所述第三帧缓冲的颜色附件的数量满足所述预设数量条件;
所述方法还包括:存储所述第三帧缓冲的帧缓冲标识;
接收到所述应用程序下发的渲染命令之前,所述方法还包括:
接收所述应用程序下发的第二创建帧缓冲资源命令,所述第二创建帧缓冲资源命令对应于第四帧缓冲;
若所述第四帧缓冲的分辨率与所述第三帧缓冲的分辨率相同,存储所述第四帧缓冲的帧缓冲标识。
3.根据权利要求1或2所述的方法,其特征在于,所述接收到所述应用程序下发的渲染命令之后,所述方法还包括:
确定所述预设存储空间中是否有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识存储至预设存储空间之前,所述方法还包括:
判断所述创建帧缓冲资源命令对应的帧缓冲的颜色附件的数量是否满足预设数量条件。
5.根据权利要求1所述的方法,其特征在于,所述在第二帧缓冲上执行所述渲染命令对应的渲染操作之前,所述方法还包括:
用第二帧缓冲替换所述第一帧缓冲。
6.根据权利要求2所述的方法,其特征在于,若所述第四帧缓冲的分辨率与所述第三帧缓冲的分辨率相同,存储所述第四帧缓冲的帧缓冲标识之前,所述方法还包括:
获取所述第三帧缓冲的分辨率和所述第四帧缓冲的分辨率。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述接收所述应用程序下发的创建帧缓冲资源命令之后,所述方法还包括:
确定所述创建帧缓冲资源命令对应的帧缓冲的颜色附件的数量。
8.根据权利要求1所述的方法,其特征在于,所述电子设备包括处理器和内部存储器,所述方法还包括:
所述处理器接收所述应用程序下发的创建帧缓冲资源命令,所述创建帧缓冲资源命令对应的帧缓冲包含颜色附件;
所述处理器将所述颜色附件的数量满足预设数量条件的帧缓冲的帧缓冲标识发送至所述内部存储器;
所述内部存储器存储所述处理器发送的帧缓冲标识。
9.根据权利要求8所述的方法,其特征在于,所述处理器接收所述应用程序下发的创建帧缓冲资源命令包括:
所述处理器接收所述应用程序下发的第一创建帧缓冲资源命令,所述第一创建帧缓冲资源命令对应于第三帧缓冲,所述第三帧缓冲的颜色附件的数量满足所述预设数量条件;
所述方法还包括:所述内部存储器存储所述第三帧缓冲的帧缓冲标识;
接收到所述应用程序下发的渲染命令之前,所述方法还包括:
所述处理器接收到所述应用程序下发的第二创建帧缓冲资源命令,所述第二创建帧缓冲资源命令对应于第四帧缓冲;
若所述第四帧缓冲的分辨率与所述第三帧缓冲的分辨率相同,所述处理器向所述内部存储器发送所述第四帧缓冲的帧缓冲标识。
10.根据权利要求8或9所述的方法,其特征在于,接收到所述应用程序下发的渲染命令之后,所述方法还包括:
所述处理器从所述内部存储器中获取存储的帧缓冲标识。
11.根据权利要求10所述的方法,其特征在于,所述接收到所述应用程序下发的渲染命令之后,所述方法还包括:
所述处理器判断所述存储的帧缓冲标识中是否有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致。
12.根据权利要求8或9所述的方法,其特征在于,所述电子设备包括图形处理器,所述方法还包括:
所述处理器向所述图形处理器发送所述创建帧缓冲资源命令,所述创建帧缓冲资源命令用于指示所述图形处理器创建所述创建帧缓冲资源命令对应的帧缓冲。
13.根据权利要求12所述的方法,其特征在于,所述在第二帧缓冲上执行所述渲染命令对应的渲染操作包括:
所述处理器将所述渲染命令中的所述第一帧缓冲替换为第二帧缓冲;
所述处理器将所述渲染命令发送至所述图像处理器;
所述图像处理器在所述第二帧缓冲上执行所述渲染命令对应的渲染操作。
14.根据权利要求8所述的方法,其特征在于,所述处理器包括拦截模块和识别模块,所述处理器接收所述应用程序下发的创建帧缓冲资源命令包括:
所述拦截模块拦截所述应用程序下发的创建帧缓冲资源命令,并向所述识别模块发送所述创建帧缓冲资源命令;
所述识别模块接收所述创建帧缓冲资源命令。
15.根据权利要求14所述的方法,其特征在于,所述识别模块接收所述创建帧缓冲资源命令包括:
所述识别模块接收第一创建帧缓冲资源命令,所述第一创建帧缓冲资源命令对应于第三帧缓冲,所述第三帧缓冲的颜色附件的数量满足所述预设数量条件;
所述方法还包括:所述内部存储器存储所述第三帧缓冲的帧缓冲标识;
接收到所述应用程序下发的渲染命令之前,所述方法还包括:
所述识别模块接收到第二创建帧缓冲资源命令,所述第二创建帧缓冲资源命令对应于第四帧缓冲;
若所述第四帧缓冲的分辨率与所述第三帧缓冲的分辨率相同,所述识别模块向所述内部存储器发送所述第四帧缓冲的帧缓冲标识。
16.根据权利要求10所述的方法,其特征在于,所述处理器包括决策模块,所述处理器从所述内部存储器中获取存储的帧缓冲标识之后,所述方法还包括:
所述决策模块判断所述存储的帧缓冲标识中是否有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致。
17.根据权利要求16所述的方法,其特征在于,所述处理器包括替换模块,所述处理器将所述渲染命令中的所述第一帧缓冲替换为第二帧缓冲之前,所述方法还包括:
若所述预设存储空间中有一帧缓冲标识与所述第一帧缓冲的帧缓冲标识一致,所述决策模块将所述渲染命令发送至所述替换模块;
所述处理器将所述渲染命令中的所述第一帧缓冲替换为第二帧缓冲包括:
所述替换模块将所述渲染命令对应的所述第一帧缓冲替换为第二帧缓冲;
所述处理器将所述渲染命令发送至所述图像处理器包括:
所述替换模块将所述渲染命令发送至所述图像处理器。
18.一种图像处理方法,应用于电子设备,所述电子设备上运行有应用程序,其特征在于,所述方法包括:
获取所述应用程序对应的历史渲染数据;
基于所述历史渲染数据中历史帧缓冲对应的颜色附件数量,确定历史分辨率;
确定所述应用程序下发的创建帧缓冲资源命令对应的帧缓冲;
将分辨率与所述历史分辨率相同的帧缓冲的帧缓冲标识发送至预设存储空间;
接收所述应用程序下发的渲染命令,所述渲染命令对应于第五帧缓冲;
若所述预设存储空间中有一帧缓冲标识与所述第五帧缓冲的帧缓冲标识一致,在第六帧缓冲上执行所述渲染命令对应的渲染操作,所述第六帧缓冲的分辨率小于所述第五帧缓冲的分辨率。
19.根据权利要求18所述的方法,其特征在于,所述基于所述历史渲染数据中历史帧缓冲对应的颜色附件数量,确定历史分辨率包括:
判断所述历史渲染数据中是否有一历史帧缓冲的颜色附件数量满足预设数量条件;
若有一历史帧缓冲的颜色附件数量满足预设数量条件,将所述历史帧缓冲的分辨率确定为历史分辨率。
20.根据权利要求18所述的方法,其特征在于,所述确定所述应用程序下发的创建帧缓冲资源命令对应的帧缓冲的分辨率之后,所述方法还包括:
将所述创建帧缓冲资源命令对应的帧缓冲的分辨率与所述历史分辨率进行比对。
21.根据权利要求18所述的方法,其特征在于,所述接收所述应用程序下发的渲染命令之后,所述方法还包括:
确定所述预设存储空间中是否有一帧缓冲标识与所述第五帧缓冲的帧缓冲标识一致。
22.根据权利要求18所述的方法,其特征在于,所述在第六帧缓冲上执行所述渲染命令对应的渲染操作之前,所述方法还包括:
用第六帧缓冲替换所述第五帧缓冲。
23.一种电子设备,其特征在于,所述电子设备包括存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于读取所述存储器中存储的所述程序指令,以实现如权利要求1至17中任意一项所述的图像处理方法或实现如权利要求18至22中任意一项所述的图像处理方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至17中任意一项所述的图像处理方法或实现如权利要求18至22中任意一项所述的图像处理方法。
CN202111681775.6A 2021-12-30 2021-12-30 图像处理方法、电子设备及存储介质 Pending CN116414493A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202111681775.6A CN116414493A (zh) 2021-12-30 2021-12-30 图像处理方法、电子设备及存储介质
PCT/CN2022/114624 WO2023124149A1 (zh) 2021-12-30 2022-08-24 图像处理方法、电子设备及存储介质
EP22913432.5A EP4276618A1 (en) 2021-12-30 2022-08-24 Image processing method, electronic device, and storage medium
US18/276,354 US20240112298A1 (en) 2021-12-30 2022-08-24 Image processing method, electronic device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111681775.6A CN116414493A (zh) 2021-12-30 2021-12-30 图像处理方法、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116414493A true CN116414493A (zh) 2023-07-11

Family

ID=86997421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111681775.6A Pending CN116414493A (zh) 2021-12-30 2021-12-30 图像处理方法、电子设备及存储介质

Country Status (4)

Country Link
US (1) US20240112298A1 (zh)
EP (1) EP4276618A1 (zh)
CN (1) CN116414493A (zh)
WO (1) WO2023124149A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830889B2 (en) * 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
US9940858B2 (en) * 2016-05-16 2018-04-10 Unity IPR ApS System and method for assymetric rendering to eyes in augmented reality and virtual reality devices
CN111508055B (zh) * 2019-01-30 2023-04-11 华为技术有限公司 渲染方法及装置
CN115473957B (zh) * 2021-06-10 2023-11-14 荣耀终端有限公司 一种图像处理方法和电子设备

Also Published As

Publication number Publication date
US20240112298A1 (en) 2024-04-04
WO2023124149A1 (zh) 2023-07-06
EP4276618A1 (en) 2023-11-15

Similar Documents

Publication Publication Date Title
CN115473957B (zh) 一种图像处理方法和电子设备
WO2020093988A1 (zh) 一种图像处理方法及电子设备
CN114650363B (zh) 一种图像显示的方法及电子设备
CN114040242B (zh) 投屏方法、电子设备和存储介质
WO2022007862A1 (zh) 图像处理方法、系统、电子设备及计算机可读存储介质
WO2021258814A1 (zh) 视频合成方法、装置、电子设备及存储介质
CN114089932B (zh) 多屏显示方法、装置、终端设备及存储介质
CN113254409A (zh) 文件共享方法、系统及相关设备
WO2020233593A1 (zh) 一种前景元素的显示方法和电子设备
CN115333941B (zh) 获取应用运行情况的方法及相关设备
CN114756184A (zh) 协同显示方法、终端设备及计算机可读存储介质
CN115119048B (zh) 一种视频流处理方法及电子设备
CN116048831B (zh) 一种目标信号处理方法和电子设备
CN116051351B (zh) 一种特效处理方法和电子设备
CN115482143B (zh) 应用的图像数据调用方法、系统、电子设备及存储介质
CN115686182B (zh) 增强现实视频的处理方法与电子设备
CN116055856A (zh) 相机界面显示方法、电子设备和计算机可读存储介质
CN116561085A (zh) 图片分享方法和电子设备
CN115686403A (zh) 显示参数的调整方法、电子设备、芯片及可读存储介质
CN113495733A (zh) 主题包安装方法、装置、电子设备及计算机可读存储介质
WO2023124149A1 (zh) 图像处理方法、电子设备及存储介质
CN116709609B (zh) 消息传递方法、电子设备及存储介质
CN116233599B (zh) 一种录像模式推荐方法和电子设备
CN116089057B (zh) 资源调度方法、设备、存储介质和程序产品
CN117692693A (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