CN106030652B - 提供输出面的方法、系统和合成显示控制器及计算机介质 - Google Patents

提供输出面的方法、系统和合成显示控制器及计算机介质 Download PDF

Info

Publication number
CN106030652B
CN106030652B CN201480075332.4A CN201480075332A CN106030652B CN 106030652 B CN106030652 B CN 106030652B CN 201480075332 A CN201480075332 A CN 201480075332A CN 106030652 B CN106030652 B CN 106030652B
Authority
CN
China
Prior art keywords
region
output face
face
output
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480075332.4A
Other languages
English (en)
Other versions
CN106030652A (zh
Inventor
D·克罗克斯福德
T·库克西
L·埃里克松
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.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN106030652A publication Critical patent/CN106030652A/zh
Application granted granted Critical
Publication of CN106030652B publication Critical patent/CN106030652B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/022Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed using memory planes
    • 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/14Display of multiple viewports
    • 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
    • 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/393Arrangements for updating the contents of the bit-mapped memory
    • 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/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/10Special adaptations of display systems for operation with variable images
    • G09G2320/103Detection of image changes, e.g. determination of an index representative of the image change
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • G09G2330/022Power management, e.g. power saving in absence of operation, e.g. no data being entered during a predetermined time
    • 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/12Frame memory handling
    • G09G2360/122Tiling
    • 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/12Frame memory handling
    • G09G2360/127Updating a frame memory using a transfer of data from a source area to a destination area
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

提供输出面的方法、系统和合成显示控制器及计算机介质。一种显示控制器,其通过向显示器发送一起形成输出帧的相应输出面区域而向显示器提供输出帧,以便显示,根据一个或更多个输入面的相应区域来生成输出面的各个区域。当生成输出面区域的新版本时,显示控制器确定是否未改变输出面区域达一段时间,如果是,那么将所生成的输出面区域存储在帧缓冲器中。然后,对于随后的帧执行检查,以便看看输出面区域是否可以变化。如果没有变化,则重新使用输出面区域的存储版本,但如果存在输出面区域的变化,则重新生成输出面区域。

Description

提供输出面的方法、系统和合成显示控制器及计算机介质
技术领域
这里描述的技术涉及在数据处理系统中提供从一个或更多个输入面(诸如输入窗口)合成(composited)(生成)的输出面(诸如要显示的窗口)的方法和设备。
背景技术
许多已知的电子装置和系统将窗口用于在显示屏上向用户显示信息,诸如图形用户接口、游戏、演示等(并且用于允许用户与所执行的应用交互)。
提供这种窗口的普通方式是使用合成窗口系统,在合成窗口系统中,适当组合(即,合成)独立的输入窗口,并且将结果写出到帧缓冲器,然后,该结果由用于讨论中的显示器的显示控制器读取,以便向用户显示窗口。因为这种系统写出到帧缓冲器,且然后读取该缓冲器,以便显示,所以它们通常称为帧缓冲器合成系统。
图1中示出了该帧缓冲器合成过程的示例。在该过程中,输入面1a、1b、1c被读取并传递到合成引擎3,该合成引擎3组合输入面1a-1c,以生成合成的输出帧。在步骤5处,将合成的输出帧写到缓冲器,然后在步骤7处,由显示控制器9从缓冲器读取合成的输出帧,然后显示控制器9向显示器发送该合成的输出帧,以便显示。
图2中示出了帧缓冲器合成系统。该帧缓冲器合成系统包括中央处理单元(CPU)10、图形处理单元(GPU)11、合成引擎12、显示控制器9以及存储控制器14。如图2所示,这些部件经由互联件13通信。存储控制器还接入用于存储合成的帧缓冲器的片外存储器15。合成引擎12根据一个或更多个输入面(例如,由GPU 11生成的)来生成合成的输出帧,然后,合成的输出帧经由存储控制器14存储在片外存储器(off-chip memory)15中的帧缓冲器中。然后,显示控制器9经由存储控制器14,从片外存储器15中的帧缓冲器读取合成的输出帧,并向显示器发送该输出帧,以便显示。
除了这种帧缓冲器合成系统之外,还存在直接合成系统,在该直接合成系统中,合成帧根据输入面(窗口)来生成,然后直接输出到显示器(即,不经由帧缓冲器中的中间存储)。
图3中示出了直接合成过程的示例。与图1中所示的帧缓冲器合成过程相比,在该直接合成过程中,不将合成帧写到缓冲器或从缓冲器读取。相反,合成显示控制器8根据输入面1a-c而生成合成帧,然后发送合成帧,以便显示,而不将合成帧首先存储在缓冲器中。
图4中示出了直接合成系统。与图2中所示的帧缓冲器系统相比,在直接合成系统中,用单个合成显示控制器8来替换合成引擎12和显示控制器9,该合成显示控制器8根据输入面生成合成帧,然后直接发送合成帧,以便显示,而不将合成帧首先存储在缓冲器中。
申请人相信还存在对合成窗口系统的改进范围。
发明内容
一种提供输出面的方法,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域,所述方法包括以下步骤:
当要提供输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的所述相应区域,并且根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域是否可能变化;以及
当确定所述输出面的所述至少一个区域不大可能变化时,进行如下操作:
发送所述输出面的所述至少一个区域的所述新版本以便使用,并且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域是否可能变化的步骤包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的相应区域是否在生成所述输出面的所述至少一个区域的新版本之前已经改变。
一种提供输出面的方法,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成所述输出面的相应区域,所述方法包括以下步骤:
当要提供输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
读取要生成所述输出面的所述一组多个输入面的至少一个子集的、要生成所述输出面区域的所述相应区域;
根据所述输入面的所述至少一个子集中的所述输入面的所述相应区域生成中间输出面区域;
确定输入面的所述至少一个子集的所述相应区域是否可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不大可能变化时,进行如下操作:
将所述中间输出面区域写到缓冲器;
其中,确定所述输入面的所述至少一个子集的相应区域是否可能变化的步骤包括确定所述输入面的所述至少一个子集的相应区域是否在生成所述中间输出面区域之前已经改变。
一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个区域,所述系统包括:
缓冲器;以及
合成显示控制器;
并且其中,所述合成显示控制器能够在要提供输出面的新版本时针对所述输出面的至少一个区域执行以下步骤:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的相应区域,并且根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域是否可能变化;以及
当确定所述输出面的所述至少一个区域不大可能变化时,进行如下操作:
发送所述输出面的所述至少一个区域的所述新版本以便使用,并且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域是否可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的相应区域是否在生成所述输出面的所述至少一个区域的新版本之前已经改变。
一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成所述输出面的相应区域,所述系统包括:
缓冲器;以及
合成显示控制器;
并且其中,当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
读取要生成所述输出面的所述一组多个输入面的至少一个子集的、要生成所述输出面区域的所述相应区域;
根据输入面的所述至少一个子集的所述输入面的所述相应区域生成中间输出面区域;
确定输入面的所述至少一个子集的所述相应区域是否可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不大可能变化时,进行如下操作:
将所述中间输出面区域写到缓冲器,
其中,确定所述输入面的所述至少一个子集的所述相应区域是否可能变化的步骤包括确定所述输入面的所述至少一个子集的所述相应区域是否在生成所述中间输出面区域之前已经改变。
一种用于提供输出面的合成显示控制器,所述合成显示控制器进行如下操作:
生成一起形成所述输出面的相应输出面区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域;以及
当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
确定是否重新使用所述输出面的所述至少一个区域的之前存储的版本,或是否根据所述一个或更多个输入面的相应区域生成所述输出面的所述至少一个区域的新版本;以及
根据所述确定,发送所述输出面的所述至少一个区域的所述之前存储的版本以便使用,或根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本,并且发送所述输出面的所述至少一个区域的所生成的新版本以便使用,
在确定将根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本时:
确定被确定将被生成新版本的所述输出面的所述至少一个区域是否可能变化,其中,确定所述输出面的所述至少一个区域是否可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域,所述系统包括缓冲器和合成显示控制器,并且其中,当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的所述相应区域,并且根据所述一个或更多个输入面的所述相应区域来生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域是否可能变化;以及
基于所述输出面的所述至少一个区域是否可能变化的所述确定,决定是否将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域是否可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
一种上面存储有软件代码的计算机可读介质,当执行该软件代码时,使得执行根据以上所述的方法。
附图说明
现在将仅以示例的方式并参照附图来描述这里描述技术的实施方式,附图中:
图1是例示了帧缓冲器合成过程的图;
图2是例示了帧缓冲器合成系统的示意图;
图3是例示了直接合成过程的图;
图4是例示了直接合成系统的示意图;
图5是例示了根据实施方式的合成系统的示意图;
图6是例示了根据实施方式的合成过程的图;
图7是例示了实施方式的操作的示意图;
图8是例示了根据实施方式的、针对输入面和输出块所存储的签名和数据的示意图;
图9是例示了根据实施方式的、由合成显示控制器执行的方法的流程图;
图10是例示了根据另一个实施方式的、由合成显示控制器执行的方法的流程图;
图11是示出了可以用于实施方式中的示例性签名生成过程的示意图;以及
图12是例示了根据另外实施方式的帧缓冲器合成过程的图。
类似的附图标记在附图中适当的情况下用于类似的部件。
具体实施方式
这里描述的技术的一个实施方式包括一种提供输出面的方法,输出面包括一起形成输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成输出面的相应区域,该方法包括以下步骤:
当要提供输出面的新版本时,针对输出面的至少一个区域进行如下操作:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;以及
如果输出面的至少一个区域的之前生成的版本未存储在缓冲器中,则进行如下操作:
读取要生成输出面的至少一个区域的、一个或更多个输入面的相应区域,并且根据一个或更多个输入面的相应区域生成输出面的至少一个区域的新版本;
确定输出面的至少一个区域是否可能变化;以及
如果确定输出面的至少一个区域不大可能变化,则进行如下操作:
发送输出面的至少一个区域的新版本以便使用,并且将输出面的至少一个区域的新版本写到缓冲器。
这里描述的技术的另一个实施方式包括一种用于提供输出面的系统,输出面包括一起形成输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成输出面的各个区域,该系统包括:
缓冲器;以及
合成显示控制器;
并且其中,合成显示控制器被配置为在要提供输出面的新版本时针对输出面的至少一个区域执行以下步骤:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;并且
如果输出面的至少一个区域的之前生成的版本未存储在缓冲器中,则进行如下操作:
读取要生成输出面的至少一个区域的一个或更多个输入面的相应区域,并且根据一个或更多个输入面的相应区域生成输出面的至少一个区域的新版本;
确定输出面的至少一个区域是否可能变化;
并且如果确定输出面的至少一个区域不大可能变化:
发送输出面的至少一个区域的新版本以便使用,并且将输出面的至少一个区域的新版本写到缓冲器。
这里描述的技术涉及一种合成窗口系统,即,在该合成窗口系统中,合成(组合)一个或更多个输入面,以提供输出面,例如以便显示。与直接合成系统中类似,系统(例如,合成显示控制器)可以根据它的相应输入面来生成输出面,并在不必首先将输出面存储在帧缓冲器中的情况下发送这样生成的输出面,以便使用(例如,显示)。
然而,在这里描述的技术中,当以这样的方式生成输出面的区域时,还确定相应输出面区域是否可能变化。如果确定相应输出面区域不大可能变化,那么除了发送生成的输出面区域以便使用之外,还将生成的输出面区域存储(写到)在缓冲器中。如下面将进一步讨论的,当要提供输出面的新版本时,那么可以从缓冲器重新使用输出面的这样存储的区域(如果该区域适于那么做),从而避免需要针对输出面的新版本再次生成区域。
然而,在确定输出面的区域可能变化(因此不大可能能够重新用于输出面的随后版本)的情况下,那么可以在不将输出面区域写到缓冲器的情况下,根据适当的输入面区域生成输出面的区域。
那么,这一点的效果是:这里描述的技术实际上可以如下面将进一步讨论的提供“混合”窗口合成系统,该窗口合成系统实际上可以在输出面逐区域的基础上,在使用帧缓冲器合成与直接合成之间选择。于是,这可以便于减小用于显示合成的带宽和功耗。在用于更低功率和/或移动装置的合成窗口系统以及显示器的场境中,这可以是特别期望且有利的。
例如,申请人意识到,因为不读取和写入帧缓冲器,所以直接显示控制器合成与帧缓冲器合成相比将减小带宽。然而,在可以将之前生成的输出面区域重新用于输出面的新版本的情况下,重新使用输出面区域的之前所存储的版本而不是再次针对输出面的新版本直接合成输出面区域,可以更有效且使用更少的带宽。如下面将进一步讨论的,这里描述的技术通过在输出面逐区域的基础上有效动态地选择要使用的最适当的方案来便于这种操作。
这里描述的技术中的该输入面和多个输出面可以为任意合适且期望的这种面。如将从上述理解的,在一个实施方式中,这里描述的技术用于合成窗口系统中,因此输入面为(要显示的)输入窗口,并且输出面为要显示的输出帧(合成的窗口)。
然而,其它布置将是可以的。例如,输出面可以为一些中间窗口,该一些中间窗口然后本身与其它窗口合成最终输出窗口(帧),或者输出面例如可以为某一形式的数据布置(诸如图形纹理),其旨在用于另外的例如图形处理。
提供或发送输出面以便使用可以包括:发送输出面以便显示(例如,发送到显示器以便显示),和/或发送输出面以便用于(例如,另外的)图形处理中(例如,在输出面为中间窗口和/或数据布置(诸如图形纹理)的情况下)。
在实施方式中,输入和输出面全部为图像(例如,用于显示的帧)。
如技术领域中已知的,例如可以通过由图形处理系统(图形处理器)被适当地渲染并存储到缓冲器中,根据期望来生成输入面。在合成窗口系统中,如技术领域中已知的,输入面窗口例如可以用于游戏、演示、图形用户接口(GUI)、具有视频数据的GUI(例如,具有图形“回放”和“暂停”图标的视频帧)等。
可以对应地例如通过混合或另外组合输入面根据期望根据输入面来生成输出面。如果需要,则该过程还可以涉及将变换(偏斜、旋转、缩放等)应用于输入面。
可以仅存在用于生成输出面的一个输入面,但在实施方式中,存在用于生成输出面的多个输入面。
输入面和输出面可以具有相同或不同的尺寸。
可以仅存在对输出面区域有贡献的、来自一输入面(或来自相应输入面)的单个区域,或者可以存在对输出面区域有贡献的、输入面(或输入面中的一个或更多个的)两个或更多个区域。
被考虑且用于这里描述的技术的输入面和输出面的区域可以简单地包括讨论中的整个面(例如,要显示的帧或窗口)(并且,在一个实施方式中,情况就是这样)。在这种情况下,讨论中的面将仅包括单个区域,因此,在全帧的基础上执行不同合成方案间的切换。
在实施方式中,相应区域包括讨论中的面的一部分(一些但不是全部)(即,面被划分为多个区域)。在这种情况下,输入面和输出面的区域可以各表示讨论中的面的任意合适且期望的区域。只要讨论中的面能够被划分或分割为各表示可以以这里描述的技术的方式识别并处理的整个面的一部分的多个可识别更小的区域,那么可以根据期望进行面到区域的细分。
在一些实施方式中,区域对应于各数据块,各数据块对应于表示讨论中的面的整体数据阵列的各部分(如技术领域中已知的,面通常将被表示为且存储为采样位置或像素数据的阵列)。
所有面可以被划分为相同尺寸和形状的区域(并且在至少一个实施方式中是这样做的),或者另选地,不同面可以被划分为不同尺寸的形状和区域(例如,输出面可以使用一个尺寸和形状区域,而输出面可以使用另一个尺寸和形状区域)。
所使用的区域尺寸还可以取决于过程,凭借该过程,组合输入面,以生成输出面(例如,如果如输入面与输出面之间存在任意形式的缩放)。
实施方式中的各面区域(例如,数据块)可以表示面(数据整体阵列)的不同部分(区域)(虽然如果需要,则区域可以交叠)。相应区域(数据块)应理想地表示面(数据阵列)的适当部分(区域),诸如面内的多个数据位置。合适的区域尺寸例如可以为面数据阵列中的8x8、16x16或32x32数据位置。
在一些实施方式中,面被划分为例如方形或矩形形式的规则尺寸和形状的区域(例如,数据块)。然而,这不是必要的,并且如果需要,则可以使用其它布置。
在一些实施方式中,各面区域对应于如下的渲染块(tile),其中,渲染或生成面的图形处理器或视频引擎或合成引擎或合成显示控制器随着它的渲染或合成输出而产生该渲染块。因为图形处理器、显示引擎或控制器将直接生成块,所以这是实施这里描述的技术的特别简单的方式,因此将不需要“产生”将以这里描述的技术的方式考虑的面区域的任何进一步处理。
(如技术领域中已知的,在基于块的渲染中,(例如,通常将被显示以显示所渲染的场景的)渲染过程的二维输出阵列或帧(“渲染目标”)被细分或分割为,用于渲染过程的、通常称为“块”的多个更小的区域。块(区域)各单独渲染(通常一个接一个)。然后,所渲染的块(区域)形成完整的输出阵列(帧)(渲染目标),例如,以便显示。
通常用于“成块(tiling)”和“基于块的”渲染的其它术语包括“组块(chunking)”(区域被称为“大块”)和“斗(bucket)”渲染。为方便起见,这里将使用术语“块”和“成块”,但应理解,这些术语旨在包含所有另选和等同术语和技术。)
在这里描述的技术的这些布置中,面被划分为的、用于渲染和/或合成目的的块可以为任意期望且合适的尺寸或形状。在一些实施方式中,如领域中已知的,块全部为相同的尺寸和形状,但这不是必要的。在一些实施方式中,各块为矩形(包括方形),并且尺寸可以为8x 8、16x 16、32x 32、32x 4或32x 1采样位置。非方形矩形区域(诸如32x 4或32x 1)可以更好地适合到显示器的输出。
在一些实施方式中,这里描述的技术还可以或相反将不同尺寸和/或形状的面区域用于渲染等过程操作(产生)的块来执行。
例如,在一些实施方式中,以这里描述的技术的方式考虑的面区域可以由一组多个“渲染”块来组成,和/或可以包括仅渲染块的子部分。在这些情况下,可以存在中间阶段,该中间阶段实际上根据图形处理器生成的所渲染的块来“生成”期望的面区域。
在这里描述的技术中且如上所述,当需要输出面区域的新版本时,首先检查输出面的区域的之前生成(例如,使用)的版本是否存储在缓冲器中。
在示例中,首先检查输出面的(例如,特定)区域的之前生成的版本是否存储在缓冲器中。
另选地或另外地/其次,可以检查输出面的不同(例如,相邻)区域的之前生成的版本是否存储在缓冲器中。
由此,可以检查输出面的区域和/或另一个区域的之前版本是否存储在缓冲器中,使得如果输出面的区域和/或另一个区域的之前版本是存储在缓冲器中,则可以考虑供使用(例如,可以确定该版本是否适于使用)。
这便于在要提供输出面的新版本时(潜在地)重新使用缓冲器中所存储的输出面区域。
可以存在缓冲器中所存储的、相当于输入和/或输出面区域的多个版本(帧)。可以检查这些之前版本(帧)的任意一个。由此,所检查的输出面的区域的之前生成的版本可以为输出面的区域的紧接之前生成的版本,和/或可以为一个或更多个更早的版本。这意味着,即使输出面的区域的紧接之前生成的版本未被存储(或无效),更早的版本也可以有效,并且可以使用该更早的版本。
在实施方式中,当检查输出面的区域的之前生成(例如,使用)的版本是否存储在缓冲器中时,这包括检查要提供的输出面的讨论中的特定区域的之前生成(例如,使用)的版本是否存储在缓冲器中(即,来自输出面的更早版本的对应输出面区域是够存储在缓冲器中)。
另一方面,该步骤还可以或另选地包括检查输出面的(任意)(不同)区域的(合适的)之前生成(例如,使用)的版本是否存储在缓冲器中(例如,可以在例如要提供的输出面的特定区域的之前生成(例如,使用)的版本未存储在缓冲器中的情况下检查不同的(例如,相邻的)区域)。由此,即使要提供的输出面的区域的之前生成(例如,使用)的版本不存储在缓冲器中(或无效),也可以存在可以使用的、存储在缓冲器中的输出面的另一个区域。在一些实施方式中,对输出面的新版本有贡献的输入面区域可以与对输出面有贡献的之前生成且存储的版本的输入面区域进行比较,以便确定输出面区域的所存储版本是否适于使用(即,是否适于用于输出面的新版本中)。如果输出面的新版本和输出面的之前生成且存储的版本的贡献输入面区域(例如,它们的签名)匹配,那么可以使用输出面的之前生成且存储的版本。
由此,在一些实施方式中,要生成输出面的至少一个区域的一个或更多个输入面的相应区域与生成输出面的不同区域的一个或更多个输入面的相应区域比较(例如,可以比较对应于一个或更多个输入面的这些区域的签名)。如果要生成输出面的至少一个区域的一个或更多个输入面的相应区域,与生成输出面的不同区域的一个或更多个输入面的相应区域相同,并且对应于这些输入面区域的输出面的不同区域的之前生成(例如,使用)的版本存储在缓冲器中,那么输出面的不同区域的之前生成(例如,使用)的版本可以用于要提供的输出面的至少一个区域。
可以根据期望来执行输出面的区域的之前生成(例如,使用)的版本是否存储在缓冲器中的确定,但在实施方式中,维持例如缓冲器中所存储的输出面区域的元数据(诸如一个或更多个签名)形式的记录,并且检查该记录,以确定输出面区域的之前版本是否存储在缓冲器中。检查指示输出面的至少一个区域(的例如,最新或更早的版本)是否存储在缓冲器中的数据可以更容易(例如,更快和/或需要更少的功率),而不是检查缓冲器本身。
例如,特定元数据值(例如,“0”)可以指示:输出面的区域的之前生成(使用)的版本未存储在缓冲器中,或所存储版本为“无效的”(即,与不对应于之前生成(使用)的版本的输出面的区域的版本有关)。另一方面,特定元数据值(例如,“1”)可以指示:输出面的区域的之前使用的版本存储在缓冲器中,或所存储版本为“有效的”(即,与对应于之前生成(使用)的版本的输出面的区域的版本有关)。
元数据例如可以为签名。由此,特定签名值(例如,“0”或“-999”或不同的另外不使用的值)例如可以指示:输出面的区域的之前生成(使用)的版本未存储在缓冲器中,或所存储版本为“无效的”(即,与不对应于之前生成(使用)的版本的输出面的区域的版本有关)。另一方面,任意其它签名值(即,除了特定值之外的值)可以指示:输出面的区域的之前使用的版本存储在缓冲器中,或所存储版本为“有效的”(即,与对应于之前生成(使用)的版本的输出面的区域的版本有关)。
所存储的元数据还可以指示哪个之前存储的输出面区域要用于讨论中的输出区域(例如,许多之前区域中的哪个/哪些是有效的)。例如,元数据可以指示要使用的区域的身份(identity)(例如,位置)。
由此,在实施方式中,存储如下数据,该数据指示输出面的至少一个区域(的之前或更早的版本)是否存储在缓冲器中的数据(例如,元数据)。在示例中,例如,针对输出面被划分为的各个区域存储例如旗标形式。由此,例如,可以存储对应于输出面被划分为的区域的位图,位图中的值指示输出面的对应区域的之前使用的版本是否存储在缓冲器中。
对应地,在实施方式中,如果且当输出面的区域写到缓冲器时,因此更新指示输出面的至少一个区域是否存储在缓冲器中的数据。
在这一点上,将理解的是,在一些情况下,存储输出面区域的缓冲器可以存储输出面区域的过时或被取代的版本(该版本之前写到缓冲器,但对于该版本,生成输出面区域的更新版本,但未存储在缓冲器中)。由此,指示输出面的至少一个区域的之前生成的版本是否存储在缓冲器中的数据实际上,可以被认为指示缓冲器是否含有有效以便用于输出面的当前版本的输出面区域的版本,或者指示缓冲器是未存储输出面区域的任何版本还是存储输出面区域的之前但现在无效的版本。
由此,在实施方式中,输出面的之前生成版本旨在提及用于显示当前所显示的输出面区域的形式的输出面区域的版本。因为该版本对于当前所显示的输出面的版本(例如,帧)而生成,所以这例如可以为输出面区域,或者该版本可以为:针对输出面的更早版本(对于更早的帧)生成的、但在显示(对于当前所显示的帧的)输出面的当前版本时重新使用的输出面区域的版本。
对应地,检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中可以包括:检查缓冲器是否含有有效以便用于输出面的当前版本的输出面区域的版本(然后,如果(例如,因为缓冲器不存储输出面的任何版本,或存储输出面区域的之前但现在无效的版本而)确定缓冲器不含有有效以便用于输出面的当前版本的输出面区域的版本,则读取输入面区域,并且生成输出面的至少一个区域等。)
如果确定输出面的之前使用区域未存储在缓冲器中(即,缓冲器不含有有效以便潜在地重新用于生成的输出面的新版本的、输出面的区域的版本),那么如上所讨论的,然后根据对讨论中的输出面的相应输入面区域有贡献例如由合成显示控制器生成输出面的区域,并且发送这样生成的输出面区域,以便使用。
在此时,还确定这样生成的输出面区域是否应存储在缓冲器中(使得该输出面区域然后可用于将来使用)。通过确定输出面的区域是否可能(在将来)变化来执行该确定。这允许关于是否将输出面的至少一个区域写到缓冲器来做决定。输出面的至少一个区域可以仅在确定输出面的至少一个区域在将来不大可能变化(即,可能为静态的)时,写到缓冲器(因为这将暗示输出面区域可能能够重新用于输出面的将来版本,使得然后将在将所生成的输出面的至少一个区域存储在缓冲器中方面存在益处)。
在实施方式中,确定输出面的区域是否可能变化包括:确定输出面的区域是否例如因为输出面的之前版本和/或在所选时段期间(例如,输出面的若干版本)生成而变化。这是因为如果输出面的至少一个区域(例如,近来)变化,那么可以假定与如果输出面的至少一个区域近来未变化相比,它更可能例如在下一帧或输出面的下一版本中(继续)变化。
在一个实施方式中,确定输出面的至少一个区域是否可能变化包括:确定要对输出面的至少一个区域有贡献的一个或更多个输入面的相应区域是否可能变化。再次,这可以通过检查一个或更多个输入面的相应区域是否例如因为输出面的之前版本和/或在所选时段期间(例如,输出面的若干版本)生成而变化来评定。
在一些实施方式中,检查一个或更多个输入面的相应区域和/或输出面的至少一个区域是否变化包括:检查特定之前(例如所选的)数量的帧(例如,2至60个帧)上是否存在一个或更多个输入面的相应区域和/或输出面的至少一个区域的变化。
帧的特定之前数量可以为固定数量(例如,从2至60个帧)或者可以变化(例如,从2至60个帧)。
在一些实施方式中,帧的特定之前数量根据输入面的数量(例如,对于更小数量的输入面,帧的特定之前数量可以更大,反之亦然)和/或根据输出面的至少一个区域将变化的可能性(例如,对于更高的可能性,帧的特定之前数量可以更小,反之亦然)来变化。
在一些实施方式中,帧的特定之前数量根据所估算的或实际的(例如,压缩的输出缓冲器的)缓冲器尺寸而变化。例如,对于更大的所估算或实际的输入缓冲器尺寸,帧的特定之前数量可以更大,反之亦然。
另选地或另外地,确定一个或更多个输入面的相应区域和/或输出面的至少一个区域是否可能变化:包括检查定一个或更多个输入面的相应区域和/或输出面的至少一个区域的变化率例如在特定之前(例如所选的)数量的帧(例如,2至60个帧)上是什么,并且确定该率是高于还是低于特定阈值。如果该变化率低于特定阈值,那么这可以指示一个或更多个输入面的相应区域和/或输出面的至少一个区域在(不久的)将来不大可能变化。另一方面,如果该变化率高于(例如,或等于)特定阈值,那么这可以指示一个或更多个输入面的相应区域和/或输出面的至少一个区域在可能变化。
率阈值例如可以为两个帧的平均修改率或更大。
一个或更多个输入面的相应区域和/或输出面的至少一个区域的变化率可以例如由软件来确定或指定,或者可以通过考虑之前的行为并外推来计算。
另选地或另外地,确定一个或更多个输入面的相应区域和/或输出面的至少一个区域是否可能变化包括:确定例如在特定的(例如所选的)之前时间段期间和/或在之前,特定(例如所选的)数量的帧上的变化的周期性或频率或模式和/或一个或更多个输入面的相应区域和/或输出面的至少一个区域的更新,然后将所确定的更新周期性用于例如确定输出面区域是否将要在例如下一帧或下一些帧中变化。例如,在更新输出帧的模式指示对于下一帧不应更新输出面区域,那么可以推断输出面的至少一个区域在(不久的)将来不大可能变化,因此应存储该区域,反之亦然。更新周期性数据可以每输出面区域来提供,然后用于评定讨论中的输出面区域是否在下一帧中将要更新。例如,这可以在输入面以比将输出帧更新至显示器所需的率更慢的率变化的情况下是有用的(例如,在具有60帧每秒的显示更新率的显示器上显示以每秒25-30帧更新的视频时)。
在使用的情况下,可以根据期望执行一个或更多个输入面的相应区域和/或输出面的至少一个区域是否变化的确定。这可以通过将讨论中的区域的各版本进行比较(例如,通过将输出面的至少一个输出区域的新生成的版本与输出面的至少一个区域的之前版本进行比较(观察输出面区域是否变化))来执行。
面区域的比较应当为了确定面区域的各版本是否相同(或至少足够类似)。这可以以任意合适且期望的方式来进行。由此,例如,面区域的一个版本的内容的一些或全部,可以与面区域的另一个版本(或多个版本)的内容的一些或全部进行比较(在一些实施方式中是这样做的)。
在一些实施方式中,通过比较表示和/或源于讨论中的面区域的各版本的内容的信息来执行该比较,以评定各面区域的相似性或其它方面。表示各面区域的内容的信息可以采取任意合适的形式,但在实施方式中为根据或基于面区域的内容(例如,表示面区域的数据块)生成的面区域的“签名”的形式。这种区域内容“签名”可以包括:(例如在一些实施方式中)可以被认为表示源于面区域的数据(对于面区域的数据生成)的区域的内容(诸如检查和(checksum)、CRC或哈希值等)的任意合适的一组导出信息。合适的标签将包括:标准CRC(诸如CRC32)或其它形式的签名(诸如MD5、SHA-1等)。
由此,在实施方式中,检查一个或更多个输入面的相应区域和/或输出面的至少一个区域是否变化包括:检查一个或更多个输入面的相应区域和/或输出面的至少一个区域的签名是否变化。将面区域的(即,表示面区域的)签名进行比较,可以提供(例如,在其它步骤中)确定面区域是否变化的一种更快的方式。它还可以减小存储带宽和功耗。
检查过程例如可能需要被认为未改变的面区域的(例如,各签名的)准确匹配,或者对于被认为未改变的区域可能仅需要例如超过给定阈值的足够类似的(但不准确的)匹配。
在实施方式中,为了便于该操作,可以在每次生成面区域(例如,输出面区域)时生成表示签名的各内容。然后,例如可以与讨论中的面区域关联的存储签名,以便于讨论中的面区域是否变化的随后确定。
由此,在实施方式中,当根据一个或更多个输入面的相应区域生成至少一个输出面区域时,在实施方式中,表示输出面的至少一个区域的内容的签名还可以被生成并存储(例如,在输出面区域缓冲器中或至少与输出面区域关联地存储)。
这里应注意,在这些布置中,即使所生成的输出面区域未存储在缓冲器中,也可以对于生成的所有输出面区域存储表示内容的签名,以便便于与输出面区域的随后版本的比较。
在使用的情况下,可以根据期望来实施签名生成。例如,签名生成可以在生成输出面的合成显示控制器的集成部分中来实施,或者例如可以存在进行签名生成的单独“硬件元件”。在对于输入面区域生成签名的情况下,可以由输入帧生成器(例如GPU或视频引擎)来生成签名。
如果确定所生成的输出面区域不大可能变化,那么如上所讨论的,所生成的输出面区域写到存储器(存储在缓冲器中)。这可以根据期望来执行。
例如,将输出面的至少一个区域写到缓冲器可以在发送该区域以便使用之前或之后执行,或者可以同时执行。
在一些实施方式中,将输出面的至少一个区域写到缓冲器包括:将输出面的至少一个区域的压缩表示写到缓冲器。这可以有助于减小需要被存储和读取的数据量。
在一些实施方式中,表示生成输出面的至少一个区域的一个或更多个输入面区域的数据写到缓冲器。该数据可以为或可以包括:表示一个或更多个输入面区域的签名。
在一些实施方式中,可以压缩表示一个或更多个输入面区域的数据。这也可以有助于减小需要被存储和读取的数据量。
另一方面,在确定输出面的至少一个区域在(不久的)将来可能变化的情况下,可以在不将所生成的输出面的至少一个区域写到缓冲器的情况下发送该区域,以便使用。
由此,在(不久的)将来可能存在一个或更多个输入面的相应区域和/或输出面的至少一个区域的变化的情况下,可以在不将输出面的至少一个区域存到缓冲器中以便将来使用的情况下,发送输出面的至少一个区域,以便使用。这可以有助于在确定所生成的至少一个输出面不大可能能够重新用于输出面的将来版本的那些情况下,节省处理时间和功率。上面在输出面的至少一个区域的“有效”之前版本未存储在缓冲器中的情况下,讨论了这里描述的技术的操作。
如果输出面的至少一个区域的之前使用版本存储在缓冲器中(即,缓冲器存储有效以便用于输出面的当前版本的输出面区域的版本),那么虽然将可以简单地重新使用(例如,显示)输出面的至少一个区域的该版本,但在实施方式中,首先确定是否适于重新使用存储在缓冲器中的输出面的区域的版本。这可以通过确定输出面的区域是否因为生成存储在输出缓冲器中的输出面的区域的版本而变化来进行。
如果确定使用输出面的区域的所存储版本是可接受的,那么可以从缓冲器例如向显示器提供输出面的所存储区域,以便显示(即,不重新生成输出面的至少一个区域,而是从缓冲器简单地读取该区域)。
另一方面,如果确定输出面的至少一个区域的所存储版本不重新用于输出面的新版本,那么输出面的所存储区域不用于输出面的新版本,而是根据对输出面的区域有贡献的一个或更多个输入面的相应区域生成输出面的区域的新版本,并且例如发送该版本,以便显示。
在这种情况下,可以在也不写到缓冲器的情况下使用这样生成的输出面的区域(例如,发送该区域,以便显示)。这是因为,由于无法重新使用输出面区域的之前存储版本,所以可能新生成的版本也将无法重新用于输出面的将来版本。然而,在适当的情况下,还可以生成并存储表示新生成输出的内容的签名(如上所讨论的)。
在维持指示输出面的相应区域是否存储在缓冲器的记录(例如,元数据(诸如签名))的情况下,然后可以适当地更新该记录(例如,元数据),例如以指示输出面的所存储区域仍然有效(仍然存在于缓冲器中)以便使用,或者在确定不应重新使用输出面的所存储区域的情况下,以指示输出面的区域的之前生成的版本未存储在缓冲器中(即,实际上存储在缓冲器中的输出面的版本不再有效)。
可以根据期望来执行是否适于重新使用存储在缓冲器中的输出面的区域的版本的确定。在实施方式中,它至少部分基于将对输出面区域有贡献的相应输入面或面区域是否将因为生成的输出面区域的所存储版本而变化。
由此,如果输出面的至少一个区域的之前版本存储在缓冲器中,则这里描述的技术的实施方式包括:检查对输出面区域有贡献的一个或更多个输入面的相应区域是否变化;并且如果一个或更多个输入面的各贡献区域未变化(并且可以经受满足的任意其它所需准则),则从缓冲器读取输出面的至少一个区域的之前版本,并且发送该版本,以便使用。在已存在存储在缓冲器中的、输出面的至少一个区域的之前版本,且确定一个或更多个输入面的各贡献区域未变化(并且满足任意其它所需的准则)的情况下,那么不需要重新生成输出面的至少一个区域,并且可以简单地从缓冲器读取。
另一方面,如果输出面的至少一个区域的之前版本存储在缓冲器中,且如果确定一个或更多个贡献输入面的相应区域变化,那么这里描述的技术的实施方式包括:读取一个或更多个输入面的各贡献区域,并且根据一个或更多个输入面的各贡献区域生成输出面的至少一个区域;并且发送输出面的至少一个区域,以便使用,不将该新版本存储在缓冲器中以便将来使用。由此,在已存在存储在缓冲器中的、输出面的至少一个区域的之前版本,但确定一个或更多个输入面的各贡献区域变化的情况下,那么重新生成输出面的至少一个区域,并且在不将该区域写到缓冲器的情况下发送该区域,以便使用。
当检查将对输出面区域有贡献的一个或更多个输入面的相应区域是否变化时,这可以涉及将对输出面区域的新版本有贡献的一个或更多个输入面,与对输入面区域的所存储版本有贡献的一个或更多个输入面进行比较。
在要考虑对输出面区域有贡献的输入面区域的情况下,那么可以根据期望来确定对讨论中的输出面的区域有贡献的输入面的区域。在一个实施方式中,这基于要用于根据输入面的区域生成输出面的区域的过程(例如,算法)来进行。例如,该确定可以基于使用的合成算法(过程)。合成算法(例如,尺寸、位置、方位、排序、层优先权、和/或混合算法)可以指定如何在输出帧(面)中显示输入窗口(面)。
在另一个实施方式中,维持对各个输出面区域有贡献(用于生成各个输出面区域))的输入面区域的记录,然后,该记录用于确定输入面的哪个或哪些区域对讨论中的输出面有贡献的区域。例如,该记录可以包括表示哪个或哪些区域对讨论中的输出面有贡献的区域的数据,诸如元数据。数据例如可以指定表示区域的坐标或其它标记的列表。
在这种情况下,例如可以维持对输出面区域有贡献的那些输入面区域的记录(在实施方式中是这样做的),或者记录可以指示未对输出面区域有贡献的输入面区域。
在另一个实施方式中,基于用于生成输出面区域的过程(即,算法上)来确定度输出面区域有贡献的输入面区域,但还维持指示这样确定的面中的任意一个实际上未对输出面区域有贡献的记录(因此,不需要为了这里描述的技术的目的而检查这些面(然后,不检查这些所指示的面))。这例如可以在非贡献输入面区域的列表与贡献输入面区域的列表相比较短的情况下更合适。
在一些实施方式中,确定输入面的哪个或哪些区域对输出面的区域有贡献包括:首先确定哪个输入面或那些输入面对输出面的区域有贡献,然后确定该输入面或这些输入面中的哪个区域或哪些区域对输出面的区域有贡献。
在一些实施方式中,确定输入面的哪个或哪些区域对输出面的区域有贡献包括:首先确定输入面的哪个版本对输出面的区域有贡献。
检查所确定的输入面的贡献区域是否变化可以以任意期望且合适的方式来执行。
如上所讨论的,这可以通过比较输入面区域的各版本(例如,输入面的区域的当前版本(即,将用于生成要生成的输出面区域的新版本的)和已用于生成输出面区域的之前版本的输入面的区域的版本)的内容中的一些或全部(以观察输入面区域是否变化)来进行。
在一些实施方式中,如上所讨论的,对于要检查的相应输入面区域生成指示或表示和/或源于相应输入面区域的内容的签名,并且检查过程包括:比较讨论中的输入面区域的各版本的签名(例如,以确定表示输入面区域的签名是否因为生成输出面区域的当前版本而变化)。
由此,在一些实施方式中,签名(诸如CRC值)对于相应输入面区域(例如,渲染块)(该区域对于输入面而生成)生成,然后适当存储,并且与它有关的面的区域关联。在一些实施方式中,签名关于面存储在适当的例如窗口或帧、缓冲器中。可以关于输出面区域来存储用于对输出面区域有贡献的输入面区域的签名。
在使用的情况下,签名生成可以根据期望来实施。例如,签名生成可以在生成(渲染)输入面的图形处理器的集成部分中来实施,或者例如可以存在存储输入面的、作为图形处理器和缓冲器的中间体的单独“硬件元件”。
在实施方式中,如果对输出面区域有贡献的输入面区域的数量超过特定(例如,所选的,例如,预定的)阈值数量,那么不是检查输入面区域中的任意一个是否变化,而是在不执行关于查输入面区域中的任何一个是否变化的任何检查的情况下,简单地重新生成输出面区域(并且还可以不将重新生成的输出面区域存储在缓冲器中)。
类似地,在实施方式中,如果对给定输出面区域有贡献的输入面的数量超过特定(例如,所选的,例如,预定的)阈值数量,那么再次可以在不首先检查输入面区域中的任何一个是否变化的情况下,简单地重新生成输出面区域(并且还可以不将重新生成的输出面区域存储在缓冲器中)。
在这些实施方式中,将检查输入面区域的相应输出面区域可以例如在元数据中例如被标记为不检查(由此,针对输出面的下一版本简单地重新生成输出面区域)。这例如可以通过如下方式来来实现:将指示讨论中的输出面区域是否存储在缓冲器中的数据,设置为指示输出面区域的之前版本未存储在缓冲器中。
这些布置允许在例如输入面检查过程例如由于需要被检查的输入面区域的数量而较繁重的情况下省略该过程。
在实施方式中,除了比较各输入和/或输出面区域以确定它们是否变化之外,或代替比较各输入和/或输出面区域以确定它们是否变化,还可以对于输入面和/或输出面的更大区域(例如,对于包含输入和/或输出面的多个区域的区域)和/或输入和/或输出面作为整体执行比较。
在这种情况下,在实施方式中,也对于可以考虑的输入和/或输出面的各更大区域(例如,对于多组多个输入和/或输出面区域和/或对于整体输入和/或输出面)生成并存储表示签名的内容。
在这种实施方式中,当来自对输出区域有贡献的给定输入面的区域的数量超过特定(例如,所选的,例如,预定的)阈值数量时,那么不是各自比较各输入区域以确定该区域是否变化,而是可以比较输入面的更大区域(例如,输入面作为整体)以确定该区域是否变化,然后因此做出关于各面区域是否变化的决定。
在实施方式中,确定应用于生成输出面区域的任意输入面区域是否将在输出面区域中不可见,那么仅将在输出面区域中可见的输出面区域被认为是将对输出面区域有贡献的输入面区域,并因此被检查以观察它们是否变化。例如,因为输入面区域在挡住输入面区域的其它不透明输入面后方,所以输入面区域在输出面区域中可能不可见。在这种情况下,可以基于用于生成输出面区域的过程,来确定对讨论中的输出面的区域有贡献的输入面的区域例如,但还维持(因为被更高优先权的不透明输入面区域挡住而)无法看到的那些输入面区域的记录。
在实施方式中,如果应用于区域对输出面区域有贡献的输入面的任意转换变化,那么重新生成输出面区域。这简单地允许应用于对输出面区域有贡献的输入面区域的转换的任意变化可能意味着输出面区域将变化的事实。
在一个实施方式中,这被实施为,使得如果因为最后生成输出面而转换贡献输入面中的任意一个,则重新生成输出面的区域(可能为区域的全部)。例如,如果在多个交叠的面的显示层中调整一个或更多个输入面中的任意一个的大小、移动、旋转,和/或前移或后移一个或更多个输入面中的任意一个,那么可以重新生成输出面的区域(并且可以重新生成整体输出面)。
类似地,如果贡献输入面的前排序或后排序变化,那么可以重新生成输出面的区域(并且可以重新生成整体输出面)。
同样地,在实施方式中,如果对输出面有贡献的一组输入面和/或对输出面区域有贡献的一组输入面变化,那么可以重新生成输出面的区域(并且可以重新生成整体输出面)。
类似地,如果对输出面区域有贡献的一组输入面区域变化,那么可以重新生成输出面区域。
再次,在这些布置中,在重新生成输出面或输出面区域的情况下,那么在实施方式中,也在不将输出面或输出面区域存储在缓冲器中的情况下,发送输出面或输出面区域,以便使用。
在要重新生成输出面区域的情况下,那么应当以用于执行输出面生成过程(合成过程)的适当方式使用输入面区域,来重新生成(即,再度生成)输出面区域。
然后,发送所生成的输出面区域(或从缓冲器读取的输出面区域),以便使用(例如,向显示器发送,以便显示)。这可以根据期望来实施。显示器可以是合成显示控制器(和其它处理器)(与合成显示控制器相同的装置的一部分)本地的,但显示器可以是输出面例如经由物理连接发送到的远程显示器,或者可以为无线的。显示器可以是任意合适形式的显示器,诸如屏幕等。
合成显示控制器和例如其它部件可以处于装置中的同一或不同芯片上。
虽然上面具体参照输出面的单个区域的处理描述了这里描述的技术,但如将由本领域技术人员理解的,在输出面由多个区域组成的情况下,这里描述的技术的技巧可以用于输出面的多个区域(例如,各个区域)。由此,在实施方式中,输出面的多个区域(例如,相应区域)以这里描述的技术的方式来处理。这样,将由这里描述的技术的过程生成整体输出面。
还将理解,这里描述的技术特别适用于如下的布置,在该布置中,一连串输出面(例如,要显示的帧)根据(例如,可以保持相同或随着时间而变化的)一连串输入面来生成。由此,这里描述的技术的实施方式包括生成一连串的输出面,并且当要生成输出面的各新版本时,以这里描述的技术的方式进行操作。由此,在实施方式中,对于生成的给定输出面的多个版本(并且随着生成该多个版本)(例如,随着生成输出面的各连续新版本)而重复这里描述的技术的过程。
在一些实施方式中,系统被配置为,总是定期(例如,每秒一次和/或每特定(例如,所选的)数量的输出面的版本(例如,每特定数量的输出帧)一次)重新生成相应输出面区域。那么,这将确保至少在最小的所选时间段重新生成相应输出面区域。从而,这可以避免例如使得在多于给定(例如,所期望或所选的)时间段内不重新生成输出面区域的(例如,因为虽然输出或输入面区域的内容实际上变化但签名碰巧匹配而引起的)错误匹配的输出或输入面区域。
例如,饱和(saturating)计数器可以被设置为计算区域未变化的帧数,并且如果该数量超过特定(例如,所选的,例如,预定义的)值(诸如60)(例如,具有60Hz的输出显示率),那么可以重新生成输出帧的区域。相应输出面区域可以至少每秒重新生成一次。
在这种情况下,例如可以通过将整体新输出面定期地(例如,每秒一次)简单写出来重新生成输出面区域。然而,在一些实施方式中,输出面区域的新版本在滚动的基础上独立地写出到输出面,使得不是一下子写出输出面的完整新版本,而是以循环方式在每次生成输出面的新版本时,重新写出输出面的所选部分,使得随着时间过去最终写出输出面的全部,作为新输出面。
输出面缓冲器可以为片上缓冲器,或者它可以为外部缓冲器(实际上,它更可能为外部缓冲器(存储器),如下面将讨论的)。类似地,输出面缓冲器可以是用于该目的的专用存储器,或者它可以是也用于其它数据的存储器的一部分。在一些实施方式中,输出面缓冲器为用于生成面的图形处理系统,和/或用于上面要显示面的显示器的帧缓冲器。输出帧缓冲器例如可以关于显示控制器被设置为片上(on-chip)的。然而,在一些实施方式总,输出帧缓冲器设置在片外存储器中,或设置为片外(off-chip)存储器。
输入面可以以任意合适且期望的方式存储在存储器中。它们可以存储在适当的缓冲器中。再次,这些缓冲器可以是片上缓冲器,或可以为外部缓冲器。类似地,它们可以是用于该目的的专用存储器,或者它们可以是也用于其它数据的存储器的一部分。输入面缓冲器例如可以是应用需要的任意格式,并且例如可以存储在系统存储器中(例如,统一存储器架构中),或在图形存储器中(例如,在非统一存储器架构中)。
合成显示控制器可以包括任意合适的处理电路。它例如可以包括CPU和/或GPU。
这里描述的技术还扩展到合成显示控制器本身。由此,这里描述的技术的另一个实施方式包括一种用于(例如,向显示器,以便显示)提供输出面的合成显示控制器,该合成显示控制器进行如下操作:
生成一起形成输出面的相应输出面区域根据一个或更多个输入面的相应区域来生成,输出面的各个区域,并且
被配置为在要提供输出面的新版本时针对输出面的至少一个区域执行以下步骤:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;并且
如果输出面的至少一个区域的之前生成的版本未存储在缓冲器中:
则读取要生成输出面的至少一个区域的一个或更多个输入面的相应区域,并且根据一个或更多个输入面的相应区域生成输出面的至少一个区域的新版本;
确定输出面的至少一个区域是否可能变化;
并且如果确定输出面的至少一个区域不大可能变化:
则发送输出面的至少一个区域的新版本以便使用,并且将输出面的至少一个区域的新版本写到缓冲器。
如将由本领域技术人员理解的,这里描述的技术的该实施方式的合成显示控制器还可以在适当的情况下包括这里描述技术的特征的任意一个或更多个或全部。
在实施方式中,该系统是用于在显示器上显示窗口(例如,图形用户接口)的系统,并且可以是合成窗口系统。
在一些实施方式中,这里描述的技术连同另一个帧(或其它输出)缓冲器功率和带宽减小方案(诸如,在一些实施方式中,输出(例如,帧)缓冲器压缩(可能根据期望而有损耗或低损失的))一起使用。
如将由本领域技术人员理解的,至少在一些实施方式中,这里描述的技术基于输出面的至少一个区域是否可能(例如,在下一帧中)变化的确定,来有效决定是否将输出面的至少一个区域写到缓冲器。如果输出面的至少一个区域可能变化,那么可以省略将该区域写到缓冲器的步骤。
由此,这里描述的技术的另外实施方式包括:一种提供输出面的方法,输出面包括一起形成输出面的一个或更多个区域,输出面的各个区域根据一个或更多个输入面的相应区域来生成;该方法包括以下步骤:
当要提供输出面的新版本时,针对输出面的至少一个区域进行如下操作:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;以及
如果输出面的所述至少一个区域的之前生成的版本未存储在缓冲器中,则进行如下操作:
读取要生成输出面的至少一个区域的一个或更多个输入面的相应区域,并且根据一个或更多个输入面的相应区域生成输出面的至少一个区域;
确定输出面的至少一个区域是否可能变化;以及
决定是否基于输出面的至少一个区域是否可能变化的确定而将输出面的至少一个区域写到缓冲器。
另外的实施方式包括一种用于提供输出面的系统,输出面包括一起形成输出面的一个或更多个区域,输出面的各个区域根据一个或更多个输入面的相应区域生成;该系统包括缓冲器和合成显示控制器,并且其中,合成显示控制器被配置为,在要提供输出面的新版本时针对输出面的至少一个区域执行以下步骤:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;以及
如果输出面的至少一个区域的之前生成的版本未存储在缓冲器中,则进行如下操作:
读取要生成输出面的至少一个区域的一个或更多个输入面的相应区域,并且根据一个或更多个输入面的相应区域生成输出面的至少一个区域;
确定输出面的至少一个区域是否可能变化;以及
决定是否基于输出面的至少一个区域是否可能变化的确定而将输出面的至少一个区域写到缓冲器。
例如,如果确定输出面的至少一个区域不大可能变化,那么可以将输出面的至少一个区域写到缓冲器。
另一方面,如果确定输出面的至少一个区域可能变化,那么可以不将输出面的至少一个区域写到缓冲器。
确定输出面的至少一个区域是否可能变化可以包括:确定输出面的至少一个区域多可能变化。
在输出面的至少一个区域的之前生成的版本存储在缓冲器中的情况下,可以执行与这里描述的技术的其它实施方式有关的上述处理。例如,然后可以检查贡献输入面区域针对输出面的至少一个区域的当前和所存储版本是否相同,如果是,则使用输出面的至少一个区域的所存储版本(例如,发送该版本,以便显示)。
这里描述的技术的这些实施方式可以包括上述实施方式的特征中的任意特征。
如将由本领域技术人员理解的,至少在一些实施方式中,这里描述的技术根据哪个合成过程可以更有效,而在在直接组成输出面区域与存储并重新使用输出面区域的之前版本(即,实际上为帧缓冲器合成式布置)之间有效动态地选择。
由此,这里描述的技术的另一个实施方式包括一种提供输出面的方法,输出面包括一起形成输出面的一个或更多个区域,输出面的各个区域根据一个或更多个输入面的相应区域来生成;该方法包括以下步骤:
当要提供输出面的新版本时,针对输出面的至少一个区域进行如下操作:
确定是否重新使用输出面的至少一个区域的之前存储的版本或是否根据一个或更多个输入面的相应区域生成输出面的所述至少一个区域;以及
根据该确定,发送输出面的至少一个区域的之前存储的版本以便使用,或根据一个或更多个输入面的相应区域生成输出面的至少一个区域,并且发送输出面的至少一个区域,以便使用。
这里描述的技术的另一个实施方式包括一种(例如,向显示器,以便显示)提供输出面的合成显示控制器,该合成显示控制器:
生成一起形成输出面的相应输出面区域,输出面的各个区域根据一个或更多个输入面的相应区域来生成;并且
被配置为在要提供输出面的新版本时,针对输出面的至少一个区域执行以下步骤:
确定是否重新使用输出面的至少一个区域的之前存储的版本,或是否根据一个或更多个输入面的相应区域生成输出面的所述至少一个区域;以及
根据该确定,发送输出面的至少一个区域的之前存储的版本以便使用,或根据一个或更多个输入面的相应区域生成输出面的至少一个区域,并且发送输出面的至少一个区域,以便使用。
如将由本领域技术人员理解的,这里描述技术的这些实施方式可以在适当的情况下包括这里描述技术的特征的任意一个或更多个或全部。由此,例如,关于是否应重新使用输出面区域的所存储版本,或是否根据输入面区域生成输出面区域的确定,可以基于输出面区域是否变化的评定。同样地,在生成输出面的至少一个区域的情况下,还可以确定是否存储输出面的至少一个区域,以便(可能的)将来使用。
申请人还意识到,虽然通常期望以这里描述技术的方式执行显示合成,但可以存在如下情况,例如频繁更新输出面的情况、在也不考虑是否将输出面存储在缓冲器中的情况下直接更有效简单地合成输出面(输出帧)的情况。由此,在这里描述技术的实施方式中,可以选择性地停用以这里描述技术的方式进行的操作,并且停用特定情况下的操作,然后根据输入面直接简单地组成输出面。
这可以在满足特定(例如,所选)准则或条件时(诸如在确定需要更频繁地(例如在特定阈值更新率以上)更新输出面(输出帧)时)进行。例如可以通过监测输出面区域变化率,和/或通过计算多少输出面区域从帧到帧变化来确定输出面的更新率,并且在这些值超过特定阈值时,可以(临时)停用以这里描述技术的方式进行的操作(然后,例如在确定输出面的变化率落到特定阈值以下时重新启动)。
申请人还意识到,例如在输出面为用于显示的面(例如,帧)且适合的亮度和/或背光调整用于显示的情况下,可以期望对上述操作的特定修改。在这种布置中,用于要显示的帧的数据值例如可以根据它们随着生成的值而变化,以便例如补偿在显示背光模糊时损失的图像亮度,和/或以便提高在背光模糊时图像的对比。对应的处理可以用于例如增强给定(检测的)周围光照条件的显示图像。
申请人意识到,在为了例如背光模糊补偿的目的而要修改要显示的帧的情况下,那么可以是这样的情况,已显示的帧内的数据位置将被设置(例如,饱和)为相同的、共同的(例如最大)数据值。申请人还意识到,所显示帧内的数据位置值将被设置(例如,饱和)为共同值的了解可以有利地用于修改上述的签名比较过程,以便提高在比较签名时被修改的面区域将被确定为相同的可能性。然后,这可以在使用例如使得数据位置值饱和的背光补偿或另一个过程的情况下,提高识别将在实践中被使得相同的面区域的可能性。
签名生成过程可以被修改为:以任意合适且期望的方式考虑到这里一点。在一个实施方式中,关于所应用的显示修改补偿的信息用于面和/或签名生成过程,以识别将作为显示修改操作的结果而被设置(例如,饱和)为共同值的面区域内的数据位置。然后,这些数据位置在生成讨论中的面区域的签名之前被设置为相同的共同值(例如,饱和的最大值)。然后,这将允许签名比较过程考虑到:在最终的输出帧中,讨论中的数据位置将被设置为单个共同值的事实。
在另一个这种实施方式中,通过使用仅基于所选的各面区域中的数据的最低有效位(LSB)的签名执行签名评估、在使用可以使得输出帧数据位置值被设置为相同的共同值的显示修改操作的情况下,修改签名生成和比较过程。
在这种情况下,对于面区域的各版本比较的签名,将仅使用所选的各面区域中的数据的最低有效位(LSB)(例如,在面数据为RGB888的形式的情况下为R[5:0]、G[5:0]以及B[5:0])来生成。由此,在实施方式中,所比较的签名基于所选的面区域的数据的一组最低有效位。如果这些“LSB”签名然后用于确定面区域间是否存在变化,则效果将是:仿佛在将饱和的数据位置的面数据值已被设置为它们的饱和值的情况下产生签名。
在这种情况下,可以对于该过程的各面区域生成单独的“LSB”签名。
另选地或另外地,在(例如,为了其它目的)需要使用面区域的全部数据的“全”签名(例如,CRC值)的系统中,那么在实施方式中,可以为各面区域提供单个全签名和一个或更多个单独的更小的签名(各签名可以表示来自帧区域数据的特定位组)这两者。
例如,在RGB 888颜色的情况下,除了“全”R[7:0]、G[7:0]、B[7:0]签名之外,还可以提供一个或更多个“更小的”单独签名(例如,基于MSB颜色数据的第一“MSB色”签名(例如,R[7:4]、G[7:4]、B[7:4])、第二“中色”签名(例如,R[3:2]、G[3:2]、B[3:2])以及第三“LSB色”签名(例如,R[2:0]、G[2:0]、B[2:0]))。
在这种情况下,可以生成单独的MSB色、中色以及LSB色签名,然后在需要时,或如果签名生成过程允许,则连结单独的MSB色、中色以及LSB色签名,以形成“全签名”,可以生成然后被划分为各例如MSB色、中色以及LSB色签名的单个“全”色签名。
在这种情况下,中色和LSB色签名例如可以在显示修改生效时用于这里描述技术的操作,而“全”色签名例如可以在不使用显示修改时和为了其它目的而使用。
如上所讨论的,该布置将便于识别在显示修改过程之后相同的面区域,从而节省更多的功率和带宽。这在处理视频以便显示时是特别适用的。
由此,在实施方式中,其中,在输出面是要显示的帧,且显示修改处理的一些形式用于生成要提供给显示器的最终输出帧的情况下,可以基于执行的显示补偿操作修改,来确定面区域是否变化的操作和用于确定面区域是否变化的签名比较过程。可以例如通过仅使用所选数量的面区域数据值的最低有效位生成要比较的签名,或通过基于在生成要对于讨论中的面区域比较的签名之前执行的显示修改操作将讨论中的面区域内的数据位置的数据值设置为共同值,来修改签名生成过程。
在这一点上执行的显示修改操作可以是:可以影响被提供给显示仪以便显示的数据位置的实际数据值的任意合适且适当形式的显示修改,诸如适应亮度和背光调整、亮度补偿、明度补偿、图像补偿、对比增强、直方图均衡化、直方图拉伸、图像增强或用于周围光调节的修改等。
申请人还意识到,这里描述的技术可以扩展到输入面为上面要在生成输出面(例如,输出帧)以便显示时执行显示处理的输入面的情况。显示处理可以包括:例如相对于显示的维数缩放图像、将低分辨率图像放大为更高分辨率的图像或反之、将锐化或平滑算法应用于图像、执行图像增强或合成图像与其它数据(诸如文本或另一个图像等)。再次,如果确定输入面的一个或更多个区域在时间段内不太可能变化,则可以将输出面的(所处理的)一个或更多个区域写到存储器,以便稍后使用。
在这些实施方式中,一个或更多个输入面将是:例如上面执行显示处理以生成作为用于显示的输出帧的输出面的输入帧,并且当要提供新输出面(例如,输出帧)例如以便显示时,针对输出面的至少一个区域,将检查输出面的区域的之前生成的版本是否存储在缓冲器中。如果输出面的区域的之前生成的版本未存储在缓冲器中,则将读取要生成输出面的区域的一个或更多个输入面的相应区域,并且例如通过对一个或更多个输入面的相应区域执行期望的显示处理,根据一个或更多个输入面的相应区域生成输出面的区域的新版本。然后,将发送输出面的区域的新版本,以便使用(例如,发送给显示装置,以便显示)。
还将确定输出面的区域是否可能变化。如果确定输出面的至少一个区域不大可能变化,则将输出面的区域的新版本写到缓冲器,以便可用于将来使用。
这些布置可以使用这里描述技术的特征中的任意一个或更多个或全部。由此,例如,可以以上述方式中的一个来执行输出面的至少一个区域是否可能变化的确定。
在实施方式中,是否将输出面的区域的新版本写到缓冲器以便将来使用,取决于一个或更多个其它因素或准则,诸如要对一个或更多个输入面的相应区域执行以生成输出面区域的处理的类型和/或复杂度,和/或输入和/输出面区域的(相对)特性,诸如它们的(相对)尺寸。
例如,申请人意识到,在一些情况下,输出面区域可以小于它所源于的输入面区域(含有比输入面区域更少的数据)。这可以为,例如缩小输入面区域以生成输出面区域的情况。在这些情况下,鉴于重新使用“更小”输出帧区域的可能性可以提供的潜在带宽和处理节省,所以即使仅期望输出面区域在短时间段内保持不变,保存输出面区域以便将来使用也可以是有利的。
另一方面,如果输出面区域更大(含有比它源于的输入面区域更多的数据)(例如,这可以为放大输入面区域以提供输出面区域的情况),那么因为与取得并处理一个或更多个输入面的相应区域相比,取得输出面的区域的所存储数据可能消耗更多的功率和带宽,所以不期望将输出面的区域的新版本写到缓冲器,而不管输出面的区域是可能变化还是不大可能变化。
由此,在实施方式中,是否将输出面的区域的新版本写到缓冲器的确定,取决于输出面区域和输出面区域源于的输入面区域(鉴于它们含有的数据)的相对尺寸。由此,在一些实施方式中,确定一个或更多个输入面的相应区域是否被缩放为生成输出面的至少一个区域,和/或是否相对于输入面区域压缩输出面区域(或输出面区域具有比输入面区域更高的压缩比)。
在这种实施方式中,如果输出面的区域含有比一个或更多个输入面的相应区域更少的数据(例如,如果一个或更多个输入面的相应区域被缩小为生成输出面区域,和/或如果相对于输入面区域压缩输出面区域(或输出面区域具有比输入面区域更高的压缩比)),则可以将输出面的区域的新版本写到缓冲器,而且发送该版本,以便使用(例如,以便在显示装置上显示)。该布置可以为:使得缩短期望输出面不变,以确定输出面区域不大可能变化(使得输出面区域将存储在缓冲器中)的时段。
另一方面,如果确定输出面的区域含有比一个或更多个输入面的相应区域更少的数据(例如,放大一个或更多个输入面的相应区域,以生成输出面的区域,和/或比输出面区域更压缩),则在不将输出面的区域的新版本写到缓冲器的情况下发送该版本,以便使用。如果确定输出面区域大于输入面区域(比输入面区域含有更多的数据),则可以简单地停用输出面区域存储。
在实施方式中,相对于将输出区域写到缓冲器(和从缓冲器检索输出区域)的功率和处理开销的、用于处理输入帧区域的功率和带宽开销,也可以代替用于影响是否将输出面存储在缓冲器中。这例如可以在不缩放输入面区域以生成输出面区域的情况下是有用的,因为在该情况下,还期望考虑将输出面区域写到缓冲器相对于重新生成输出面区域的功耗要求。
在这些布置中,可以根据期望来实现将输出面区域写到或不写到缓冲器,。例如,系统可以被设置为,使得如果确定输出面区域含有(需要)比输入面区域更多的数据,则可以简单地停用将输出面写到缓冲器。对应地,如果确定输出面区域将含有(需要)比相应输入面区域更少的数据,那么系统可以被配置为总是将输出面区域写到缓冲器。
在实施方式中,输出面区域和输入面区域的相对数据尺寸,用于调整用于确定输出面区域不大可能变化的准则(例如,阈值)。由此,例如,在确定输出面区域含有比它源于的输入面区域更少的数据的情况下,可以减小用于确定输出面区域不大可能变化的阈值(即,使得需要期望输出面区域在更短的时间段内不变,和/或以便触发将输出面区域存储在缓冲器中)。
申请人还意识到,输入面处理和输出面生成的一些形式(诸如在执行显示处理时)可以包括多个处理阶段(即,多个处理阶段,各处理阶段采取输入面,并对于该处理阶段生成相应输出面)。在这种情况下,可以在初始输入面与被提供以便使用(例如,以便显示)的最终输出面之间具有一系列多个处理阶段。
申请人还意识到,例如如果需要且适于将这里描述的技术的布置应用于各这种处理阶段,则通常可以这样做。因此,在这种情况下,可以是如下的情况:要处理的整体输出面的中间版本将保存在缓冲器中,以便将来重新使用。那么,如果该中间处理阶段的面区域的之前存储的版本已存储在缓冲器中,则这将允许例如省略该中间阶段的处理。
由此,在实施方式中,以这里描述的技术的方式进行的操作,应用于一系列面(例如,帧)处理阶段的中间处理阶段。因此,在这种情况下,输出面可以是讨论中的处理阶段的输出面(而不是例如要向显示器提供的最终输出面),并且输入面将是讨论中的处理阶段的相应输入面(由此,再次不需要为初始的“原始”输入面)。
因此,在这种情况下,可以存在操作以生成最终输出面(例如,输出帧)的多个处理阶段,并且这些处理阶段中的一个或更多个(并且在实施方式中为这些处理阶段中的多个)将具有关联的缓冲器并以这里描述的技术的方式来操作,以将它们各自的输出面的区域存储在它们各自的缓冲器中(如果确定适合这样做)。
将可以把这里描述的技术的方法用于多个处理阶段中的一个或多于一个。这可以取决于例如将这里描述的技术的方法用于讨论中的处理阶段是否是有利的。例如,以这里描述的技术的方法进行的操作可以用于(在实施方式中是)已知处理阶段的输出面可能含有比处理阶段的输入更少的数据的处理阶段,但无法用于已知处理阶段的输出将可能含有比处理阶段的输入面更多的数据的那些处理阶段。例如,可以是中间处理阶段将产生具有良好压缩特性(例如,在应用锐化之前)的输出的情况,因此盼望将该处理阶段的输出(而不是最终输出面(或除了最终输出面之外))存储在缓冲器中以便将来使用可以是有利的。
这些布置可以使用这里描述技术的特征的任意或全部。由此,例如,是否存储中间处理阶段的输出面的区域的确定(例如),可以取决于输入和输出面的相对尺寸(数据量)和例如任意缩放或压缩是否应用于输入面,以在讨论中的处理阶段处产生输出面。
在发送以便使用(例如,向显示装置发送以便显示)之前压缩的输出面的情况下,申请人意识到,如果输出面不大可能变化,则可以期望将所压缩的输出面写到缓冲器,以便重新使用。如果形成输出面区域的一个或更多个输入面的对应区域在一个或更多个周期内不大可能变化,则代替将输出面写到缓冲器,或除了将输出面区域写到缓冲器之外,可以写入输出面区域的压缩版本,使得可以减小带宽和存储器使用,并且可以直接重现使用(例如,发送给显示器)压缩的输出面区域,借此可以减小压缩输出面区域所需的处理量。
由此,在实施方式中,输出面的至少一个区域的新版本和/或之前生成的版本(或这两者)是:输出面的区域的压缩版本。对应的,在实施方式中,作为将输出面的区域写到存储器的另选方案,或除了将输出面的区域写到存储器之外,存储输出面区域的压缩版本,以便(潜在的)重新使用。通过写入输出面区域的压缩版本,可以减小带宽和存储器使用,并且通过从存储器取得并重新使用已压缩的版本,可以减小压缩输出面区域所需的处理量。
可以使用这里描述的技术的特征的任意或全部,来执行是否存储(然后重新使用)输出面的区域的压缩版本的确定。例如,相应区域可以是上面处理操作运行的块,并且可以以上述的方式中的一个(例如,通过比较表示讨论中的区域的内容的签名)来进行区域是否可能变化的确定。
在使用(例如,沿着输出面的栅格行应用的)基于行的压缩算法(例如,显示流压缩(DSC))的情况下,考虑的输出面的区域可以是行(例如,尺寸上为32x 1采样位置),并且可以对应于栅格行或栅格行的一部分,并且该行(或行部分)的签名可以用于比较区域的目的。在要压缩的输出面的例如栅格行包括至少第一部分和第二部分的实施方式中,当向显示器发送行的数据时,如果要在第二部分之前读取行的第一部分,如果确定了仅行的第一部分未变化,而确定了行的第二部分已变化,则可以从缓冲器取得压缩的第一部分,并直接向显示器发送,并且仅变化的第二部分需要在发送之前进行压缩。
在该布置中,压缩输出面的“最终”(例如,要显示的)版本,因此可以在压缩输出面区域(并且在适当情况下,输出面区域存储在缓冲器中)之前进行输入面形成输出面的任意合成。
在根据多个输入面生成输出面的情况下,可以以不同的频率来更新多个输入面的不同输入面。因此,虽然,多个输入面中的一个或更多个输出面的对应区域在若干周期内不大可能变化,但在输出面的区域被确定为可能变化时,最终输出面的区域是否可能变化的确定可以产生许多影响。因此,申请人意识到,这里描述的技术的布置还可以在根据多个输入面生成输出面的情况下,经常应用于多个输入面的子集或整组。
由此,作为评定根据对整体最终输出面有贡献的全部输入面的相应区域生成的整体“最终”输出面是否可能变化(该可能性由最频繁变化的输入面来确定)的另选方案,或除了评定根据对整体最终输出面有贡献的全部输入面的相应区域生成的整体“最终”输出面是否可能变化之外,可以代替确定最终输出面是否可能变化或除了确定最终输出面是否可能变化之外,评定根据对整体最终输出面区域有贡献的输入面的子集的相应区域生成的中间输出面区域。通过考虑作为一个或更多个子集一起生成最终输出面的多个输入面,提高识别输入面的未变化区域的可能性,并且通过将最终输出面的一个或更多个中间输出面写到存储器并在生成随后的整体最终输出面时重新使用它们,可以减少读取事务量和处理量。
由此,在形成的输出面将为根据要用于形成(例如,讨论中的处理阶段的,和/或整体输出面生成过程的)整体最终输出面的输入面的子集形成的中间输出面的这种情况下(并且如果确定中间输出面区域不大可能变化,中间输出面区域将写到缓冲器),发送中间输出面的至少一个区域的新版本以便使用的步骤将包括:发送该输出面区域,以便与一个或更多个其它输入面区域合成。
对应地,在实施方式中,在要根据一组多个输入面的相应区域生成整体最终输出面的情况下,这里描述技术的方法包括(并且这里描述技术的系统被配置为),当要提供整体最终输出面的新版本时,针对输出面的至少一个区域进行如下操作:
读取要生成输出面的一组多个输入面的子集的要生成输出面区域的相应区域;
确定输入面的子集的相应区域是否可能变化;以及
如果确定输入面的子集的相应区域不大可能变化,
则根据输入面的子集的输入面的相应区域生成中间输出面区域;以及
将中间输出面区域写到缓冲器。
类似地,这里描述技术的另一个实施方式包括一种提供输出面的方法,输出面包括一起形成输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成输出面的相应区域,该方法包括以下步骤:
当要提供输出面的新版本时,针对输出面的至少一个区域进行如下操作:
读取要生成输出面的一组多个输入面的子集的要生成输出面区域的相应区域;
确定输入面的子集的相应区域是否可能变化;以及
如果确定输入面的子集的相应区域不大可能变化,
则根据输入面的子集的输入面的相应区域生成中间输出面区域;以及
将中间输出面区域写到缓冲器。
这里描述技术的另一个实施方式包括一种提供输出面的系统,输出面包括一起形成输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成输出面的相应区域,该系统包括:
缓冲器;以及
合成显示控制器;
并且其中,合成显示控制器被配置为在要提供输出面的新版本时,针对输出面的至少一个区域执行以下步骤:
读取要生成输出面的一组多个输入面的子集的要生成输出面区域的相应区域;
确定输入面的子集的相应区域是否可能变化;以及
如果确定输入面的子集的相应区域不大可能变化,
则根据输入面的子集的输入面的相应区域生成中间输出面区域;以及
将中间输出面区域写到缓冲器。
如本领域技术人员将理解的,这里描述技术的这些实施方式在适当的情况下可以包括这里描述特征中的任意一个或更多个或全部。
这里描述技术的这些实施方式还可以包括,在要提供整体最终输出面的新版本时,针对输出面的至少一个区域进行如下操作:
检查输出面的至少一个区域的之前生成的中间输出面区域是否存储在缓冲器中;并且
如果之前生成的中间输出面区域存储在缓冲器中:
则确定生成中间输出面区域的各多个输入面的各子集的相应区域是否变化;
并且如果确定多个输入面的各子集的相应区域未变化,则进行如下操作:从缓冲器读取之前生成的中间输出面区域,并且使用之前生成的中间输出面区域来生成(并存储)整体最终输出面区域的新版本。
可以根据读取的、之前生成且存储的中间输出面区域,和来自不是用于生成中间输出面区域的子集的一部分的、对整体最终输出面区域有贡献的输入面的任何剩余输入面区域,来生成“最终”输出面区域的新版本。例如,输出面可以由三个输入面组成,并且可以根据包括第一和第二输入面的子集来生成中间输出面区域,然后通过将来自第三输入面的相关区域与根据第一和第二输入面生成的中间输出面区域合成,来生成“最终”输出面区域。
在这种情况下,可以不需要生成中间输出面区域的新版本(不重新生成中间输出面区域)。
可以是如下情况:例如当整体输出面区域很少变化时,多个输入面的子集的相应区域相对于整体输出面区域比剩余输入面区域甚至更不频繁地变化。由此,在一些实施方式中,可以期望存储整体输出面区域的之前生成的版本以及整体输出面区域的一个或更多个中间输出面区域。这些实施方式还可以包括如下操作:
检查输出面的至少一个区域的之前生成的版本是否存储在缓冲器中;以及
如果之前生成的中间输出面区域和输出面的至少一个区域的之前生成的版本这两者存储在缓冲器中,则进行如下操作:
确定生成输出面的至少一个区域的之前生成的版本的多个输入面的相应区域是否变化,
如果确定生成输出面的至少一个区域的之前生成的版本的多个输入面的相应区域未变化,则使用输出面的至少一个区域的之前生成的版本作为输出面区域的新版本。然后,可以不使用存储在缓冲器中的任何之前生成的中间输出面区域(即使在生成相应中间输出面区域的多个输入面的各子集的相应区域未变化时)。
在这种情况下,只要可能,整体输出面区域的之前生成的版本被选择,并可以用作输出面区域的新版本。然后,如果没有发现整体输出面区域的之前生成的版本,或者确定生成整体输出面区域的之前生成的版本的多个输入面的相应区域变化,则可以选择一个或更多个之前生成的中间输出面区域,以生成输出面区域的新版本。
这些过程可以对于整体最终输出面被划分成的相应区域(例如,块)重复。
这里描述技术的这些实施方式开发了这样的事实:在根据多个输入面的相应区域生成输出面区域的情况下,发现不大可能变化的多个输入面(子集)中的一些的可能性,与找到不大可能变化的多个输入面中全部相比更高,从而提高通过合成可以重新使用的多个输入面形成的面区域的可能性。
这些实施方式适用存在如下情况:将用于形成给定整体输出面(对给定整体输出面有贡献)的多个(例如,三个或更多个)输入面。可以存在(在实施方式中是)可以生成中间输出面区域的多个输入面的多于一个子集。输入面的各子集可以包括多个输入面中的两个或更多个,但不是全部。当可以考虑多个输入面的多于一个子集时,那么可以以该方式处理各这种子集。
可以以任意合适且期望的方式来进行将输入面分组成一个或更多个子集中。例如,被认为从一个周期(整体输出面的版本)到下一周期不大可能变化的多个输入面可以被分组在一起,以形成子集。在一些实施方式中,(例如,基于各内容和/或更新率)被确定为(可能)以相同或类似频率变化的输入面可以被分组在同一子集中。然而,这不是必要的。对于一个(最终)输出面将输入面分组到子集中,不需要与对于另一个(最终)输出面将输入面分组到子集中相同。在实施方式中,各子集仅含有在合成层(深度(Z)级)中相邻的输入面。
在实施方式中,对于根据输入面的子集生成的中间输出面区域生成并存储元数据。该元数据可以指示所存储中间输出面区域是否是有效以便使用,和/或指示输入面中的哪一个用于讨论中的中间输出面(处于讨论中的输入面的子集中)。元数据根据期望可以是每区域的,或者可以是多个区域共用的。
在实施方式中,元数据被设置为,指示中间输出面区域在确定对所存储中间输入面区域有贡献的多个输入面的子集的相应区域未变化时是有效的;并且元数据被设置为,指示在确定对所存储中间输入面区域有贡献的多个输入面的子集的相应区域变化时是无效的。
在实施方式中,除了执行关于根据多个输入面中的全部(相应区域)生成的输出面(区域)的整体最终版本的对应操作之外,还执行如下布置,其中根据用于生成整体最终输出面的多个输入面的子集的相应区域生成的中间输出面区域被考虑且写到缓冲器。这可以在例如多个输入面中的一个比剩余多个输入面更频繁变化的情况下是有用的。在这种情况下,可以在一个输入面的区域变化,但剩余多个输入面的子集的区域未变化的周期内,重新使用中间输出面区域,而可以在多个输入面区域中没有一个变化的内重新使用输出面区域的全版本。
这些布置再次可以使用这里描述技术的特征中的任意或全部。由此,例如,相应区域可以是上面处理操作运行的块,并且可以以上面讨论的方式中的一个,来进行区域是否可能变化的确定等。
可以在任意适当的系统(诸如适当构造的基于微处理器的系统)中来实施这里描述的技术。在一些实施方式中,在计算机和/或基于微处理器的系统中实施这里描述的技术。
可以以任意期望且合适的方式执行这里描述技术的各种功能。例如,这里描述技术的功能可以在硬件或软件中实现(根据期望)。由此,例如,这里描述技术的各种功能元件和“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器布置等,它们可操作以执行各种功能等,诸如适当专用硬件元件(处理电路),和/或可以被编程以以期望方式操作的可编程硬件元件(处理电路)。类似地,上面要显示窗口的显示器可以是任意适当的这种显示器,诸如电子装置的显示屏、计算机的监视器等。
这里还应当注意的是,如本领域技术人员将理解的,可以在给定处理器上重复和/或并行执行这里描述技术的各种功能等。同样地,各种处理阶段可以共享处理电路等(如果需要)。
这里描述技术可适用于任意合适形式或构造的图形处理系统、渲染器以及合成显示控制器(诸如具有“流水线化”渲染布置的处理器(在这种情况下,渲染器将为渲染流水线的形式))。这里描述技术特别适用于基于块的图形处理器、图形处理系统、合成引擎、合成形式控制器以及视频引擎。
本领域技术人员还将理解,这里描述技术的所述实施方式的全部可以酌情包括这里描述的特征中的任意一个或更多个或全部。
根据这里描述技术的方法至少部分地可以使用软件(例如,计算机程序)实现。由此将看到的是,当从另外的实施方式看时,这里描述的技术提供:计算机软件,当安装在数据处理器上时该计算机软件专门适用于执行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码,当程序在数据处理系统上运行时该代码适用于执行这里描述的方法的所有步骤。数据处理系统可以是微处理器系统、可编程FPGA(场可编程门阵列)等。
这里描述的技术还扩展到计算机软件载体,该计算机软件载体包括如下软件,当用于操作图形处理器、渲染器、合成显示控制器或包括数据处理器的其它系统时,该软件与所述数据处理器结合使所述处理器、渲染器、控制器或系统执行这里描述技术的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存或盘,或可以是信号,诸如电线上的电信号、光信号或无线电信号,诸如卫星等。
还将进一步理解的是,不是这里描述技术的方法的所有步骤都需要由计算机软件执行,并且由此根据更宽实施方式,这里描述的技术提供了计算机软件,并且这种软件安装在计算机软件载体上,用于执行这里阐述的方法的步骤中的至少一个。
这里描述的技术可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、非暂时介质上,诸如计算机可读介质,例如,磁盘、CD ROM、ROM、RAM、闪存或硬盘。还可以包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其它传输技术),这些指令经由调制解调器或其它接口装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
本领域技术人员将理解这种计算机可读指令可以以多种编程语言来编写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统ROM或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。
现在将描述合成窗口系统(即,要显示在例如图形用户接口的显示器上的窗口的内容首先被汲取到“离屏(off-screen)”存储缓冲器(窗口缓冲器)中,然后被组合(合成)以便显示)形式的这里描述技术的实施方式。
在这种情况下,输入面将为要显示的输入窗口,并且输出面将是最终的输出合成输出窗口(帧)。如技术领域中已知的,合成过程在合成输入面以便显示时可以使用阿尔法混合、转换或其它技术等,而不是直接拷贝。
图5是例示了根据这里描述技术的实施方式的合成系统的示意图。与上述图2和图4中所示的直接和帧缓冲器合成系统相同,该系统包括CPU 10、GPU 11以及存储控制器14,CPU 10、GPU 11以及存储控制器14经由互连件13通信。存储控制器14还接入片外存储器15。
另外,与上述系统相反,本实施方式的系统包括“增强的”合成显示控制器20,该合成显示控制器20被设置为根据这里描述技术的实施方式执行合成过程,并且将合成的输出面发送到显示器(未示出)上,以便显示。
图6、图7以及图8例示了这里描述技术的实施方式中的合成显示控制器20的基本操作。图9和图10然后更详细地示出了合成显示控制器20的操作的两个实施方式。
图6示出了合成显示控制器20的操作的综述。
如图6所示,输入面1a-c由合成显示控制器20读取,该合成显示控制器20还接入片外存储器15中的缓冲器25中所存储的所存储合成输出面22(如果之前合成的输出面已存储在缓冲器中)。基于这些输入面1a-c以及缓冲器中的所存储合成输出面22(如果已存储),合成显示控制器20然后执行根据这里描述技术的实施方式的过程,并发送合成的输出面,以便显示。
图7示意性示出了用于生成输出面23(该输出面例如可以是,用于向用户显示的输出窗口(帧))两个输入面1a、1b的使用(该两个输入面例如可以是生成以便在合成窗口系统中显示的应用窗口)。输入面1a、1b例如可以由GPU来生成(渲染),并存储在缓冲器中,以便在合成输出窗口以便显示时使用。
如图7所示,各输入和输出面各被划分为多个相应区域21、24。在本实施方式中,输入面区域21对应于渲染相应输入面的图形处理器生成的各渲染块,并且输出面区域24对应于合成显示控制器20产生的输出面23的各块。如果需要,则可以使用面区域的其它布置和构造。
如可以从图7看到的,在该实施方式中,假定输入面1a和1b的区域与要显示这些区域的输出面23的对应区域之间是1:1映射。当然,其它布置将是可以的。
在合成显示控制器20的操作中,当(例如因为需要更新显示器而)需要输出面23的新版本时,输出面23的新版本由一个区域24一次生成,相应输出面区域24由合成显示控制器20根据对该输出面区域有贡献的相应输入面区域21生成,或者从缓冲器25读取,然后发送到显示器,以便显示。同样地,当由合成显示控制器20根据相应输入面区域生成输出面23的区域的新版本时,也确定是否将新生成的输出面区域24存储在存储输出面区域的缓冲器25中。
为了便于该操作,维护指示哪个输出面区域24当前具有存储在输出面缓冲器25中的有效版本的、呈元数据或一个或更多个签名形式的记录。该元数据或一个或更多个签名例如可以包括:指示哪些输出面区域当前具有存储在输出面区域25中的有效版本的位图。然后,合成显示控制器20在需要输出面区域的新版本时,查阅该元数据或一个或更多个签名,以确定是否存在存储在输出缓冲器25中的输出面区域的有效版本(因此,该版本然后可以潜在地用于输出面区域的新版本)。
如果在需要输出面区域的新版本时,合成显示控制器20确定输出面区域的有效之前版本未存储在输出面缓冲器25中,那么合成显示控制器20根据适当的贡献输入面区域21来生成讨论中的输出面区域24的新版本。合成显示控制器20然后向显示器发送这样生成的输出面区域,以便显示。
合成显示控制器20还确定新生成的输出面区域24是否应存储在存储输出面区域的缓冲器25中。
为此,合成显示控制器20确定讨论中的输出面区域24在不久的将来是否可能变化。这通过考虑表示输出面区域的内容和/或表示输出面区域的贡献输入面区域的内容的签名来进行。下面将更详细地讨论该过程。
如果确定输出面区域24在不久的将来不大可能变化,那么除了向显示器发送生成的输出面区域之外,还将该区域写到(存储在)输出面缓冲器25中。然而,如果确定输出面区域在不久的将来可能变化,那么简单地发送输出面区域,以便显示,也不将该区域存储在输出帧缓冲器25中。
如果需要,则还可以存储指示哪个输入面和输入面区域用于生成输出面区域的数据。
另一方面,如果确定存在以存储在输出面缓冲器25中的输出面区域的潜在有效的版本,那么考虑输出面区域的该所存储版本是否可以重新用于输出面的新版本。为此,合成显示控制器20确定:对输出面区域有贡献的输入面区域,是否因为生成存储在输出面缓冲器25中的输出面区域的版本而变化。该过程再次使用表示输入面区域的当前版本和输入面区域的之前版本的内容的签名。
如果确定了输出面区域不大可能因为生成存储在输出面缓冲器25中的输出面区域的版本而变化,那么合成显示控制器20从输出面缓冲器25读取输出面区域的所存储版本,并且向显示器发送该版本,以便显示。另一方面,如果确定输出面区域可能根据存储在输出面缓冲器25中的输出面区域的版本而变化,那么合成显示控制器20从各贡献输入面区域生成输出面区域的新版本,并发送该生成的输出面区域,以便显示,而不将该区域存储在输出面缓冲器25中。
图7示出了该操作的示例。假定一些输入面块21a(着色块)由于输入面1a和1b的之前版本而未变化,但其它输入面块(未着色块)变化。对应地,假定在输出帧23中,仅根据在输入面1a和1b这两者中未变化的块生成的块24a也在输出面23中未变化。用着色来指示这些未变化的输出块24a。
如图7所示,仅未变化的输出块24a存储在输出帧缓冲器25中,以便(潜在的)将来使用。因为之前帧而变化的剩余(未着色)输出块未存储在输出帧缓冲器25中。
如上面所讨论的,各种形式的元数据和指示签名的面区域内容以及表示面区域本身的数据,存储并用于本实施方式中。该数据例如可以全部存储在线外存储器15中。当然,如果需要,其它布置将是可以的。
图8例示了根据这里描述技术的实施方式的、该数据的一些,和该数据的一些可以如何存储在存储器中。
如图8所示且如上所讨论的,相应输入面1a、2b与表示相应输入面区域(块)21的内容的签名组30a和30b关联。表示输入面1a、1b、的各个块(区域21)的数据32a、32b连同表示相应输入面区域的(块)的内容的签名组33a和33b一起,存储在存储器31中。
对应地,连同指示对于哪些合成输出块输出块的“有效”版本存储在输出帧缓冲器25中的、对应组的元数据35一起,来存储已存储在输出面缓冲器25中的、表示合成输出面23的块24的一组数据34。除了该元数据之外,表示签名(各签名用于相应输出面块(是否存储在缓冲器25中))的一组内容,也可以被存储为便于确定输出面区域是否变化。同样地,如果需要,并且如下面将进一步讨论的,可以存储指示哪些输入面的哪些区域用于生成各个输出面区域的当前版本的元数据。
另选地,一组元数据35包括对应于各合成的输出块的签名值。如果输出块的签名值为特定(否则没有使用)的值(诸如“0”或“-999”),那么这指示未存储输出块的有效版本。所有其它签名值将指示存储输出块的有效版本。
图9和图10更详细地示出了合成输出帧,以便显示时合成显示控制器20的操作的实施方式。图9和图10这两者示出了需要相应输出面区域以便显示时的阶段处的过程。
在图9中所示的实施方式中,在步骤40处,合成显示控制器20首先确定正处理的输出面的块的元数据或签名是否为高的(即,合成的输出块的之前版本是否存储在输出帧缓冲器25中)。
如果正处理的块的元数据不是的高(即,不存在存储在缓冲器25中的输出面块的“有效”)版本,则合成显示控制器20在步骤41读取将对该输出面块有贡献,并生成合成的输出块的输入面块。然后,合成显示控制器20在步骤44处确定:这些输入面块的指示签名的内容,对于之前的n个帧(其中,n为1-60范围内的整数)相同。这有效地给出了,组成输出面块的输入面块近来是否变化(由此输出面块近来是否变化)的测量。
如果所有输入面块的输入面块签名对于之前n个帧相同,则这被采取为,指示输出面块在下一帧中不大可能变化(因为它最近n帧未变化),因此在步骤45处,将合成的输出块写到缓冲器25,并且将输出面块的元数据设置为高(以指示“有效”合成输出块写到缓冲器25)。然后在步骤46处,向显示器发送合成的输出块。
另一方面,如果发现贡献输入面块中的任意一个的输入面块签名对于之前的n个帧不相同,则这被采取为,指示输出面块在下一帧中可能变化(因为它在最近n帧期间的某一时间变化),因此在步骤46处,向显示器发送合成的输出块,不再将该输出块写到输出面缓冲器25。
在处理的输出面的元数据已经是高的情况下(即,合成输出块的“有效”之前版本存储在缓冲器中),合成显示控制器20在步骤47处确定:将对输出面块有贡献的输入面块的签名是否因为块的之前版本而变化。
如果输入面块的签名变化(即,指示输入面块因为生成输出面块的所存储版本而变化),则在步骤48处,将输出面块的元数据设置为低,以指示合成的输出块的“有效”之前版本未存储在缓冲器25中。然后,在步骤49处,合成显示控制器20读取输入面块,并生成合成的输出面块,然后在步骤46处,向显示器发送该合成块。
另一方面,如果在步骤47处确定了输入面块的签名未变化,那么在步骤51处,从缓冲器25简单地读取合成的输出块,然后在步骤46处,向显示器发送该输出块。
由此,在没有已存储在缓冲器25中的合成输出块的情况下,合成显示控制器20(基于输出块近来是否变化)而确定输出块是否可能变化,并且如果输出块不大可能变化,则在向显示器发送合成的输出块之前,将输出块存储在缓冲器25中。另一方面,如果输出块可能变化,则在不将输出块存储在缓冲器25中的情况下,向显示器简单地发送输出块。
另一方面,在存在已存储在缓冲器25中的合成输出块的情况下,那么合成显示控制器20确定输入块是否变化,并且如果输入块未变化,则在向显示器发送存储在缓冲器25中的输出块(重新使用)。如果输入块变化,那么生成新的合成输出块,并向显示器发送该输出块(不将该输出块存储在缓冲器25中)。
图10例示了由合成显示控制器20执行的过程的另选实施方式。该过程类似于图9的过程,除了步骤44用步骤42和43来替换之外,并且另外的步骤50添加在步骤49与步骤46之间。
在图9的实施方式中,在步骤44处(该步骤在合成的输出块的“有效”之前版本未存储在缓冲器25中的情况下执行),合成显示控制器20确定输入面块的内容指示签名对于之前的n个帧是否相同。与此相反,在图10的实施方式中,在步骤42处,对合成的输出块生成内容指示签名,并将该签名写到存储器,并且在步骤43处,合成显示控制器20确定合成的输出块的签名(不是输入面块的签名)对于之前的n个帧是否相同。结果实际上相同(即,为输出面块近来是否变化的指示),但在存在多于一个或实际上许多输入块的情况下,虽然该过程包括生成并写入合成的输出块的签名的另外步骤,但该过程产生需要比较的更少签名。
在步骤49与步骤46之间(即,在合成输出块的之前所显示版本存储在缓冲器25,但输入面块的签名变化的情况下)执行的另外步骤50与步骤42相同,即,对于合成的输出块生成内容指示签名,并将该签名写到存储器。这意味着,在该实施方式中,每当生成输出块时,也生成该输出块的签名,并且将签名写到存储器,使得需要时可以在步骤43处检查并比较签名。
由此,图10中所述的过程类似于图9的过程,但在一些步骤中,不是输入块的签名与之前版本进行比较,而是合成输出块的签名与之前的版本比较。
如上所讨论的,这里描述技术的实施方式将表示各输入(或输入和输出)面块(区域)的内容的签名用于确定这些块是否变化。图11示意性地示出了用于生成面块内容指示签名的示例性布置。当然,其它布置将是可以的。
在本实施方式中,该过程使用签名生成硬件单元65。签名生成硬件单元65操作以对于各块生成表示块的内容的签名。
如图11所示,块数据由签名生成硬件单元65例如从图形处理器(在输入面区域的情况下),或从合成显示控制器20(在输出面区域的情况下)接收,并且传递到在签名生成过程发生时临时存储块数据的缓冲器71和签名生成器70这两者。
签名生成器70操作以对于块生成需要的签名。在本实施方式中,签名呈用于块的32位CRC的形式。
如果需要,则还可以或代替使用其它签名生成该功能以及其它形式的签名,诸如哈希函数等。例如,还可以生成用于RGBA块的单个签名,或用于各颜色面的独立签名。类似地,可以执行颜色转换,并且对于Y、U以及V生成单独的签名。为了降低功耗,如果需要,则可以(例如,使用希尔伯特(Hilbert)曲线)记录由签名生成器70处理的块数据。
一旦生成新块的签名,则如上所述在写控制器14的控制下,将该签名存储在与存储器15中的、讨论中的面的版本关联的每块签名缓冲器中。对应的块数据也存储在存储器15中的适当缓冲器中,和/或向显示器发送,以便显示。
如上所讨论的,本实施方式可以包括:确定表示对输出面区域有贡献的输入面区域的内容的签名是否在之前的n个输出帧中变化。
为此,首先确定哪些输入面区域对讨论中的输出面区域(块)有贡献。
哪些输入面区域对给定输出面区域有贡献的确定的步骤是基于例如用于根据输入面生成输出面区域的过程(例如,算法)(因为例如窗口合成过程通常指定哪些输入面区域(以及如何)应用于生成给定的输出面区域)。
另选地,可以维持对各个输出面区域有贡献的输入面区域的记录(例如,元数据)。
在本实施方式中,仅(针对输出面区域的)可视的输入面区域被认为对输出面区域有贡献,并且进行比较(因为一些输入面可能“显示”在不透明的其它输入面后面)。
一旦确定了将对给定输出面区域有贡献的输入面区域,那么确定这些输入面区域中的任意区域是否因为最后生成输出面区域而变化。
如上所讨论的,在本实施方式中,这通过如下方式来进行:比较表示用于生成讨论中的输出面区域的输入面区域的版本的内容的签名,以观察签名(由此输入面区域)是否变化。
虽然凭借对给定输出面区域的处理的特定参考来描述上述实施方式,但如将理解的,将对于需要的相应输出面区域重复本实施方式的过程。输出面区域可以根据期望依次或并行处理(并且,例如依赖合成显示控制器20的处理能力)。
本实施方式的操作也将在每当要生成输出帧的新版本时,随着生成输出帧的新版本而对应地重复。
在实施方式中,当要根据输入面生成输出面的新版本(例如,新输出帧)时,首先确定是否转换贡献输入面中的任意一个。如果在输出面的版本之间(例如,在输出帧之间)转换输入面的任意一个(例如,调整尺寸、移动、旋转、向前移动或向后移动等),那么根据输入面简单地作为整体重新生成输出面(即,重新生成输出面的所有区域)。
同样地,如果输出面区域对于所选的阈值数量的输出面版本(例如,输出帧)未变化,则可以重新生成输出面区域,不管输出面区域是否变化。为了便于这一点,如果需要,则存储计算输出面区域未变化的输出面的版本(例如,新帧)的数量的饱和计数器。这可以有助于确保错误的签名匹配不引起错误的输出延长的时间段。
如本领域中技术人员将理解的,当要生成输出面的初始(第一)版本(例如,要生成输出帧序列中的第一帧)时,那么该过程可以简单地生成输出帧,而不再将输出面区域中的任何一个存储在缓冲器中。然后,当要生成输出帧(面)的下一版本时,该过程将再次逐区域地生成输出帧的该版本,但将对例如新输出面区域与之前的输出面区域进行比较,并且将任意未变化的输出面区域存储在输出面缓冲器中,因此更新输出面区域元数据或签名(例如,位图)。然后,对于输出帧的下一版本,可以执行以本实施方式的方式进行的操作(即,合成显示控制器可以例如读取元数据或签名,确定是否重新使用输出面区域的所存储版本(如果有的话),并且需要时重新生成输出面区域。)
申请人还意识到,在输出面为用于显示的帧的情况下,可以期望对上述操作的特定修改,并且将影响向显示器提供以便显示的数据位置的数据值的显示修改处理的一些形式(诸如适应亮度和背光调整、亮度补偿、明度补偿、图像补偿、对比增强、直方图均衡化、直方图拉伸、图像增强或用于周围光调节的修改等)用于生成向显示器提供的最终输出帧。
在这种情况下,可以基于执行的显示补偿操作,来修改用于确定面区域是否变化的签名比较过程。为此,可以通过仅使用所选数量的面区域数据值的最低有效位生成要比较的签名,或通过基于在生成要对于讨论中的面区域比较的签名之前执行的显示修改操作、将讨论中的面区域内的数据位置的数据值设置为共同值,来修改签名生成过程。
然后,这可以在使用使得数据位置值饱和的背光补偿或另一个类似过程的情况下,提高识别将在实践中被使得相同的区域的可能性。
在前者的情况下,与所应用的显示修改补偿的有关信息用于输入面和/或签名生成过程,以识别将作为显示修改操作的结果而被设置(例如,饱和)为共同值的面区域内的数据位置。然后,这些数据位置在生成讨论中的面区域的签名之前,被设置为相同的共同值(例如,饱和的最大值)。
在后者的情况下,将仅使用所选的各帧区域中的数据的最低有效位(LSB)(例如,在帧数据为RGB888的形式的情况下,为R[5:0]、G[5:0]以及B[5:0]),来生成针对帧区域的各版本进行比较的签名。
还可以为这样的情况:为了其它目的,期望还具有输入帧块的“全”内容指示签名。在这种情况下,例如可以生成两组的签名,一个“全”签名和另一个用于比较过程的“缩减的”签名。另选地,颜色的部分可以被分割为:生成各单独的签名诸如MSB颜色的第一签名(例如,R[7:4]、G[7:4]、B[7:4])、第二“中色”签名(例如,R[3:2]、G[3:2]、B[3:2])、以及第三LSB色签名(例如,R[1:0]、G[1:0]、B[1:0]),例如,各“部分”签名(例如LSB色签名)用于比较过程,然后连结各“部分”签名,以在需要的情况下提供块的“全”内容指示签名。当然,其它布置将是可以的。
因此,在这些布置中,该过程例如将操作以取得要显示的帧缓冲器,解压缩该帧,生成适当的帧直方图,并根据直方图确定要用于(给定(可接受)失真等级)的背光调整和亮度补偿。然后,可以提高显示帧明度,并因此设置背光等级(例如,以用于讨论中的背光调整和亮度补偿操作的正常样式),但然后除了这一点之外,可以向例如合成处理(向合成引擎),和/或向签名比较过程提供明度补偿等级。
然后,这样提供的明度补偿等级将用于例如对输入面区域补偿过程做贡献,例如以选择要使用的签名比较布置(由此,例如,图9中的步骤47将被修改为,包括根据使用的明度补偿等级来选择要比较的签名的步骤)。
当然,其它布置将是可以的。
在实施方式中,是否将输出面的区域的新版本写到缓冲器以便将来使用,取决于一个或更多个其它因素或准则,诸如要对一个或更多个输入面的相应区域执行以生成输出面区域的处理的类型和/或复杂度,和/或输入和/输出面区域的(相对)特性,诸如它们的(相对)数据尺寸。
由此,在实施方式中,是否将输出面的区域的新版本写到缓冲器的确定的步骤,取决于输出面区域和输出面区域源于的输入面区域(鉴于它们含有的数据)的相对尺寸,例如,一个或更多个输入面的相应区域是否被缩放以生成输出面区域,和/或输出面区域是否比输入面区域更压缩和/或具有比输入面区域更高的压缩比。
在实施方式中,如果输出面的区域含有比一个或更多个输入面的相应区域更少的数据,则将输出面的区域的新版本写到缓冲器,而且发送该版本,以便使用(例如,以便在显示装置上显示),但如果输出面的区域含有比一个或更多个输入面的相应区域更多的数据,则在不将输出面的区域的新版本写到缓冲器的情况下发送该版本,以便使用。
相对于将输出区域写到缓冲器(和从缓冲器检索输出区域)的功率和处理开销的、用于处理输入帧区域的功率和带宽开销,也可以用于影响是否将输出面存储在缓冲器中。
本实施方式的布置可以同样地应用于输入面处理和输出面生成的形式,该形式包括多个处理阶段(例如,各处理阶段采取输入面或输出面,并对于该处理阶段生成相应输出面)。在这种情况下,可以在初始输入面与被提供以便使用(例如,以便显示)的最终输出面之间,具有一系列多个处理阶段。
在这种情况下,操作以生成最终输出面(例如,输出帧)的多个处理阶段中的一个或更多个,可以具有关联的缓冲器并以本实施方式的方式操作,以将它们各自的输出面的区域存储在它们各自的缓冲器中(当确定适合这样做时)。
申请人意识到,与上述用于确定输出面是否可能变化和用于如果确定输出面不大可能变化则存储输出面的原理相同的原理,还可以应用于在向显示器发送输出面之前压缩输出面的情况。因此,预期另外的实施方式,在该实施方式中,压缩处理的输出面,例如以便降低在向远程和/或移动显示装置发送处理的输出面的应用中的带宽要求,并且可以除了输出面的未压缩版本之外,或代替输出面的未压缩版本地,存储输出面的压缩版本。
在示例中,当由数据处理系统向远程和/或移动显示装置发送输出面区域时,从存储器读取各一个或更多个输入面的区域,然后处理和/或合成该区域,以生成最终的输出面区域。然后,压缩最终的输出面区域,并经由例如移动显示接口向远程和/或移动显示装置发送压缩的输出面区域。
可以根据任意适当的压缩标准来执行压缩,但在实施方式中,使用显示流压缩(DSC:Display Stream Compression),DSC以预定的码率提供计算上廉价且低时延的压缩。示例DSC算法使用德尔塔脉冲代码调制(DPCM:Delta Pulse Code Modulation)方案和索引色历史(ICH:Indexed Colour History)技术。DSC通常为基于行的,并且沿着栅格行来执行,由此以本实施方式的方式考虑的面区域可以为行。
在向显示装置发送之前例如由DSC压缩输出面的实施方式中,如果确定输出面的一个或更多个区域不大可能变化,则可以将压缩后的一个或更多个区域写到缓冲器,以便重新使用。例如,如果确定一起形成输出面区域的各一个或更多个输入面的区域不大可能变化时,除了存储输出面区域之外或代替存储输出面区域地,还可以存储输出面的(例如,由DSC进行的)压缩版本。通过代替输出面区域的未压缩版本而存储压缩版本,可以减小数据处理系统的带宽和存储使用。
当要生成随后的输出面区域时,如果确定该输出面区域类似于所存储的压缩版本的输出面区域,则可以从缓冲器取得,并重新使用输出面区域的所存储的压缩版本,而不是生成并压缩随后的输出面区域。因此,可以降低数据处理系统计算上的要求。
在实施方式中,可以使用任意技术和这里描述的任意一个或更多个可选特征,来执行输出面区域是否可能变化的确定的步骤。具体地,可以将输入面区域和/或输出面区域的签名进行比较。
在基于行的DSC用于压缩输出面的情况下,在本实施方式中考虑的输入或输出面的区域各对应于栅格行或栅格行的一部分,并且可以代替使用行签名。在要压缩的输出面的栅格行例如包括第一部分和第二部分的情况下,如果确定第一部分和第二部分这两者都不大可能变化,则可以将整体压缩数据行写到缓冲器,以便后面重新使用。
然而,在行的一部分或多个部分(但不是全部)可能变化的情况下,在一些实施方式中,还可以期望写入整体压缩数据行。在示例中,例如如果确定行的第一部分变化而确定行的第二部分未变化,则可以从缓冲器取得压缩的行,以便重新使用。解压缩所压缩的行,并且解压缩的第二部分与新的第一部分组合,然后压缩组合后的部分,并向显示器发送。
另选地或另外地,数据行可以被压缩和/或存储为单独的部分。在这种情况下,如果确定第一部分未变化而确定第二部分已变化,则可以从缓冲器取得压缩的第一部分,并直接向显示器发送。然后,仅需要在发送之前对新的第二部分编码(压缩)。
然而,如果第二部分的编码(压缩)和解码(解压缩)需要来自第一部分的数据,那么从缓冲器取得压缩的第一部分并解压缩,然后压缩(未变化的)第一部分和新的第二部分,并向显示器发送。类似地,如果确定第一部分变化而确定第二部分未变化,则从缓冲器取得压缩的第一部分和第二部分,并且解压缩第一部分,使得解压缩第二部分。然后,可以压缩新的第一部分和(未变化的)第二部分,并且向显示器发送。
在另外的示例中,当确定第一部分可能变化而确定第二部分不大可能变化时,可以仅将未压缩的第二部分存储在缓冲器中,以便重新使用。然后,在随后的周期中,从缓冲器取得未压缩的第二部分,并且将第二部分与新的第一部分组合,并且压缩组合后的新的第一部分和未压缩的第二部分,并且向显示器发送。
预期另外的实施方式和另选方案,在另外的实施方式和另选方案中,例如,数据行包括三个、四个或更多个部分,和/或在另外的实施方式和另选方案中,多个部分被存储为压缩或未压缩的部分的不同组合。
如可以看出的,可以除了写入输出面区域之外或代替写入输出面区域地,可以执行存储压缩输出面区域。这在例如在向显示器发送之前压缩输出面的情况下特别有用。在这种情况下,可以重新使用输出面区域的压缩版本,并在输出面区域未变化的周期内直接向显示器发送该版本。
与上述用于多阶段处理相同的准则还可以应用于根据多个输入面生成输出面的情况、多个输入面的不同输入面可以以不同频率更新的情况。
因此,预期另外的实施方式,在该实施方式中,关于一起生成最终输出面的多个输入面中的独立输入面或组(子集)来评定区域的变化的可能性。因此,这更容易地使得能够识别并处理不大可能变化的多个输入面的区域。
由此,在根据至少三个输入面的相应区域生成输出面区域的实施方式中,不大可能变化的相应输入面被一起分组在一个或更多个子集中,具体地,以相同或类似速率变化的输入面被一起分组在同一子集中。子集包括要对整体“最终”输出面有贡献的多个输入面中的两个或更多个(但不是全部)的相应区域。
然后,根据多个输入面的子集的相应区域生成中间输出面区域。(如果多个输入面被分组到多于一个子集中,则可以对于各子集生成中间输出面区域。)中间输出面区域是输入面的子集的相应区域的合成。然后,通过合成中间输出面区域与不属于子集的剩余输入面的相应区域,来生成输出面区域的最终整体版本。
例如,图12示意性地例示了根据本实施方式的合成过程,在该合成过程中,第一输入面120a、第二输入面120b以及第三输入面120c在块121处经受合成,以生成整体输出面(未示出)。
在示例中,第一输入面120a是整体输出面的用户接口(UI),并且第二输入面120b是UI背景,这两者很少变化。第三输入面120c是在窗口中播放的视频,由此,该输入面的数据频繁变化。因此,在本示例中,期望将第一输入面120a和第二输入面120b分组到子集中,并且通过合成第一输入面120a和第二输入面120b的相应区域来生成中间输出面区域。
对于相应中间输出面区域,如果确定中间区域不大可能变化,则由块输出部122将中间输出面区域写到“扁平化块”缓冲器123,以重新用于随后的输出面。块输出部122还将元数据写到块有效元数据缓冲器124,以例如通过设置有效旗标来指示中间输出面区域有效。此外,块输出部122将元数据写到“层扁平化”元数据缓冲器125,以识别多个输入面中的哪些用于生成所存储的中间输出面区域。扁平化块缓冲器123、块有效元数据缓冲器124以及层扁平化元数据缓冲器125,在这里仅为了例示的目的而被示出为单独的缓冲器。在其它实施方式中,这些缓冲器可以根据需要而被设置为单个存储单元或两个或更多个单独的存储单元。
在下一周期期间,对于输出面区域,检查扁平化块缓冲器123、块有效元数据缓冲器124以及层扁平化元数据缓冲器125。如果发现有效的中间输出面区域(包括第一输入面120a和第二输入面120b的相应区域),并且确定第一输入面120a和第二输入面120b的相应区域未变化,则检索所存储的中间输出面区域,并且将中间输出面区域用于与第三输入面120c的相应区域合成,以生成输出面区域的整体最终版本。
这样,即使在确定第三输入面120c变化时,也还可以通过使用根据第一输入面120a和第二输入面120b形成的中间输出帧区域来消除读取事务和处理中的一些。
如果第一输入面120a和第二输入面120b中的一者或两者变化,则更新块有效元数据缓冲器124,以使所存储的中间输出面区域无效。
在另外或另选的实施方式中,可以生成输出面区域的多个中间和最终版本,并将它们写到存储器。所述多个版本可以具有交叠的(且共同的)输入面。例如,可以生成来自第一和第二输入面的相应区域的中间输出面,以及来自第一、第二以及第三输入面的相应区域的中间输出面(或如果仅存在三个输入面,则还生成最终整体输出面)。然后,这允许在处理下一帧期间,选择并使用最合适的面区域。
例如,在图12的示例中,第一输入面120a和第二输入面120b这两者很少变化,而第三输入面120c被更频繁地(例如,以显示刷新率的频率的1/3)更新。
在该示例中,假定第一输入面120a和第二输入面120b在数个帧内不变化。此时,仅存储根据第一输入面120a和第二输入面120b的相应区域生成的中间输出面区域。
对于第一随后帧,对于各整体输出面区域,取得中间输出面区域和第三输入面120c的对应区域。合成这两个面区域,并且向显示器输出输出面区域的最终版本,并还将最终版本写到存储器。对于该帧,读取两个面区域(中间版本和第三输入面120c的区域),并写入一个面区域(最终版本)。
对于第二随后帧,取得并显示输出面区域的所存储最终版本。对于该帧,仅需要一个面区域读取。
对于第三随后帧,再次取得并显示输出面区域的所存储最终版本。对于该帧,仅需要一个面区域读取。
对于第四随后帧,更新第三输入面120c。取得中间输出面区域,并且取得更新后的第三输入面120c的对应区域。合成两个面区域,并且向显示器输出输出面区域的最终版本,并将最终版本写到存储器。
在该场景中,如果没有输出面被写到存储器,则对于四个帧上的每个显示刷新,将存在平均三次面取得(对于各帧必须取得所有三个输入面)。
在仅当确定所有三个输入面不大可能变化时将输出面的最终版本写到存储器的之前的示例中,对于每一个显示刷新,将存在平均两次面取得。
在输出面的最终版本和中间输出面可以写到存储器的本示例中,对于每一个显示刷新,存在平均1.66次面刷新。
如可以看出的,除了写入根据多个输入面中的所有的相应区域生成的输出面区域的最终版本之外,可以还执行根据多个输入面的子集的相应区域生成的中间输出面区域的生成和存储。在例如多个输入面中的一个频繁变化而剩余的输入面更不频繁地变化的情况下,这可以特别有用。在这种情况下,可以在一个输入面区域变化但剩余多个输入面区域的子集不变化的周期内重新使用中间输出面区域,而可以在多个输入区域中的全部的区域未变化的周期内重新使用输出面区域的全版本。
如将从上述理解的,至少在一些实施方式中,这里描述的技术便于在使用直接显示控制器合成,或在逐输出面区域的基础上重新使用来自帧缓冲器的输出面区域之间,进行选择。
对于更频繁更新的输出面区域,使用不再将那些输出面区域存储在帧缓冲器中的直接显示控制器合成(申请人意识到,该合成将在那些情况下更有效)。
另一方面,对于静态或很少更新的输出面区域,反而显示来自帧缓冲器的所存储输出面区域(在可能的情况下)。那么,这可以避免实际上不从输出面的一个版本到下一版本变化的输出面的版本的写流量和处理(例如,在用户接口的情况下)。
至少在这里描述的技术的一些实施方式中,这通过合成显示控制器确定输出面区域是否在时段内未变化来实现,并且如果是,那么将输出面区域存储在帧缓冲器。然后,对于随后帧执行检查,以观察输出面区域是否变化。如果没有变化,则重新使用输出面区域的所存储版本,但如果存在输出面区域的变化,则重新生成输出面区域。
这里描述的技术至少在实施方式中,在逐输出面区域的基础上有效动态地选择要使用的合成方案(帧缓冲器或直接合成),以便使带宽和功耗最小化。它可以将输出帧显示合成降低到,仅用于输出面的静态区域的帧缓冲器取得,和用于快速更新的区域的直接合成。
该操作可以节省用于输出面显示操作的大量带宽和功耗。
实际上,申请人发现,对于标准移动使用情况,至少在一些实施方式中,这里描述的技术与现有技术系统相比可以节省~800MB/s和~217mW的合成数据。
例如,研究已经表明,在移动装置使用下,时间的大部分(大约75%)花在用户接口(UI)生成和合成,而大约15%花在基础的3D应用和3D合成,并且剩余的10%花在不那么基础的3D应用和游戏以及它们的合成。这意味着显示在很多时候是静态的。
假定用于将1位数据转移到外存储器的能量消耗了3.25e-11J,那么,例如,对于以每秒60帧刷新且由两个2560x 1454面合成的静态家庭屏幕而言,用于正常帧缓冲器合成的带宽将为3.4GB/s,并且用于正常直接合成的带宽将为1.7GB/s,但使用这里描述技术的带宽可以为0.85GB/s,从而与完全直接合成相比,给出0.85GB/s的带宽降低和230mW的功率降低。对于具有30%块更新率的窗口中且由两个2560x 1600面合成的视频,再次,用于正常帧缓冲器合成的带宽将为3.6GB/s,并且用于正常直接合成的带宽将为1.8GB/s,但使用这里描述技术的带宽可以为1.17GB/s,从而与完全直接合成相比,给出0.63GB/s的带宽降低和176mW的功率降低。对于内部假定块的20%相同且由两个2560x 1600面合成的全帧视频而言,帧缓冲器合成带宽将为3.6GB/s,并且直接合成带宽将为1.8GB/s,但使用这里描述技术的带宽可以为1.44GB/s,从而与完全直接合成相比,给出0.36GB/s的带宽降低和100mW的功率降低。
上述详细描述是为了例示和说明的目的而提供的。并非旨在对本技术进行穷尽,或者将本技术限于所公开的精确形式。鉴于上述示教,很多修改例和变型例是可行的。选择了所述实施方式,以最好地解释本技术的原理及其实际应用,以使本领域其它技术人员能够在各种实施方式中,以及凭借适合于所设想的具体用途的各种变型,来最好地使用本技术。其范围旨在由所附权利要求来限定。

Claims (63)

1.一种提供输出面的方法,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域,所述方法包括以下步骤:
当要提供输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的所述相应区域,并且根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域可能变化还是不可能变化;以及
当确定所述输出面的所述至少一个区域不可能变化时,进行如下操作:
发送所述输出面的所述至少一个区域的所述新版本以便使用,并且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域可能变化还是不可能变化的步骤包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
2.根据权利要求1所述的方法,所述方法包括以下步骤:
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,且当确定所述输出面的所述至少一个区域可能变化时,发送所述输出面的所述至少一个区域的所述新版本以便使用,而不将所述新版本存储在所述缓冲器中以便将来使用2。
3.根据权利要求1或2所述的方法,所述方法包括以下步骤:
当所述输出面的所述至少一个区域的之前生成的版本存储在所述缓冲器中时,进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的所述一个或更多个输入面的区域是否变化;以及
当确定所述一个或更多个输入面的所述相应区域未变化时,进行如下操作:
从所述缓冲器读取所述输出面的所述至少一个区域的之前版本,并且发送所述之前版本以便使用。
4.根据权利要求1或2所述的方法,所述方法包括以下步骤:
当所述输出面的所述至少一个区域的之前生成的版本存储在所述缓冲器中时,进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的所述一个或更多个输入面的区域是否变化;以及
当确定所述一个或更多个输入面的所述相应区域变化时,进行如下操作:
读取所述一个或更多个输入面的各贡献区域,并且根据所述一个或更多个输入面的所述各贡献区域来生成所述输出面的所述至少一个区域的新版本;以及
发送所述输出面的所述至少一个区域的所述新版本以便使用,而不将所述新版本存储在所述缓冲器中以便将来使用。
5.根据权利要求1或2所述的方法,其中,检查所述输出面的所述至少一个区域的之前生成的版本是否存储在所述缓冲器中的步骤包括如下步骤:
检查如下的所存储的数据,该所存储的数据指示所述输出面的所述至少一个区域的之前生成的版本是否存储在所述缓冲器中。
6.根据权利要求1或2所述的方法,所述方法包括以下步骤:
当将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器时,还将如下数据写到存储器,该数据指示所述输出面的所述至少一个区域的所述新版本已经被写到所述缓冲器;以及
当未将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器时,还将如下数据写到存储器,该数据指示所述输出面的所述至少一个区域的所述新版本未被写到所述缓冲器。
7.根据权利要求1或2所述的方法,其中,确定所述输出面的所述至少一个区域可能变化还是不可能变化的步骤包括如下步骤:
检查特定之前数量的帧上,是否存在对所述输出面区域有贡献的所述一个或更多个输入面的所述相应区域的变化,和/或所述输出面的所述至少一个区域的变化。
8.根据权利要求1或2所述的方法,其中,
所述输出面是用于显示的输出帧,并且对所述输出帧执行显示修改操作,以在向显示器提供输出帧数据值以便显示之前修改所述输出帧数据值;并且
所述方法还包括以下步骤:
基于所执行的所述显示修改操作,对确定所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域是否变化的步骤进行修改。
9.根据权利要求1或2所述的方法,其中,确定所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域是否变化的步骤包括如下步骤:
检查表示所述一个或更多个输入面的所述相应区域的内容和/或所述输出面的所述至少一个区域的内容的签名是否已经变化。
10.根据权利要求9所述的方法,其中,
所述输出面是用于显示的输出帧,并且对所述输出帧执行显示修改操作,以在向显示器提供输出帧数据值以便显示之前修改所述输出帧数据值;以及
在确定所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域是否变化的步骤中,针对所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域中的各个面区域,对表示所述面区域的内容的签名进行比较,所比较的所述签名是:
基于用于所述面区域的数据的所选的一组最低有效位的签名;或
在基于所执行的所述显示修改操作来修改所述面区域的数据位置的数据值之后生成的签名。
11.根据权利要求1或2所述的方法,所述方法还包括以下步骤:
确定与用于要生成所述输出面的区域的所述一个或更多个输入面的所述相应区域的数据量相比,把输出面区域存储在所述缓冲器中所需的相对数据量。
12.根据权利要求11所述的方法,所述方法包括以下步骤:
确定是缩小还是放大所述输入面区域以生成所述输出面区域;和/或
确定所述输出面区域是否将具有比所述输入面区域更高的压缩比。
13.根据权利要求11所述的方法,所述方法包括以下步骤:
当确定所存储的输出面区域将使用比所述输入面区域更多的数据时,不将所述输出面区域的新版本写到所述缓冲器。
14.根据权利要求11所述的方法,所述方法包括以下步骤:
当确定所存储的输出面区域将使用比所述输入面区域更少的数据时,配置确定所述输出面的所述至少一个区域可能变化还是不可能变化的步骤,以便提高将确定所述输出面的所述至少一个区域不可能变化的可能性。
15.根据权利要求14所述的方法,所述方法包括以下步骤:
当确定所存储的输出面区域将使用比所述输入面区域更少的数据时,缩短如下时段,在该时段中,所述输入面区域需要保持不变以确定所述输出面的所述至少一个区域不可能变化。
16.根据权利要求1或2所述的方法,其中,所述方法在数据处理系统中实施,该数据处理系统包括一起生成供使用的最终输出面的多个处理阶段,并且所述输出面是所述多个处理阶段中的中间处理阶段的输出面,并且所述输入面是用于该中间处理阶段的输入面。
17.根据权利要求1或2所述的方法,其中,所述方法在数据处理系统中实施,该数据处理系统包括一起生成供使用的最终输出面的多个处理阶段,并且所述方法还包括以下步骤:
针对所述多个处理阶段使用根据前述权利要求中任意一项所述的提供输出面的方法。
18.根据权利要求1或2所述的方法,所述方法还包括以下步骤:
在发送所述输出面的所述至少一个区域的所述新版本以便使用,且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器之前,压缩所述输出面的所述至少一个区域的所述新版本。
19.根据权利要求18所述的方法,所述方法还包括以下步骤:
当确定所述输出面的所述至少一个区域的压缩的之前生成的版本存储在所述缓冲器中时,进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的、所述一个或更多个输入面的所述区域是否变化;以及
当确定所述一个或更多个输入面的所述相应区域未变化时,进行如下操作:
停用针对所述输出面的所述至少一个区域的压缩,并且从所述缓冲器读取所述输出面的所述至少一个区域的压缩的之前生成的版本,并发送该压缩的之前生成的版本以便使用。
20.根据权利要求1或2所述的方法,其中根据一组多个输入面的相应区域来生成整体输出面的相应区域,并且要提供新版本的所述输出面是根据要用于形成所述整体输出面的所述一组多个输入面的子集而形成的中间输出面,并且所述输入面是属于所述一组多个输入面的所述子集的、用于形成所述中间输出面的输入面。
21.根据权利要求1或2所述的方法,其中,要根据一组多个输入面的相应区域来生成所述输出面,并且所述方法包括以下步骤:当要提供所述输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
读取要生成所述输出面的所述一组多个输入面的至少一个子集的要生成所述输出面区域的相应区域;
确定输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不可能变化时,进行如下操作:
根据输入面的所述至少一个子集的所述输入面的所述相应区域生成中间输出面区域;以及
将所述中间输出面区域写到缓冲器。
22.一种提供输出面的方法,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成所述输出面的相应区域,所述方法包括以下步骤:
当要提供输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
读取要生成所述输出面的所述一组多个输入面的至少一个子集的、要生成所述输出面区域的所述相应区域;
根据所述输入面的所述至少一个子集中的所述输入面的所述相应区域生成中间输出面区域;
确定输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不可能变化时,进行如下操作:
将所述中间输出面区域写到缓冲器;
其中,确定所述输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化的步骤包括确定所述输入面的所述至少一个子集的所述相应区域是否在生成所述中间输出面区域之前已经改变。
23.根据权利要求22所述的方法,所述方法包括以下步骤:
确定输入面的多个子集的所述相应区域可能变化还是不可能变化,
对于确定所述输入面的子集的所述相应区域不可能变化的、输入面的所述多个子集中的每一个子集,根据所述输入面的所述相应区域来生成相应中间输出面区域,以及
将各个相应中间输出面区域写到缓冲器。
24.根据权利要求22或23所述的方法,所述方法还包括以下步骤:
当要提供所述输出面的新版本时,针对所述输出面的至少一个区域进行如下操作:
检查所述输出面的所述至少一个区域的之前生成的中间输出面区域是否存储在缓冲器中;以及
当之前生成的中间输出面区域存储在所述缓冲器中时,进行如下操作:
确定生成所述中间输出面区域的所述多个输入面的相应子集的相应区域是否变化;
以及当确定所述多个输入面的相应子集的相应区域未变化时,进行如下操作:
从所述缓冲器读取所述之前生成的中间输出面区域;以及
使用所述之前生成的中间输出面区域来生成所述输出面区域的所述新版本。
25.根据权利要求24所述的方法,所述方法还包括以下步骤:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当之前生成的中间输出面区域和所述输出面的所述至少一个区域的之前生成的版本这两者存储在所述缓冲器中时,进行如下操作:
确定生成所述输出面的所述至少一个区域的所述之前生成的版本的、所述多个输入面的所述相应区域是否变化,
当确定生成所述输出面的所述至少一个区域的所述之前生成的版本的、所述多个输入面的所述相应区域未变化时,使用所述输出面的所述至少一个区域的所述之前生成的版本来生成所述输出面的所述新版本。
26.根据权利要求24所述的方法,所述方法包括以下步骤:
使用所述之前生成的中间输出面区域,和来自不是用于生成所述中间输出面区域的子集的一部分的、所述一组多个输入面中的所述输入面的任何剩余输入面区域,来生成所述输出面区域的所述新版本。
27.根据权利要求22或23所述的方法,所述方法包括以下步骤:
存储元数据,该元数据指示形成中间输出面区域的所述一组多个输入面的子集中的所述输入面。
28.根据权利要求22或23所述的方法,所述方法包括以下步骤:
存储元数据,该元数据指示所存储的中间输出面区域是否有效以便使用。
29.根据权利要求1或22所述的方法,其中,根据一组多个输入面的相应区域来生成整体输出面的相应区域,并且方法还包括以下步骤:
针对根据所述一组多个输入面生成的所述整体输出面,并且针对根据用于生成所述整体输出面的所述一组多个输入面的子集生成的中间输出面,使用根据权利要求1或22所述的提供输出面的方法。
30.根据权利要求1或22所述的方法,其中,所述输出面包括多个区域。
31.一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个区域,所述系统包括:
缓冲器;以及
合成显示控制器;
并且其中,所述合成显示控制器能够在要提供输出面的新版本时针对所述输出面的至少一个区域执行以下步骤:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的相应区域,并且根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域可能变化还是不可能变化;以及
当确定所述输出面的所述至少一个区域不可能变化时,进行如下操作:
发送所述输出面的所述至少一个区域的所述新版本以便使用,并且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域可能变化还是不可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
32.根据权利要求31所述的系统,其中,所述合成显示控制器能够进行如下操作:
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,且当确定所述输出面的所述至少一个区域可能变化时,发送所述输出面的所述至少一个区域的所述新版本以便使用,而不将所述新版本存储在所述缓冲器中以便将来使用。
33.根据权利要求31或32所述的系统,其中,所述合成显示控制器能够进行如下操作:
当所述输出面的所述至少一个区域的之前生成的版本存储在所述缓冲器中时,进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的所述一个或更多个输入面的所述区域是否变化;以及
当确定所述一个或更多个输入面的所述区域未变化时,进行如下操作:
从所述缓冲器读取所述输出面的所述至少一个区域的之前版本,并且发送所述之前版本以便使用。
34.根据权利要求31或32所述的系统,其中,所述合成显示控制器能够进行如下操作:
当所述输出面的所述至少一个区域的之前生成的版本存储在所述缓冲器中时,进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的所述一个或更多个输入面的所述区域是否变化;以及
当确定所述一个或更多个输入面的所述相应区域变化时,进行如下操作:
读取所述一个或更多个输入面的相应贡献区域,并且根据所述一个或更多个输入面的所述相应贡献区域来生成所述输出面的所述至少一个区域的新版本;以及
发送所述输出面的所述至少一个区域的所述新版本以便使用,而不将所述新版本存储在所述缓冲器中以便将来使用。
35.根据权利要求31或32所述的系统,其中,所述合成显示控制器在检查所述输出面的所述至少一个区域的之前生成的版本是否存储在所述缓冲器时,检查如下的所存储的数据,该所存储的数据指示所述输出面的所述至少一个区域的之前生成的版本是否存储在所述缓冲器中。
36.根据权利要求31或32所述的系统,其中,所述合成显示控制器能够进行如下操作:
当所述合成显示控制器将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器时,还将如下数据写到存储器,该数据指示所述输出面的所述至少一个区域的所述新版本已经写到所述缓冲器;并且
当所述合成显示控制器不将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器时,还将如下数据写到存储器,该数据指示所述输出面的所述至少一个区域的所述新版本未写到所述缓冲器。
37.根据权利要求31或32所述的系统,其中,所述合成显示控制器通过检查特定之前数量的帧上,是否存在对所述输出面区域有贡献的所述一个或更多个输入面的相应区域的变化,和/或所述输出面的所述至少一个区域的变化,来确定所述输出面的所述至少一个区域可能变化还是不可能变化。
38.根据权利要求31或32所述的系统,其中,所述合成显示控制器还包括处理电路,
当所述输出面是用于显示的输出帧,且对所述输出帧执行显示修改操作以在向显示器提供输出帧数据值以便显示之前修改所述输出帧数据值时,该处理电路能够进行如下操作:
基于所执行的所述显示修改操作,对确定所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域是否变化的步骤进行修改。
39.根据权利要求31或32中所述的系统,其中,所述合成显示控制器通过检查表示所述一个或更多个输入面的所述相应区域的内容和/或所述输出面的所述至少一个区域的内容的签名是否已经变化,来确定所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域是否变化。
40.根据权利要求39所述的系统,其中,
当所述输出面是用于显示的输出帧,并且对所述输出帧执行显示修改操作,以在向显示器提供输出帧数据值以便显示之前修改所述输出帧数据值时,针对所述一个或更多个输入面的所述相应区域和/或所述输出面的所述至少一个区域中的各个面区域,所述合成显示控制器进行如下操作:
检查基于用于所述面区域的数据的所选的一组最低有效位的签名是否变化;或
检查在基于所执行的所述显示修改操作来修改所述面区域的数据位置的所述数据值之后生成的签名是否变化。
41.根据权利要求31或32所述的系统,其中,所述合成显示控制器确定如下项:
与用于要生成所述输出面的区域的所述一个或更多个输入面的所述相应区域的数据量相比,把输出面区域存储在所述缓冲器中所需的相对数据量。
42.根据权利要求41所述的系统,其中,所述合成显示控制器确定如下项:
是缩小还是放大所述输入面区域以生成所述输出面区域;和/或
确定所述输出面区域是否将具有比所述输入面区域更高的压缩比。
43.根据权利要求41所述的系统,其中,当确定所存储的输出面区域将含有比所述输入面区域更多的数据时,所述合成显示控制器不将所述输出面区域的新版本写到所述缓冲器。
44.根据权利要求41所述的系统,其中,当确定所存储的输出面区域将使用比所述输入面区域更少的数据时,所述合成显示控制器配置确定所述输出面的所述至少一个区域可能变化还是不可能变化的操作,以便提高将确定所述输出面的所述至少一个区域不可能变化的可能性。
45.根据权利要求44所述的系统,其中,当确定所存储的输出面区域将使用比所述输入面区域更少的数据时,所述合成显示控制器缩短如下时段,在该时段中,所述输入面区域需要保持不变以确定所述输出面的所述至少一个区域不可能变化。
46.根据权利要求31或32所述的系统,其中,所述系统是数据处理系统,该数据处理系统包括一起生成供使用的最终输出面的多个处理阶段,并且所述输出面是所述多个处理阶段中的中间处理阶段的输出面,并且所述输入面是用于该中间处理阶段的输入面。
47.根据权利要求31或32所述的系统,其中,所述系统是数据处理系统,该数据处理系统包括一起生成供使用的最终输出面的多个处理阶段,并且所述系统使用为所述多个处理阶段提供根据权利要求1至16中任意一项所述的输出面的方法。
48.根据权利要求31或32所述的系统,其中,所述合成显示控制器还能够进行如下操作:
在发送所述输出面的所述至少一个区域的所述新版本以便使用,且将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器之前,压缩所述输出面的所述至少一个区域的所述新版本。
49.根据权利要求48所述的系统,其中,当确定所述输出面的所述至少一个区域的压缩的之前生成的版本存储在所述缓冲器中时,所述合成显示控制器还能够进行如下操作:
确定对所述输出面的所述至少一个区域有贡献的、所述一个或更多个输入面的所述区域是否变化;以及
当确定所述一个或更多个输入面的所述相应区域未变化时,进行如下操作:
停用针对所述输出面的所述至少一个区域的压缩,并且从所述缓冲器读取所述输出面的所述至少一个区域的压缩的之前生成的版本,并发送所述压缩的之前生成的版本以便使用。
50.根据权利要求31或32所述的系统,其中,根据一组多个输入面的相应区域来生成整体输出面的相应区域,并且要提供新版本的所述输出面是根据要用于形成所述整体输出面的所述一组多个输入面的子集而形成的中间输出面,并且所述输入面是属于所述一组多个输入面的所述子集的、用于形成所述中间输出面的输入面。
51.根据权利要求31或32所述的系统,当要根据一组多个输入面的相应区域来生成所述输出面,且要提供所述输出面的新版本时,针对所述输出面的至少一个区域,所述合成显示控制器能够进行如下操作:
读取要生成所述输出面的所述一组多个输入面的、要生成所述输出面区域的至少一个子集的相应区域;
确定输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不可能变化时,进行如下操作:
根据输入面的所述至少一个子集的所述输入面的相应区域生成中间输出面区域;以及
将所述中间输出面区域写到缓冲器。
52.一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一组多个输入面的相应区域来生成所述输出面的相应区域,所述系统包括:
缓冲器;以及
合成显示控制器;
并且其中,当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
读取要生成所述输出面的所述一组多个输入面的至少一个子集的、要生成所述输出面区域的所述相应区域;
根据输入面的所述至少一个子集的所述输入面的所述相应区域生成中间输出面区域;
确定输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化;以及
当确定输入面的所述至少一个子集的所述相应区域不可能变化时,进行如下操作:
将所述中间输出面区域写到缓冲器,
其中,确定所述输入面的所述至少一个子集的所述相应区域可能变化还是不可能变化的步骤包括确定所述输入面的所述至少一个子集的所述相应区域是否在生成所述中间输出面区域之前已经改变。
53.根据权利要求52所述的系统,其中,所述合成显示控制器能够进行如下操作:
确定输入面的多个子集的所述相应区域可能变化还是不可能变化,
对于确定所述输入面的子集的所述相应区域不可能变化的、输入面的所述多个子集中的每一个子集,根据所述输入面的所述相应区域来生成相应中间输出面区域,以及
将各个相应中间输出面区域写到缓冲器。
54.根据权利要求52或53所述的系统,其中,当要提供所述输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域进行如下操作:
检查所述输出面的所述至少一个区域的之前生成的中间输出面区域是否存储在缓冲器中;以及
当之前生成的中间输出面区域存储在所述缓冲器中时,进行如下操作:
确定生成所述中间输出面区域的多个输入面的相应子集的所述相应区域是否变化;
以及当确定多个输入的所述相应子集的所述相应区域未变化时,进行如下操作:
从所述缓冲器读取所述之前生成的中间输出面区域;以及
使用所述之前生成的中间输出面区域来生成所述输出面区域的所述新版本。
55.根据权利要求54所述的系统,其中,所述合成显示控制器还能够进行如下操作:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当之前生成的中间输出面区域和所述输出面的所述至少一个区域的之前生成的版本这两者存储在所述缓冲器中时,进行如下操作:
确定生成所述输出面的所述至少一个区域的所述之前生成的版本的、所述多个输入面的所述相应区域是否变化,
当确定生成所述输出面的所述至少一个区域的所述之前生成的版本的、所述多个输入面的所述相应区域未变化时,使用所述输出面的所述至少一个区域的所述之前生成的版本来生成所述输出面区域的所述新版本。
56.根据权利要求54所述的系统,其中,所述合成显示控制器能够进行如下操作:
使用所述之前生成的中间输出面区域,和来自不是用于生成所述中间输出面区域的子集的一部分的、所述一组多个输入面中的所述输入面的任何剩余输入面区域,来生成所述输出面区域的所述新版本。
57.根据权利要求52或53所述的系统,其中,所述合成显示控制器能够进行如下操作:
存储元数据,该元数据指示形成中间输出面区域的所述一组多个输入面的子集中的所述输入面。
58.根据权利要求52或53所述的系统,其中,所述合成显示控制器能够进行如下操作:
存储元数据,该元数据指示所存储的中间输出面区域是否有效以便使用。
59.根据权利要求31或52所述的系统,其中,根据一组多个输入面的相应区域来生成整体输出面的相应区域,并且所述系统使用如下方法:
针对根据所述一组多个输入面生成的所述整体输出面,且针对根据用于生成所述整体输出面的所述一组多个输入面的子集生成的中间输出面,使用根据权利要求1-28中任意一项所述的提供输出面的方法。
60.根据权利要求31或52所述的系统,其中,所述输出面包括多个区域。
61.一种用于提供输出面的合成显示控制器,所述合成显示控制器进行如下操作:
生成一起形成所述输出面的相应输出面区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域;以及
当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
确定是否重新使用所述输出面的所述至少一个区域的之前存储的版本,或是否根据所述一个或更多个输入面的相应区域生成所述输出面的所述至少一个区域的新版本;以及
根据所述确定,发送所述输出面的所述至少一个区域的所述之前存储的版本以便使用,或根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本,并且发送所述输出面的所述至少一个区域的所生成的新版本以便使用,
在确定将根据所述一个或更多个输入面的所述相应区域生成所述输出面的所述至少一个区域的新版本时:
确定被确定将被生成所述新版本的所述输出面的所述至少一个区域可能变化还是不可能变化,其中,确定所述输出面的所述至少一个区域可能变化还是不可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
62.一种用于提供输出面的系统,所述输出面包括一起形成所述输出面的一个或更多个区域,根据一个或更多个输入面的相应区域来生成所述输出面的各个相应区域,所述系统包括缓冲器和合成显示控制器,并且其中,当要提供输出面的新版本时,所述合成显示控制器能够针对所述输出面的至少一个区域执行以下步骤:
检查所述输出面的所述至少一个区域的之前生成的版本是否存储在缓冲器中;以及
当所述输出面的所述至少一个区域的之前生成的版本未存储在所述缓冲器中时,进行如下操作:
读取要生成所述输出面的所述至少一个区域的、所述一个或更多个输入面的所述相应区域,并且根据所述一个或更多个输入面的所述相应区域来生成所述输出面的所述至少一个区域的新版本;
确定所述输出面的所述至少一个区域可能变化还是不可能变化;以及
基于所述输出面的所述至少一个区域可能变化还是不可能变化的所述确定,决定是否将所述输出面的所述至少一个区域的所述新版本写到所述缓冲器,
其中,确定所述输出面的所述至少一个区域可能变化还是不可能变化包括确定下列项中的至少一个:
所述输出面的所述至少一个区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变;和
生成所述输出面的所述至少一个区域所根据的所述一个或更多个输入面的所述相应区域是否在生成所述输出面的所述至少一个区域的所述新版本之前已经改变。
63.一种存储有软件代码的计算机可读介质,当执行该软件代码时,使得执行根据权利要求1或22所述的方法。
CN201480075332.4A 2013-12-11 2014-12-11 提供输出面的方法、系统和合成显示控制器及计算机介质 Active CN106030652B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GB1321896.1 2013-12-11
GB1321896.1A GB2521170A (en) 2013-12-11 2013-12-11 Method of and apparatus for displaying an output surface in data processing systems
GB1406973.6A GB2521234A (en) 2013-12-11 2014-04-17 Method of and apparatus for displaying an output surface in data processing systems
GB1406973.6 2014-04-17
GB1412522.3A GB2521241A (en) 2013-12-11 2014-07-15 Method of and apparatus for displaying an output surface in data processing systems
GB1412522.3 2014-07-15
PCT/GB2014/053668 WO2015087078A2 (en) 2013-12-11 2014-12-11 Method of and apparatus for displaying an output surface in data processing systems

Publications (2)

Publication Number Publication Date
CN106030652A CN106030652A (zh) 2016-10-12
CN106030652B true CN106030652B (zh) 2020-06-30

Family

ID=50000541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480075332.4A Active CN106030652B (zh) 2013-12-11 2014-12-11 提供输出面的方法、系统和合成显示控制器及计算机介质

Country Status (4)

Country Link
US (1) US10235738B2 (zh)
CN (1) CN106030652B (zh)
GB (4) GB2521170A (zh)
WO (1) WO2015087078A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102276909B1 (ko) * 2014-12-09 2021-07-13 삼성전자주식회사 렌더링 방법 및 장치
KR102227636B1 (ko) * 2014-12-31 2021-03-16 삼성디스플레이 주식회사 표시 장치용 데이터 저장 장치 및 이의 저장 방법
US11074885B2 (en) * 2015-09-25 2021-07-27 Intel Corporation Facilitating efficient detection of patterns in graphics display streams prior to their display at computing devices
GB2544333B (en) 2015-11-13 2018-02-21 Advanced Risc Mach Ltd Display controller
US10885603B2 (en) * 2015-12-25 2021-01-05 Intel Corporation Alpha blending and display update bandwidth saving during render and display operations
GB2548853B (en) 2016-03-30 2020-09-23 Advanced Risc Mach Ltd Data processing
KR102488333B1 (ko) * 2016-04-27 2023-01-13 삼성전자주식회사 그래픽 데이터를 합성하는 전자 장치 및 방법
US10276125B2 (en) 2016-09-30 2019-04-30 Arm Limited Method of and apparatus for controlling overrun when writing data from a display controller to memory
US10445902B2 (en) * 2016-12-13 2019-10-15 Qualcomm Incorporated Fetch reduction for fixed color and pattern sub-frames
CN106933527A (zh) * 2017-03-10 2017-07-07 广东欧珀移动通信有限公司 一种移动终端的显示控制方法、装置及移动终端
CN111295872B (zh) 2017-11-10 2022-09-09 皇家Kpn公司 获得场景中的对象的图像数据方法、系统以及可读介质
GB2585944B (en) * 2019-07-26 2022-01-26 Sony Interactive Entertainment Inc Apparatus and method for data generation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255361A (en) * 1988-12-19 1993-10-19 International Business Machines Corporation Method of and system for updating a display unit
US6359625B1 (en) * 1997-05-27 2002-03-19 National Semiconductor Corporation Video refresh compression
CN1894728A (zh) * 2003-12-19 2007-01-10 皇家飞利浦电子股份有限公司 缩放三维模型的方法和缩放单元

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080143695A1 (en) * 2006-12-19 2008-06-19 Dale Juenemann Low power static image display self-refresh
US20080186319A1 (en) * 2007-02-05 2008-08-07 D.S.P. Group Ltd. Dynamically activated frame buffer
US8988443B2 (en) 2009-09-25 2015-03-24 Arm Limited Methods of and apparatus for controlling the reading of arrays of data from memory
JP5835879B2 (ja) * 2009-09-25 2015-12-24 アーム・リミテッド メモリからのデータの配列の読み込みを制御する方法および装置
GB0916924D0 (en) 2009-09-25 2009-11-11 Advanced Risc Mach Ltd Graphics processing systems
US9406155B2 (en) 2009-09-25 2016-08-02 Arm Limited Graphics processing systems
GB201105716D0 (en) 2011-04-04 2011-05-18 Advanced Risc Mach Ltd Method of and apparatus for displaying windows on a display
US9182934B2 (en) 2013-09-20 2015-11-10 Arm Limited Method and apparatus for generating an output surface from one or more input surfaces in data processing systems
US9195426B2 (en) 2013-09-20 2015-11-24 Arm Limited Method and apparatus for generating an output surface from one or more input surfaces in data processing systems
GB2528265B (en) 2014-07-15 2021-03-10 Advanced Risc Mach Ltd Method of and apparatus for generating an output frame

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255361A (en) * 1988-12-19 1993-10-19 International Business Machines Corporation Method of and system for updating a display unit
US6359625B1 (en) * 1997-05-27 2002-03-19 National Semiconductor Corporation Video refresh compression
CN1894728A (zh) * 2003-12-19 2007-01-10 皇家飞利浦电子股份有限公司 缩放三维模型的方法和缩放单元

Also Published As

Publication number Publication date
GB2521241A (en) 2015-06-17
GB2522765B (en) 2020-07-01
CN106030652A (zh) 2016-10-12
GB201406973D0 (en) 2014-06-04
US10235738B2 (en) 2019-03-19
WO2015087078A3 (en) 2015-09-17
GB201321896D0 (en) 2014-01-22
GB201412522D0 (en) 2014-08-27
WO2015087078A2 (en) 2015-06-18
GB2522765A (en) 2015-08-05
US20160314557A1 (en) 2016-10-27
GB2521234A (en) 2015-06-17
GB2521170A (en) 2015-06-17

Similar Documents

Publication Publication Date Title
CN106030652B (zh) 提供输出面的方法、系统和合成显示控制器及计算机介质
US10748510B2 (en) Framebuffer compression with controllable error rate
US10001941B2 (en) Graphics processing systems
US20110074800A1 (en) Method and apparatus for controlling display operations
US9640131B2 (en) Method and apparatus for overdriving based on regions of a frame
US9195426B2 (en) Method and apparatus for generating an output surface from one or more input surfaces in data processing systems
US10395394B2 (en) Encoding and decoding arrays of data elements
GB2474115A (en) Controlling the Reading of Arrays of Data from Memory
US10440360B2 (en) Video processing system
US11616937B2 (en) Media processing systems
US20160371808A1 (en) Method and apparatus for controlling display operations
US10896536B2 (en) Providing output surface data to a display in data processing systems
US10824357B2 (en) Updating data stored in a memory
US10466915B2 (en) Accessing encoded blocks of data in memory
US9324163B2 (en) Methods of and apparatus for compressing depth data
US11263786B2 (en) Decoding data arrays
US11798121B2 (en) Tile-based graphics processing systems
TW202240398A (zh) 存取經編碼資料區塊

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant