CN111542872A - 任意块渲染和显示帧重构 - Google Patents

任意块渲染和显示帧重构 Download PDF

Info

Publication number
CN111542872A
CN111542872A CN201880085353.2A CN201880085353A CN111542872A CN 111542872 A CN111542872 A CN 111542872A CN 201880085353 A CN201880085353 A CN 201880085353A CN 111542872 A CN111542872 A CN 111542872A
Authority
CN
China
Prior art keywords
image content
display
frame
buffer
gpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201880085353.2A
Other languages
English (en)
Other versions
CN111542872B (zh
Inventor
R·亚达夫
D·马奇亚
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN111542872A publication Critical patent/CN111542872A/zh
Application granted granted Critical
Publication of CN111542872B publication Critical patent/CN111542872B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • 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
    • G09G2320/00Control of display operating conditions
    • G09G2320/10Special adaptations of display systems for operation with variable images
    • G09G2320/106Determination of movement vectors or equivalent parameters within the image
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本公开内容的技术可以包括用于控制图形处理单元(GPU)渲染的图形数据的量的方式。GPU可以渲染针对在帧与帧之间变化的图像内容的图形数据,而不是针对变化和没有变化的图像内容的图形数据。为了显示图像内容,处理电路可以将图形数据被存储的位置映射到图像内容中的行,从而允许GPU将图形数据存储在应用缓冲区的任意位置中。

Description

任意块渲染和显示帧重构
依据35 U.S.C.§119要求优先权
本专利申请要求享受于2018年1月4日提交的、名称为“ARBITRARY BLOCKRENDERING AND DISPLAY FRAME RECONSTRUCTION”的美国非临时申请第15/862,227号的优先权,该申请被转让给本申请的受让人,并且据此通过引用的方式明确地并入本文中。
技术领域
本公开内容涉及图形处理和图形数据存储。
背景技术
计算设备通常利用图形处理单元(GPU)来加速对用于显示的图形数据的渲染,并且利用显示处理器来生成驱动显示面板的信号。这样的计算设备可以包括例如计算机工作站、诸如所谓的智能电话之类的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU通常执行图形处理流水线,图形处理流水线包括一起操作以执行图形处理命令的多个处理阶段。主机中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制GPU的操作。显示处理器取得由GPU生成的图像内容,并且进一步处理图像内容以生成用于驱动显示面板以使得显示器呈现图像内容的信号。
发明内容
总体上,本公开内容的各方面涉及用于如下的技术:所述技术用于基于应用缓冲区的存储与不再被显示的图像内容相对应的过时数据的部分、以及应用缓冲区的存储与被显示的图像内容相对应但是与显示面板上的新行相关联的有效数据的部分,来控制由图形处理单元(GPU)生成的图形数据的量。GPU可以渲染与新显示的图像内容相对应的图形数据,而不是重新渲染所有图形数据。GPU可以将与新显示的图像内容相对应的图形数据存储在应用缓冲区的存储过时数据的部分中。
处理电路可以生成指示图像内容的哪些行是与应用缓冲区的哪些部分相关联的信息。例如,映射可以指示被存储在应用缓冲区的第一部分中的图形数据对应于如下的图像内容:所述图像内容被显示在与被存储在应用缓冲区的第二部分中的图形数据相对应的图像内容正上方。然后,显示处理器可以使得显示面板基于指示应用缓冲区中的哪些部分对应于图像内容的哪些行的信息来显示图像内容。
在一个示例中,本公开内容描述了一种用于生成图像内容的方法,所述方法包括:确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
在一个示例中,本公开内容描述了一种用于生成图像内容的设备,所述设备包括应用缓冲区、图形处理单元(GPU)以及处理电路。所述处理电路被配置为:确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;基于所述图像内容的所确定的移位,来确定所述应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及指导所述GPU将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
在一个示例中,本公开内容描述了一种存储指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器进行以下操作:确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
在一个示例中,本公开内容描述了一种用于生成图像内容的设备,所述设备包括:用于确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量的单元;用于基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分的单元,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及用于指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据的单元。
在附图和以下描述中阐述了本公开内容的一个或多个方面的细节。根据说明书和附图以及根据权利要求书,本公开内容的其它特征、目的和优点将是显而易见的。
附图说明
图1是示出可以被配置为实现本公开内容的一个或多个示例的示例计算设备的框图。
图2A-2C是示出作为图形用户界面(GUI)的部分的滚动图像内容的示例的概念图。
图3A-3C是示出应用缓冲区的部分与显示面板的部分的示例映射的概念图。
图4是更加详细地示出图1的中央处理单元(CPU)、图形处理单元(GPU)、显示处理器和系统存储器的框图。
图5是示出本公开内容的示例方法的流程图。
具体实施方式
描述了用于控制图形处理单元(GPU)生成的图形数据的量的示例技术。GPU可以被配置为渲染(例如,生成)GPU存储在应用缓冲区中的图形数据。显示处理器可以从应用缓冲区中取得图形数据,并且生成帧的图像内容以用于显示。显示处理器生成图像内容的速率被称为显示器刷新速率。
在帧与帧之间,在显示面板上的图像内容中的一些图像内容可能变化,而一些图像内容可能是相同的。然而,在帧与帧之间相同的图像内容可能在显示面板上的不同位置中。例如,如果用户正在向上滚动图像内容,则在帧与帧之间,图像内容中的在显示面板的顶部的一些图像内容是不显示的,图像内容中的在显示面板的中间的一些图像内容可能向上移动,而在底部的图像内容被替换为新图像内容。
如更加详细地描述的,在一些示例中,GPU可以被配置为仅渲染针对帧中的在帧与帧之间新的部分的图形数据,而不是重新渲染在帧与帧之间所有的图形数据。相应地,因为GPU仅渲染针对具有新图像内容的部分的图形数据,所以可以更快地获得针对整个帧的图形数据。此外,显示处理器可以在指定时间内完成生成图像内容以刷新显示面板。GPU完成渲染图像内容越快,显示处理器就具有越多的时间来在指定时间内完成渲染。如果存在GPU延迟,则显示处理器可能重复旧内容,这在GPU能够较早地生成图形数据的情况下是可以避免的。
例如,当用户与图形用户界面(GUI)进行交互时,用户倾向于将图像内容相对均匀地移位。许多用户交互导致左、右、顶部或底部内容移位。为了丰富的用户体验,响应于用户动作的用户界面(UI)转换(例如,图像内容的帧与帧之间的变化)具有高的帧每秒(fps)需求。GPU和显示处理器可以以最大吞吐量(例如,最大fps)进行操作以满足这种需求。此外,如果GPU或显示处理器的整个流水线中的任何组件由于各种其它系统负载而无法处理吞吐量,则可能发生显示卡顿。
因此,用于限制GPU在帧与帧之间渲染的图形数据的量的技术可以解决在图形处理技术中存在的问题。例如,与在本公开内容中描述的示例GPU相比,具有重新渲染针对整个帧的图形数据(而不是针对具有新图像内容的那些部分的图形数据)的GPU的设备可能较为缓慢地完成对帧的渲染。
然而,使得GPU仅渲染针对图像帧的具有新图像内容的部分的图形数据可能引起问题。例如,显示处理器可能依赖于图形数据在应用缓冲区中被排列的方式来生成图像内容。作为一个示例,为了刷新显示面板,显示处理器可以在显示面板上逐行写入图像内容。图形数据被存储在应用缓冲区中的次序可以指示在显示面板上排列对应图像内容的次序。
例如,图形数据可以被存储在应用缓冲区的具有连续虚拟地址的存储器位置中。显示处理器可以基于图形数据在连续虚拟地址中的存储来逐行生成图像内容。作为一个示例,显示处理器基于被存储在具有第一虚拟地址的存储器位置中的图形数据来生成针对顶部的图像内容,基于被存储在具有第二虚拟地址的存储器位置中的图形数据来生成在顶部下方的图像内容,以此类推。显示处理器可以通过按照来自应用缓冲区的图形数据的行进行读取,基于图形数据来生成针对那些行的图像内容,并且然后显示图像内容,从而刷新显示面板。
在GPU渲染与帧的新图像内容相对应的图形数据的示例中,在图形数据被存储在应用缓冲区中的位置与对应图像内容在显示面板上的排列之间可能存在未对齐。作为一个示例,假设显示面板正在显示帧一,并且用户将图像内容向上移位。GPU进而渲染针对其中图像内容被向上移位的帧二的图形数据,并且显示处理器生成针对帧二的图像内容并且使得显示面板显示针对帧二的图像内容。在该示例中,被存储在应用缓冲区的顶部(例如,在与图像内容的顶部相对应的虚拟地址处)的针对帧一的图形数据变得过时,这是因为帧一的该部分不再被显示。在帧二的顶部的图像内容位于被标识为在虚拟地址的中间范围中的存储器位置中,并且在帧二的中间的图像内容位于被标识为在虚拟地址的底部范围中的存储器位置中。
如果显示处理器将基于连续虚拟地址读取图形数据,并且相应地排列根据图形数据而生成的图像内容,则显示面板可能将图像内容显示在错误的位置中。例如,在帧二中的将被显示在顶部的图像内容将被显示在中间,因为用于应当处于顶部的图像内容的虚拟地址在用于应用缓冲区的虚拟地址的中间范围内。
在一个或多个示例中,处理电路可以生成指示显示处理器将从何处读取图形数据的信息,使得显示处理器以正确的排列来生成用于显示面板的图像内容。例如,处理电路可以生成信息(例如,具有GPU像素块表的形式),该信息映射图像内容的哪些图像行是与应用缓冲区的哪些部分相关联的。当生成用于显示面板的图像内容时,显示处理器可以使用所生成的信息来确定从何处读取图形数据。
此外,如更加详细地描述,在一些示例中,除了指示在由GPU渲染的图形数据与对应图像内容的排列之间的映射的GPU像素块表之外,处理电路还可以维护类似于GPU像素块表的另一显示像素块表。因为显示处理器在不同的层上操作,所以显示处理器还可以利用显示像素块表来合成和生成图像内容。
图1是被配置为执行在本公开内容中描述的示例技术中的一种或多种示例技术的设备10的框图。设备10的示例包括计算机(例如,个人计算机、台式计算机或膝上型计算机),诸如平板计算机之类的移动设备、无线通信设备(例如,移动电话、蜂窝电话、卫星电话和/或移动电话手机)、用于电话会议的固定电话、互联网电话、手持设备(例如,便携式视频游戏设备或个人数字助理(PDA))。设备10的另外示例包括个人音乐播放器、视频播放器、显示器设备、相机、电视机、机顶盒、广播接收器设备、服务器、中间网络设备、大型计算机、或处理和/或显示图形数据的任何其它类型的设备。为了描述的目的,关于作为汽车的设备10描述了示例,其中理解的是,这些示例可以扩展到设备10的其它示例。
如在图1的示例中所示,设备10包括镜头12、相机处理器14、中央处理器(CPU)16、图形处理器(GPU)18和GPU 18的本地存储器20、用户界面22、提供对系统存储器30的访问的存储器控制器24、以及输出使得图形数据被显示在显示面板28上的信号的显示处理器26。如图1所示,系统存储器30包括应用缓冲区32。总线33提供各种组件的互连。
尽管将各种组件示为单独的组件,但是在一些示例中,可以将这些组件组合以形成片上系统(SoC)。作为一个示例,相机处理器14、CPU 16、GPU 18和显示处理器26可以被形成在公共集成电路(IC)芯片上。在一些示例中,相机处理器14、CPU 16、GPU 18和显示处理器26中的一者或多者可以在单独的IC芯片中。各种其它排列和组合是可能的,并且这些技术不应当被认为限于图1中所示的示例。
在图1中所示的各种组件(无论被形成在一个设备上还是在不同设备上)可以被形成为诸如在以下各项中的固定功能或可编程处理电路中的至少一者:一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或其它等效的集成或分立逻辑电路。本地存储器20的示例包括一个或多个易失性或非易失性存储器或存储设备,诸如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、闪存、磁数据介质、或光存储介质。
在图1中所示的各种单元使用总线33彼此进行通信。总线33可以是多种总线结构中的任何一种,诸如第三代总线(例如,HyperTransport总线或InfiniBand总线)、第二代总线(例如,高级图形端口总线、外围组件互连(PCI)高速总线、或者高级可扩展接口(AXI)总线)、或另一种类型的总线或设备互连。应当注意的是,在图1中所示的不同组件之间的总线和通信接口的特定配置仅是示例性的,并且可以使用具有相同或不同组件的计算设备和/或其它图像处理系统的其它配置来实现本公开内容的技术。
显示面板28可以包括监视器、电视机、投影设备、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器、或另一种类型的显示单元。显示面板28可以被集成在计算设备10内。例如,显示面板28可以是移动电话手机或平板计算机的触摸屏幕或在场感应屏幕。替代地,显示面板28可以是经由有线或无线通信链路耦合到计算设备10的独立设备。例如,显示面板28可以是经由电缆或无线链路连接到个人计算机的计算机监视器或平板显示器。
在本公开内容中使用用户界面22,以一般性地指代用户可以通过其与设备10进行交互的一个或多个设备。用户界面22的示例包括轨迹球、鼠标、键盘等。在一些示例中,用户界面22可以是显示面板28的一部分,例如在其中显示面板28是触摸屏幕设备的示例中。
相机处理器14、CPU 16和GPU 18可以被配置为生成显示处理器26用来生成图像内容以供显示面板28显示的数据。例如,相机处理器14被配置为接收作为来自传感器(其经由镜头12接收影像)的相应像素的传感器信号的电流,并且处理电流以生成图像的像素数据。相机处理器14可以被配置为单输入多数据(SIMD)架构。相机处理器14可以对从与镜头12相关联的传感器中的每一者接收的电流执行相同的操作。SIMD架构的每个通道可以包括图像流水线。图像流水线包括硬接线电路和/或可编程电路(例如,固定功能或可编程电路中的至少一者),以处理传感器的输出,以生成将在所显示的图像中的像素的像素值。
CPU 16可以包括控制设备10的操作的通用处理器或专用处理器。用户可以向设备10提供输入以使得CPU 16执行一个或多个软件应用。在CPU 16上执行的软件应用可以包括例如图形用户界面应用或另一程序。作为一个示例,CPU 16可以执行一个或多个软件应用,其生成用于在显示面板28上示出的图标的图像内容。作为另一示例,CPU 16可以执行生成供用户阅读的文本的应用,例如网络浏览器应用。作为另一示例,CPU 16可以执行示出在设备10上接收和存储的文本消息的应用。
CPU 16执行的以上示例应用是其中CPU 16生成用于供显示的图像内容的数据的示例。然而,可以存在CPU 16执行的其它示例应用,这些应用不生成用于图像内容的数据,诸如操作系统。此外,CPU 16可以被硬接线以生成用于图像内容的数据,而不是执行应用以生成用于图像内容的数据。
关于使用针对CPU 16的固定功能和可编程电路来生成用于将被显示在显示面板28上的图像内容的数据,可以存在各种组合和排列。上文提供了一些示例,并且这些示例不应当被认为是限制性的。
在CPU 16上执行的软件应用可以包括一个或多个图形渲染指令,这些指令指导GPU 18引发对用于存储在系统存储器30中的图形数据的渲染。在一些示例中,软件指令可以遵循图形应用编程接口(API),诸如开放图形库
Figure BDA0002566455710000081
API、开放图形库嵌入式系统(OpenGL ES)API、OpenCL API、Direct3D API、X3D API、RenderMan API、WebGL API、或任何其它公共或专有标准图形API。所述技术不应当被认为限于要求特定的API。
存储器控制器24促进进入系统存储器30和从系统存储器30出来的数据的传输。例如,存储器控制器24可以接收存储器读和写命令,并且为关于存储器30的这种命令服务,以便为计算设备10中的组件提供存储器服务。存储器控制器24通信地耦合到系统存储器30。尽管在图1的设备10的示例中将存储器控制器24示为与CPU 16和系统存储器30两者分开的处理电路,但是在其它示例中,可以在CPU 16和系统存储器30中的一者或两者上实现存储器控制器24的一些或全部功能。
系统存储器30可以存储可由相机处理器14、CPU 16、GPU 18和显示处理器26访问的程序模块和/或指令和/或数据。例如,系统存储器30可以存储用户应用(例如,游戏应用)、来自GPU 18的所得到的图像等。系统存储器30可以另外存储供设备10的其它组件使用和/或由其生成的信息。例如,系统存储器30可以充当用于相机处理器14、CPU 16、GPU 18和显示处理器26的设备存储器。系统存储器30可以包括一个或多个易失性或非易失性存储器或存储设备,诸如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质。
在一些示例中,系统存储器30可以包括使得相机处理器14、CPU 16、GPU 18和显示处理器26执行归属于本公开内容中的这些组件的功能的指令。因此,系统存储器30可以是具有存储在其上的指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器(例如,相机处理器14、CPU 16、GPU 18和显示处理器26)执行各种功能。
在一些示例中,系统存储器30是非暂时性存储介质。术语“非暂时性”指示存储介质不是体现在载波或传播的信号中的。然而,术语“非暂时性”不应当被解释为意指系统存储器30是不可移动的或者其内容是静态的。作为一个示例,系统存储器30可以从计算设备10中移除,并且移动到另一设备。作为另一示例,可以将与系统存储器30基本类似的存储器插入到计算设备10中。在某些示例中,非暂时性存储介质可以存储可以随时间变化的数据(例如,在RAM中)。
相机处理器14、CPU 16和GPU 18可以将图像数据等存储在系统存储器30内分配的各个缓冲区中。显示处理器26可以从系统存储器30中取得数据,并且处理该数据以生成图像内容。显示处理器26可以将显示面板28配置为显示由相机处理器14、CPU 16和GPU 18生成的数据所表示的图像内容。在一些示例中,显示处理器26可以包括数模转换器(DAC),DAC被配置为将从系统存储器30中取得的数字值转换为可由显示面板28消耗的模拟信号。显示处理器26通常可以执行滤波、旋转和其它此类示例操作,以处理被存储在存储器30中的数据,并且生成图像内容以供显示在显示面板28上。在其它示例中,显示处理器26可以将数字值直接传递到显示面板28以进行处理。
在一些示例中,显示处理器26可以合成来自不同数据源(例如,相机处理器14、CPU16和/或GPU 18)的数据,以生成合成图像帧以供在显示面板28上显示。例如,由相机处理器14、CPU 16和/或GPU 18中的每一者生成的数据可以对应于不同的层。此外,一个层可以是用于CPU 16执行的使得GPU 18生成第一图形数据集合的第一应用,而另一层可以是用于CPU 16执行的使得GPU 18生成第二图形数据集合的第二应用。显示处理器26可以取得用于这些层中的每个层的数据,并且将这些层混合或拼接在一起以形成显示面板28显示的合成图像帧。
作为一个示例,CPU 16可以执行第一应用,第一应用使得GPU 18渲染针对当前电池寿命和连接强度的图形数据。CPU 16可以执行第二应用,第二应用使得GPU 18生成关于接收到的短消息服务(SMS)文本的信息。针对当前电池寿命和连接强度的图形数据可以形成第一层,并且针对SMS文本的图形数据可以形成第二层。在该示例中,显示处理器26可以将第一层和第二层拼接在一起以形成合成帧。例如,假设第一层被显示在显示面板28的顶部,而第二层被显示在第一层之下。在该示例中,显示处理器26可以将第二层拼接到第一层的底部以形成合成帧。相应地,显示处理器26可以包括诸如混合和拼接电路之类的处理电路,以将各层合成在一起并且形成合成帧。
如上所述,GPU 18生成被存储在系统存储器30中的图形数据。作为一个示例,系统存储器30包括应用缓冲区32,并且GPU 18将图形数据存储在应用缓冲区32中。显示处理器26从应用缓冲区32中取得图形数据,并且生成图像内容以显示在显示面板28上。
显示处理器26生成并且使得图像内容被显示在显示面板28上的速率被称为显示器刷新速率。作为一个示例,显示处理器26可以以60帧每秒(fps)来生成图像内容。显示处理器26生成图像内容的速率可以是基于各种因素的,诸如用户正在与设备10交互的方式、显示面板28正在显示的图像内容的类型等。
作为一个示例,显示面板28可以显示图形用户界面(GUI)。用户可以例如通过上下滚动图像内容(例如,使图像内容移位)来与GUI进行交互。为了良好的用户体验,显示处理器26可以以相对高的刷新速率来刷新显示面板28。例如,针对滚动的良好用户体验是当图像内容看起来在显示面板28上无缝滚动,而不是卡顿地滚动。为了实现这种无缝滚动,显示处理器26可以以相对高的显示器刷新速率利用新图像内容来刷新显示面板28。
因为显示处理器26可以以相对高的显示器刷新速率,利用新图像内容来刷新显示面板,所以GPU 18可以以相对高的速率来渲染图形数据,使得显示处理器26可以实现高显示器刷新速率。例如,在正常操作期间,显示处理器26可以以30fps刷新显示面板28,并且GPU 18可以以第一吞吐率来渲染图形数据,使得显示处理器26可以达到30fps的显示器刷新速率。当用户正在滚动显示面板28上的图像内容时,显示处理器26可以以120fps来刷新显示面板28以实现无缝滚动的外观。相应地,GPU 18可以以第二吞吐率来渲染图形数据,使得显示处理器26可以达到120fps的显示器刷新速率,其中与GPU 18在针对30fps的显示器刷新速率进行操作的第一吞吐率相比,GPU 18在针对120fps的显示器刷新速率进行操作的第二吞吐率要大得多。
使得GPU 18和显示处理器26以高吞吐率进行操作会消耗功率,导致功率损耗。此外,由于各种系统负载,不可能使得GPU 18和显示处理器26以高吞吐率进行操作。如果GPU18或显示处理器26中的任何组件无法处理高吞吐率,则这可能导致显示卡顿。
在本公开内容中描述的一个或多个示例中,GPU 18可以被配置为渲染针对图像帧的帧与帧之间变化的一个或多个部分的图形数据,而不是GPU 18生成针对整个帧的图形数据。以这种方式,与GPU 18重新渲染在帧与帧之间变化的图形数据和在帧与帧之间未变化的图形数据两者相比,GPU 18可以渲染较少的图形数据。
作为一个示例,显示图像内容的显示面板28可以接收用户交互以将图像内容移位。作为响应,先前图像内容中的一些图像内容不再是可见的,一些新图像内容被添加,先前图像内容中的一些图像内容被移位(例如,相同的图像内容,但是位于不同的位置中),并且先前图像内容中的一些图像内容保持相同(例如,在相同位置中的相同图像内容)。例如,假设用户向上滚动图像内容。在这种情况下,图像内容的顶部部分离开显示面板28并且不再是可见的,并且在显示面板28的底部存在新图像内容。所有其它图像内容在显示面板28上被向上移位。
在该示例中,GPU 18可以被配置为渲染针对帧的对应于显示面板28的底部的部分的图形数据。GPU 18可以不重新渲染针对帧的其它部分的图像数据,这些部分具有相同的图像内容,但是被垂直移位。这样,与GPU 18渲染所有的图形数据相比,GPU 18可以不以高吞吐率进行操作,因为存在较少的图形数据要渲染。
在常规技术中,GPU 18可能在滚动操作之后重新渲染针对整个帧的图形数据,即使仅存在图像内容的移位而不存在GPU 18需要渲染很多新图形数据。例如,在这些常规技术中,每次存在用户交互时,GPU 18可能重写整个应用缓冲区32。
然而,可能存在针对使得GPU 18重新渲染图形数据并且在应用缓冲区32中重写图形数据的原因。显示处理器26可以逐行顺序地从应用缓冲区32中取得图形数据,并且基于图形数据在应用缓冲区32中被排列的次序来生成图像内容。例如,应用缓冲区32的存储器位置可以是可经由连续虚拟存储器地址访问的,并且显示处理器26可以基于图形数据的连续寻址来顺序地取得图形数据。
为了刷新显示面板28,显示处理器26可以从应用缓冲区32读取针对一行的图像数据。显示处理器26可以基于图形数据从应用缓冲区32中被取得的次序,来确定根据该行的图形数据而生成的图像内容要被显示在何处。例如,如果第一图形数据集合被存储在应用缓冲区32的存储器位置(该存储器位置具有与用于应用缓冲区32的存储第二图形数据集合的存储器位置的虚拟地址相比较小的虚拟地址)中,则显示处理器26可以确定与第一图形数据集合相对应的图像内容被显示在与第二图形数据集合相对应的图像内容上方。
在本公开内容中描述的一种或多种示例技术中,因为GPU 18可以渲染针对帧与帧之间变化的部分的图形数据,而不是所有的图形数据,所以GPU 18可以将图形数据存储在应用缓冲区32的不同部分处,使得图形数据被存储在应用缓冲区32中的次序可以不一定是图形数据的对应图像内容要被排列的次序。为了解决这个问题,如更加详细地描述的,CPU16可以经由执行显示器驱动器,利用信息向显示处理器26进行指导,该信息指示图像内容的哪些行是与应用缓冲区32的哪个部分相关联的。这样,由GPU 18针对所有图像内容生成的图形数据可以不是利用连续虚拟地址存储的。然而,CPU 16可以利用在图像内容的行与在应用缓冲区32中存储对应图形数据的部分之间的映射来指导显示处理器26。
在帧与帧之间,针对第一帧显示的图像内容中的一些图像内容不再被显示在第二帧中。例如,对于滚动移动,当显示第二帧的图像内容时,在第一帧的顶部的图像内容不再是可见的。对于第一帧,应用缓冲区32可以存储与在第一帧的顶部处的图像内容相对应的图形数据。然后,对于第二帧,应用缓冲区32可以存储过时数据。例如,与针对第一帧的顶部的图像内容相对应的图形数据现在是过时的。过时数据是被存储在应用缓冲区32中的用于不再被显示的图像内容的数据。
在一些示例中,GPU 18可以将针对第二帧的新渲染的图形数据存储在应用缓冲区32的存储过时数据的部分中。例如,如果在用户交互之后,第一帧的图像内容的X行不再是可见的,则将存在第二帧的新图像内容的可见的X行。因此,应用缓冲区32的存储与第一帧的图像内容的X行相对应的图形数据(例如,过时数据)的部分可以是用于存储与第二帧的图像内容的X行相对应的图形数据所需要的确切大小。
以这种方式,GPU 18可以被配置为将图形数据存储在应用缓冲区32的任意部分中(例如,GPU 18可以被配置用于任意块渲染)。再次,在一些常规技术中,GPU 18将重新渲染所有的图形数据并且按照其对应的图像内容将被排列的次序来存储图形数据,而不是GPU18将图形数据存储在应用缓冲区32的任意部分中。在本公开内容中描述的一种或多种示例技术中,GPU 18可以仅渲染针对第二帧的具有新图像内容的部分的图形数据,而不是重新渲染所有的图形数据。这可以减少GPU 18渲染的图形数据的量,从而允许GPU 18以相对高的吞吐率来渲染图形数据。
然而,因为图形数据被存储在应用缓冲区32的任意部分中,所以图形数据可能不是按照对应的图像内容将被排列的次序来存储的。例如,应用缓冲区32可以将用于图像内容的图形数据存储在其虚拟地址不一定指示图像内容将位于何处的存储器位置中,而不是应用缓冲区32将图形数据连续地存储在具有连续地址的存储器位置中。例如,如果图像内容将按照虚拟地址的次序来排列,则显示处理器26可以从应用缓冲区32顺序地读取图形数据(例如,从虚拟地址的开头开始并且进行读取直到到达虚拟地址的结尾为止),并且按该次序来生成对应的图像内容。
在本公开内容中描述的一个或多个示例中,由于图形数据可能不是按照对应的图像内容将被排列的次序来存储的,因此显示处理器26可能无法基于其虚拟地址来顺序地读取存储器位置。例如,用于被存储在具有较高虚拟地址的存储器位置中的图形数据的第一图像内容集合可以被显示在用于被存储在具有较低虚拟地址的存储器位置中的图形数据的第二图像内容集合上方。但是,如果显示处理器26按照虚拟地址的次序来排列图像内容,则可能将第二图像内容集合显示在第一图像内容集合上方。
如更加详细地描述的,在一个或多个示例中,CPU 16可以生成GPU像素块表,该GPU像素块表指示图像内容的哪些行是与应用缓冲区的哪些部分相关联的。然后,显示处理器26可以读取图形数据,生成对应的图像内容,并且基于GPU像素块表按照次序来排列图像内容。
如上所述,GPU 18可以被配置为将与新的图像帧相对应的图形数据渲染在应用缓冲区32的具有过时数据的部分中。在一个或多个示例中,CPU 16(例如,经由执行图形驱动器)可以确定应用缓冲区32的存储过时数据的部分。例如,CPU 16可以执行窗口管理器。窗口管理器的目的可以是确定如何排列显示面板28上的图像内容。响应于用户将图像内容从图像内容在被显示的帧中的位置移位,窗口管理器可以接收“滚动视图”作为输入信息。滚动视图可以是指示移位的动量(例如,图像内容被移位多远和多快)的信息。
基于该动量,CPU 16可以确定移位运动矢量。移位运动矢量指示移位的长度和方向。基于移位的长度和方向,CPU 16(例如,经由窗口管理器)可以确定将图像内容从其在帧中的位置移位多少以及将图像内容移位到何处。CPU 16可以基于将图像内容移位多少以及何处,来确定哪些图像内容不再是可见,并且将信息提供给在CPU 16上执行的图形驱动程序,该信息标识哪些图像内容不再是可见的以及在应用缓冲区32中用于不再可见的该图形内容的图形数据被存储在何处。图形驱动器然后可以指导GPU 18关于要渲染哪些图形内容以及在应用缓冲区32中将图像内容渲染到何处以便重写过时数据。
可以存在其它方式来确定图像内容相对于图像内容在被显示的帧中的位置的移位量,并且基于图像内容的所确定的移位来确定应用缓冲区32的具有过时数据的部分。例如,设备10的触摸控制器(未示出)可以输出移位运动矢量的信息,而不是使用窗口管理器。在本公开内容中描述的技术不应当被认为限于用于确定图像内容相对于图像内容在被显示的帧中的位置的移位量以及基于所确定的移位量来确定应用缓冲区32的具有过时数据的部分的这些示例方式。
显示处理器26可以将从应用缓冲区32中取得的图形数据与其它层进行合成(例如,混合或拼接)。在一些示例中,显示处理器26是基于行的引擎,这意味着显示处理器26将内容逐行输出到显示面板28。
如果显示面板28是视频模式面板,则显示面板28可能不包括其自己的面板存储器(例如,面板RAM)。因此,对于这样的示例,显示处理器26可以利用合成图像帧来连续地刷新显示面板28。例如,在每个刷新周期(例如,每次将利用图像内容刷新显示面板28时),显示处理器26重新生成图像内容并且将图像内容逐行传送到显示面板28。
在一些示例中,诸如其中显示面板28被配置为智能显示面板的示例,显示面板28可以包括其自己的面板存储器。对于这样的示例,面板存储器可以包括显示缓冲区。例如,显示处理器26可以将合成帧逐行存储到显示缓冲区中,并且显示面板28的硬件可以从显示缓冲区读取针对合成帧的图像内容,并且生成图像内容以显示在显示面板28上。在这样的示例中,显示面板28的硬件从其显示缓冲区读取图像内容并且刷新在显示面板28上的图像内容,这可以独立于显示处理器26的操作。
在其中显示缓冲区可用(例如,命令模式或智能模式)的一个示例中,CPU 16可以确定哪些层具有在合成帧与合成帧之间变化的图像内容。例如,GPU 18可以使用应用缓冲区32来映射将如何排列与用于特定应用的图像内容相对应的图形数据。然而,可以存在各自生成其自己的相应层的多个应用,显示处理器26将这些层合成。
CPU 16可以映射合成帧的哪些部分是来自哪个层的。在用于这些层中的一个或多个层(但是不一定用于所有层)的图像内容变化的示例中,CPU 16可以使得显示处理器26仅更新显示缓冲区中的存储用于变化的层的图像内容的部分。然后,显示面板28的硬件可以按照将图像内容被存储在显示缓冲区中的次序来读出图像内容,以刷新显示面板28。
在一些示例中,显示面板28可以是智能面板,其包括用于显示缓冲区的存储器,但是还被配置为从任意位置从显示缓冲区读取图像内容。例如,在其中显示面板28包括显示器缓冲区的以上示例中,显示面板28可以被认为是智能显示面板。在其中显示面板28包括显示缓冲区并且可以从任意位置读取显示缓冲区的示例中,显示面板28可以被认为是具有分散块扫描的能力的智能显示面板。
对于其中显示面板28是具有分散块扫描的能力的智能显示面板的示例,类似于GPU像素块表,CPU 16和/或显示处理器26可以生成显示像素块表。在这样的示例中,显示处理器26可以将用于各层的合成图像内容存储在显示缓冲区的任意位置中,并且显示像素块表可以指示被存储在显示缓冲区中的图像内容将被排列在显示面板28上的次序。显示面板28的硬件可以接收显示像素块表,并且按照显示像素块表所指示的方式将图像内容排列在显示面板28上。
在本公开内容中,仅为了方便将关于滚动图像内容作为图像内容移位的一个示例来描述示例技术,并且示例技术不应当被认为是限制性的。在本公开内容中描述的示例技术可以适用于各种各样的不同情况。作为一个示例,在用户正在放大或缩小图像内容的示例中,CPU 16可以增加GPU 18和显示处理器26的吞吐量,以考虑图像内容的快速变化。CPU16、GPU 18和显示处理器26可以实现在本公开内容中描述的示例技术中的一种或多种示例技术,以确保当用户正在放大和缩小图像内容时,GPU 18能够以足够高的吞吐率来生成针对帧的图形数据,并且显示处理器26能够刷新显示面板28以实现更高的显示器刷新速率。
作为另一示例,CPU 16可以执行允许用户包括快速移动的图形的应用。CPU 16、GPU 18和显示处理器26可以实现在本公开内容中描述的示例技术中的一种或多种示例技术,以确保GPU 18能够以足够高的吞吐率来生成针对帧的图形数据,并且显示处理器26能够刷新显示面板28以实现更高的显示器刷新速率,使得移动图形看起来平滑地移动。例如,如果GPU 18正由于没有足够快地生成图形数据而导致帧延迟,并且因此影响刷新速率,则可能存在图像内容是否平滑滚动的影响。可以存在针对在本公开内容中描述的示例技术的其它示例用途,并且与GUI的交互或滚动图像内容仅是为了帮助理解的一个示例。
此外,示例技术可以是迭代的。例如,在GPU 18存储针对当前帧的图形数据之后,当前帧变为先前帧,并且存在GPU 18生成针对其的图形数据的新的当前帧。CPU 16可以逐帧更新GPU像素块表以指示图形数据的次序。CPU 16或显示处理器26可以类似地逐帧更新显示像素块表。
相应地,在一个或多个示例中,处理电路(例如,CPU 16、GPU 18和显示处理器26中的任何一者或任何组合)可以确定图像内容相对于图像内容在显示面板28上显示的第一帧中的位置的移位量。例如,CPU 16可以经由窗口管理器或来自触摸控制器的信息,来确定图像内容相对于图像内容在第一帧中的位置的移位量。处理电路可以基于图像内容的所确定的移位来确定应用缓冲区32的具有过时数据的部分。在一些示例中,过时数据是被存储在应用缓冲区32中的针对不再被显示的图像内容的数据。
处理电路可以指导GPU 18将针对与第一帧的图像内容不同的、第二帧的图像内容的图形数据渲染到应用缓冲区32的所确定的部分,而不使得GPU 18重新渲染针对与第一帧的图像内容相同的、第二帧的图像内容(例如,相同的图像内容,但是由于移位而位于不同的位置)的图形数据。例如,处理电路可以使得GPU 18仅渲染与第二帧中的新图像内容相对应的图形数据,而无需重新渲染所有相同的其它图形数据。在该示例中,新图像内容意指在第一帧中不存在的图像内容,并且其它图形数据意指在第一帧和第二帧中存在的图像内容,即使该图像内容在第一帧和第二帧中不是位于相同的位置中。
图2A-2C是示出作为图形用户界面(GUI)的一部分的滚动图像内容的示例的概念图。作为一个示例,显示面板28可能最初正在显示在图2A中所示的图像内容的第一帧。例如,GPU 18可以渲染来自第一应用的针对形成第一层的静态图像内容34A的图形数据。GPU18可以渲染来自第二应用的针对形成第二层的静态图像内容34B的图形数据。在图2A的示例中,GPU 18可以渲染来自第三应用的针对滚动图像内容36A-36D的图形数据。显示处理器26可以合成(例如,混合或拼接)第一层、第二层和第三层以生成用于在显示面板28上显示的合成帧。
在图2A-2C中的示例中,滚动图像内容36A-36F被示为离散的块,以表示图像内容的在帧与帧之间变化的部分。作为一个示例,滚动图像内容36A-36F中的每一者可以表示帧与帧之间被移位的图像内容的最小量。然而,具有大于图像内容36A-36F中的一者的的尺寸的图像内容可以在帧与帧之间被移位。此外,图像内容36A-36F的尺寸可以是相同或不同的。
图2B表示在图2A之后的时间实例,其中,图像内容相对于图像内容在图2A中显示的帧中的位置被向上移位。相应地,对于图2B,显示面板28可以显示在第一帧之后发生的第二帧。在第二帧中,滚动图像内容36B-36D全部相对于图2A中的图像内容36B-36D的位置被向上移位。滚动图像内容36A不再被显示,并且滚动图像内容36E是新图像内容。
在一个或多个示例中,GPU 18可以不重新渲染与针对静态图像内容34A和34B的图像内容相对应的图形数据,或者不重新渲染与针对第二帧的图像内容36B-36D相对应的图形数据。确切而言,GPU 18可以渲染与图像内容36E相对应的图形数据(这需要较少的处理功率和时间),然后重新渲染所有的滚动图像内容36B-36E。在一些示例中,GPU 18可以将与图像内容36E相对应的图形数据渲染到应用缓冲区32的存储与图像内容36A相对应的图形数据的部分中,即通过在应用缓冲区32中利用图像内容36E擦写图像内容36A。因为图像内容36A是不可见的,所以与图像内容36A相对应的图形数据是过时的,并且其在应用缓冲区32中的图形数据可以利用针对滚动图像内容36E的图形数据来重写,即使得图像内容36E擦写应用缓冲区32中的图像内容36A。因此,GPU 18可以被配置为将图形数据存储在应用缓冲区32中的任意存储器位置中,而不是始终重新渲染所有的图形数据并且将与连续图像内容相对应的图形数据存储在应用缓冲区32中的具有连续虚拟地址的存储器位置中。
GPU 18可以不重新渲染针对第二帧的滚动图像内容36B-36D。这可以意味着,针对滚动图像内容36B-36D的图形数据被存储在应用缓冲区32中的位置没有变化。然而,滚动图像内容36B-36D将被显示在显示面板28上的位置在第一帧与第二帧之间变化,尤其是相对于静态图像内容34A和静态图像内容34B而言。例如,在第二帧中,滚动图像内容36B邻接静态图像内容34A,但是在第一帧中,图像内容36B和静态图像内容34A被滚动图像内容36A隔开。在一个或多个示例中,CPU 16可以生成指示图形数据在应用缓冲区32中的相对排列的信息(例如,GPU像素块表),使得显示处理器26可以以正确的次序来生成图像内容。
图2C表示在图2B之后的时间实例,其中,用户进一步向上滚动图像内容。相应地,对于图2C,显示面板28可以显示在第二帧之后发生的第三帧。在第三帧中,滚动图像内容36C-36E全部相对于图2B中的图像内容36C-36E的位置被向上移位。滚动图像内容36B不再被显示,并且滚动图像内容36F是新图像内容。
在一个或多个示例中,GPU 18可以不重新渲染与针对静态图像内容34A和34B的图像内容相对应的图形数据,或者不重新渲染与针对第二帧的图像内容36C-36E相对应的图形数据。确切而言,GPU 18可以渲染与图像内容36F相对应的图形数据(这需要较少的处理功率和时间),然后重新渲染所有的滚动图像内容36C-36F。在一些示例中,GPU 18可以将与图像内容36F相对应的图形数据渲染到应用缓冲区32的存储与图像内容36B相对应的图形数据的部分中,即通过在应用缓冲区32中利用图像内容36F擦写图像内容36B。由于图像内容36B是不可见的,因此与图像内容36B相对应的图形数据是过时的,并且其在应用缓冲区32中的图形数据可以利用针对滚动图像内容36F的图形数据重写。
GPU 18可以不重新渲染针对第三帧的滚动图像内容36C-36E。这可以意味着针对滚动图像内容36C-36E的图形数据被存储在应用缓冲区32中的位置没有变化。然而,滚动图像内容36C-36E将被显示在显示面板28上的位置在第二帧与第三帧之间变化,尤其是相对于静态图像内容34A和静态图像内容34B而言。例如,在第三帧中,滚动图像内容36C邻接静态图像内容34A,但是在第二帧中,图像内容36C和静态图像内容34A被滚动图像内容36B隔开。与上文类似,在一个或多个示例中,CPU 16可以更新指示图形数据在应用缓冲区32中的相对排列的信息(例如,更新GPU像素块表),使得显示处理器26可以以正确的次序生成图像内容。同样,GPU像素块表可以指示图像内容的哪些行是与应用缓冲区32的哪些部分相关联的。
图3A-3C是示出应用缓冲区的部分与显示面板的部分的示例映射的概念图。图3A-3C中的每个图分别示出了针对第一、第二和第三帧的显示面板28、应用缓冲区32和GPU像素块表38。在该示例中,假设被显示在显示面板28上的图像内容的大小是720行。
如图3A所示,对于第一帧,显示面板28显示静态图像内容34A,之后是滚动图像内容36A-36D以及静态图像内容34B。应用缓冲区32将与静态图像内容34A、滚动图像内容36A-36D以及静态图像内容34B相对应的图形内容存储在被指派了连续虚拟地址的存储器位置中。
为了方便,假设连续虚拟地址的范围从0到720,使得每个连续虚拟地址对应于图像内容的一行。连续虚拟地址的范围从0到720使得每个连续虚拟地址对应于图像内容的一行,这仅是为了便于理解的示例。示例技术不限于此。
在该示例中,应用缓冲区32中的具有虚拟地址0-119的存储器位置可以存储静态图像内容34A,应用缓冲区32中的具有虚拟地址120-239的存储器位置可以存储滚动图像内容36A,应用缓冲区32中的具有虚拟地址240-359的存储器位置可以存储滚动图像内容36B,应用缓冲区32中的具有虚拟地址360-479的存储器位置可以存储滚动图像内容36C,应用缓冲区32中的具有虚拟地址480-599的存储器位置可以存储滚动图像内容36D,并且应用缓冲区32中的具有虚拟地址600-719的存储器位置可以存储静态图像内容34B。在图3A-3C中,针对静态图像内容34A、滚动图像内容36A-36F和静态图像内容34B的图形数据不一定必须被存储在应用缓冲区32中连续的物理位置中。确切而言,CPU 16可以指派应用缓冲区32内的连续虚拟地址。然而,图形数据有可能被存储在应用缓冲区32中的连续存储位置中。
在图3A中,GPU像素块表38存储指示行范围是0-719且具有0偏移的信息。行范围是指图像内容的连续行数。偏移是指被添加到虚拟地址的开头以确定显示处理器26将从何处读取图形数据的偏移。以此方式,GPU像素块表38示出了在图像内容将被显示的位置(例如,图像内容将被显示的次序)与对应的图形数据在应用缓冲区32中被存储的虚拟地址之间的映射。
GPU像素块表38存储指示行范围0-710且具有0偏移的信息可以意味着,可以基于图形数据在应用缓冲区32中被存储在其中的存储器位置的虚拟地址的次序来生成720行的图像内容。例如,显示处理器26可以基于图形数据来生成图像内容,并且按照图形数据被存储在其中的虚拟行地址次序来排列图像内容。例如,显示处理器26可以按照特定的扫描次序来读取图形数据,其中扫描次序是基于图像内容将被排列的次序。在图3A中,显示处理器26可以按照虚拟地址的次序从应用缓冲区32中读取图形数据,而不进行任何修改。
在图3B中,对于第二帧,可以存在针对滚动图像内容36B-36D的图像内容相对于图3A中的图像内容36B-36D的位置的向上移位,并且存在针对滚动图像内容36E的新图像内容,如关于显示面板28所示的。在一个或多个示例中,作为处理电路的示例的CPU 16可以确定针对所显示的第一帧的图像内容的移位量,以确定多少新图像内容被显示。例如,CPU 16可以确定存在第一帧的图像内容的足够移位以将滚动图像内容36E包括到第二帧中,并且从第二帧中排除图像内容36A。
CPU 16还可以基于所确定的移位来确定应用缓冲区32的哪些部分存储过时数据。GPU 18可以将针对图像内容36E的图形数据渲染到应用缓冲区32的存储过时数据的部分(诸如先前存储图像内容36A的部分)中。例如,因为滚动图像内容36A不是可见的,所以不再需要针对滚动图像内容36A的图形数据。因此,GPU 18可以将针对图像内容36E的图形数据渲染到应用缓冲区32的用于滚动图像内容36A的部分中,即,通过在应用缓冲区32中利用图像内容36E擦写图像内容36A。在图3A中,图像内容36A被存储在应用缓冲区32中的具有虚拟地址120-239的存储器位置中。相应地,GPU 18可以将针对图像内容36E的图形数据渲染到应用缓冲区32的具有虚拟地址120-239的存储器位置中,如图3B所示。
在图3B中,如果显示处理器26将基于在应用缓冲区32中存储图形数据的存储器位置的虚拟地址的次序来排列图像内容,则显示面板28上的图像内容将是不正确的。例如,显示处理器26可能将滚动图像内容36E排列在滚动图像内容36B上方,因为存储针对图像内容36E的图形数据的存储器位置的虚拟地址小于存储针对滚动图像内容36B的图形数据的存储器位置的虚拟地址。
因此,CPU 16可以基于被存储在应用缓冲区32中的对应图形数据来更新GPU像素块表38,以指示图像内容应当被排列的次序。基于GPU 18将图形数据渲染到应用缓冲区32的存储过时数据的部分以及第二帧的图像内容的位置,GPU 16可以更新GPU图像块表38,该GPU像素块表38指示图像内容的哪些行是与应用缓冲区32的哪些部分相关联的。用于更新GPU像素块表38的一种示例方式是生成用于针对应用缓冲区32的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在应用缓冲区32中被存储在何处。
例如,CPU 16可以将在图3A中所示的GPU像素块表38更新为在图3B中所示的GPU像素块表38。在GPU像素块表38中,图像内容的行0-119(例如,GPU像素块表38中的行范围0-119)对应于静态图像内容34A。静态图像内容34A被存储在应用缓冲区32中的具有虚拟地址0-119的存储器位置中。因此,不需要偏移(例如,GPU像素块表38中的0偏移),并且显示处理器26可以从应用缓冲区32的具有虚拟地址0-119的存储器位置读取图形数据。
然而,针对行120-479的图像内容(例如,针对滚动图像内容36B-36D在显示面板28上的位置)没有被存储在应用缓冲区的具有从120开始的虚拟地址的存储器位置中。确切而言,用于针对行120–479的图像内容的存储器位置具有虚拟地址240-599。例如,在图3B中,存储针对静态图像内容34A的图形数据的存储器位置的虚拟地址为0-199,存储针对滚动图像内容34E的图形数据的存储器位置的虚拟地址为120-239,以此类推。因此,应用缓冲区32的存储针对行120-479的图像内容(对应于滚动图像内容36B-36D)的存储器位置的虚拟地址从具有偏移240的虚拟地址(例如虚拟地址240)开始。因此,在图3B中,GPU像素块表38示出了针对行范围120-479的偏移240。显示处理器26可以从具有虚拟地址240-599的存储器位置开始读取图形数据,以生成滚动图像内容36B-36D。
在显示面板28上,在滚动图像内容36D之后,下一个图像内容是滚动图像内容36E。滚动图像内容36D在行479处结束。因此,滚动图像内容36E具有行范围480-599。针对滚动图像内容36E的图形数据被存储在具有虚拟地址120-239的存储器位置中。因此,为了生成针对与滚动图像内容36E相对应的行480-599的图像内容,显示处理器26可以从具有虚拟地址120-239的存储器位置读取图形数据。在这种情况下,对于行范围480-599,GPU像素块表38示出了偏移120。
在滚动图像内容36E之后,显示面板28显示静态图像内容34B。针对静态图像内容34B的行范围是600-719。此外,应用缓冲区32的具有虚拟地址600-719的存储器位置存储针对静态图像内容34B的图形数据。因此,对于行范围600-719,GPU像素块表38示出了偏移600。显示处理器26可以从应用缓冲区32的具有虚拟地址600-719的存储器位置读取图形数据,以生成针对静态图像内容的图像内容34B。
在图3C中,对于第三帧,可以存在针对滚动图像内容36C-36E的图像内容相对于图3B中的图像内容36C-36E的位置的进一步向上移位、以及针对滚动图像内容36F的新图像内容,如关于显示面板28所示出的。在一个或多个示例中,GPU 18可以将针对图像内容36F的图形数据渲染到应用缓冲区32的存储过时数据的部分中。例如,因为滚动图像内容36B不是可见的,所以不再需要针对滚动图像内容36B的图形数据。因此,GPU 18可以将针对图像内容36F的图形数据渲染在应用缓冲区32的用于滚动图像内容36B的部分中,即通过在应用缓冲区32中利用图像内容36F擦写图像内容36B。在图3B所示,图像内容36B被存储在应用缓冲区32中的具有虚拟地址240-379的存储器位置中。因此,GPU 18可以将针对图像内容36F的图形数据渲染到应用缓冲区32的具有虚拟地址240-379的存储器位置中,擦写图像内容36B,如图3C所示。
在图3C中,如果显示处理器26将基于在应用缓冲区32中存储图形数据的存储器位置的虚拟地址的次序来排列图像内容,则显示面板28上的图像内容将是不正确的。例如,显示处理器26可能将滚动图像内容36E和36F排列在滚动图像内容36C上方,因为存储针对图像内容36E和36F的图形数据的存储器位置的虚拟地址小于存储针对滚动图像内容36C的图形数据的存储器位置的虚拟地址。此外,滚动图像内容36E将在滚动图像内容36F上方,因为存储针对图像内容36E的图形数据的存储器位置的虚拟地址小于存储针对图像内容36F的图形数据的存储器位置的虚拟地址。
因此,CPU 16可以基于被存储在应用缓冲区32中的对应图形数据来更新GPU像素块表38,以指示图像内容应当被排列的次序。类似于上文,基于GPU 18将图形数据渲染到应用缓冲区32的存储过时数据的部分中以及第二帧的图像内容的位置,GPU 16可以更新GPU像素块表38,其指示图像内容的哪些行是与应用缓冲区32的哪些部分相关联的。用于更新GPU像素块表38的一种示例方式是生成用于针对应用缓冲区32的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在应用缓冲区32中被存储在何处。
例如,CPU 16可以将在图3B中所示的GPU像素块表38更新为在图3C中所示的GPU像素块表38。在GPU像素块表38中,图像内容的行0-119(例如,GPU像素块表38中的行范围0-119)对应于静态图像内容34A。静态图像内容34A被存储在应用缓冲区32中的具有虚拟地址0-119的存储器位置中。因此,不需要偏移(例如,GPU像素块表38中的0偏移),并且显示处理器26可以从应用缓冲区32的具有虚拟地址0-119的存储器位置读取图形数据。
然而,针对行120-359的图像内容(例如,滚动图像内容36C和36D在显示面板28上的位置)没有被存储在应用缓冲区的具有从120开始的虚拟地址的存储器位置中。确切而言,针对行120-359的图像内容的存储器位置具有虚拟地址360-599。例如,在图3C中,存储针对静态图像内容34A的图形数据的存储器位置的虚拟地址为0-199,存储针对滚动图像内容34E的图形数据的存储器位置的虚拟地址为120-239,以此类推。因此,应用缓冲区32的存储针对行120-359的图像内容(对应于滚动图像内容36C和36D)的存储器位置的虚拟地址从具有偏移360的虚拟地址(例如虚拟地址360)开始。因此,在图3C中,GPU像素块表38示出了针对行范围120-359的偏移360。显示处理器26可以从具有虚拟地址360-599的存储器位置开始读取图形数据,以生成滚动图像内容36C和36D。
在显示面板28上,在滚动图像内容36D之后,下一个图像内容是滚动图像内容36E。滚动图像内容36D在行359处结束。因此,滚动图像内容36E具有行范围360-479。针对滚动图像内容36E的图形数据被存储在具有虚拟地址120-239的存储器位置中。因此,为了生成针对与滚动图像内容36E相对应的行360-479的图像内容,显示处理器26可以从具有虚拟地址120-239的存储器位置读取图形数据。在这种情况下,GPU像素块表38示出了针对图像内容36E的偏移120。
在显示面板28上,在滚动图像内容36E之后,下一个图像内容是滚动图像内容36F。滚动图像内容36E在行479处结束。因此,滚动图像内容36F具有行范围480-599。针对滚动图像内容36F的图形数据被存储在具有虚拟地址240-359的存储器位置中。因此,为了生成针对与滚动图像内容36F相对应的行480-599的图像内容,显示处理器26可以从具有虚拟地址240-359的存储器位置读取图形数据。在这种情况下,GPU像素块表38示出了针对图像内容36F的偏移240。
在一些示例中,GPU像素块表38可以包括具有偏移120的行范围360-599,而不是含有具有偏移120的行范围360-479以及具有偏移240的行范围480-599。
在滚动图像内容36F之后,显示面板28显示静态图像内容34B。针对静态图像内容34B的行范围是600-719。同样,应用缓冲区32的具有虚拟地址600-719的存储器位置存储针对静态图像内容34B的图形数据。因此,对于行范围600-719,GPU像素块表38示出了偏移600。显示处理器26可以从应用缓冲区32的具有虚拟地址600-719的存储器位置读取图形数据,以生成针对静态图像内容34B的图像内容。
因此,图3A-3C的示例示出了应用缓冲区32的被表示为虚拟连续的图形数据的内容。在该示例中,应用缓冲区32在逻辑上被划分为具有与显示面板28的120行相对应的尺寸的块。例如,在图3A-3C中,应用缓冲区32包括六个逻辑块。CPU 16可以确定应用缓冲区32的逻辑块的尺寸和数量,并且确定在显示面板28上的图像内容与对应的图形数据在应用缓冲区32中被存储的位置之间的映射。例如,GPU像素块表38可以包括在显示面板28上的图像内容与其对应的图形数据在应用缓冲区32中被存储的位置之间的映射信息。
在本公开内容中描述的示例技术中,GPU 18可以被配置为将图形数据存储在应用缓冲区32的任意存储器位置处。此外,显示处理器26可以被配置为从应用缓冲区32的任意存储器位置读取图形数据。例如,GPU像素块表38可以指示显示处理器26将从何处读取图形数据以生成在显示面板28上正确排序的图像内容。
此外,在一些示例中,基于显示面板28的能力,CPU 16可以生成显示面板28用来从任意位置取得图像内容以重构图像内容的另一显示像素块表。显示面板28可以在视频模式面板或智能模式面板(也被称为命令模式面板)中操作。
在视频模式面板中,显示面板28不包括其自己的任何存储器,并且显示处理器26可以连续地刷新显示面板28。作为一个示例,对于在图3A中所示的第一帧,显示处理器26可以读取每个GPU像素块表38的图形数据并且刷新显示面板28。然而,对于在图3B中所示的第二帧,显示处理器26可以读取每个GPU像素块表38的所有图形数据并且刷新显示面板28。尽管第二帧中的大多数图像内容是与第一帧中的图像内容相同的,但是显示处理器26仍然可以利用第二帧的所有图像内容来刷新显示面板28。
然后,对于在图3C中所示的第三帧,显示处理器26可以读取每个GPU像素块表38中的所有图形数据,并且刷新显示面板28。与上文类似,尽管第三帧中的大多数图像内容是与第二帧中的图像内容相同的,但是显示处理器26仍然可以利用第三帧的所有图像内容来刷新显示面板28,因为显示面板28。尽管图像内容中的一些图像内容是相同的,但是显示处理器26仍然可以利用所有图像内容来刷新显示面板28,因为显示面板28在视频面板模式下不包括其自己的显示存储器来存储在帧与帧之间相同的图像内容。
在智能面板模式中,显示面板28包括可以存储图像内容的显示缓冲区。对于智能面板模式,在显示处理器26生成针对第二帧(例如,图3B的第二帧)的图像内容之后,显示处理器26或CPU 16可以确定第一帧(例如,图3A的第一帧)和第二帧的图像内容的差异。显示处理器26可以基于第一帧的图像内容和第二帧的图像内容的所确定的差异来更新显示缓冲区中的图像内容。这样,显示处理器26可以不需要将所有的图像内容重写到显示缓冲区中,并且可以仅将变化的图像内容写到显示缓冲区中,这可以加速图像内容的显示。例如,显示处理器26可以从应用缓冲区32取得仅对应于在帧与帧之间改变的图像内容的图形数据。
在智能面板模式的一些示例中,尽管显示面板28包括显示缓冲区,但是显示面板28的硬件可以被配置为在每个刷新周期内扫描出被存储在显示缓冲区中的所有图像内容。换句话说,每次要刷新显示面板28时,显示面板28的硬件可以扫描所有的显示缓冲区。例如,显示面板28的硬件可以不被配置为从显示缓冲区的任意位置读取图像内容,并且可以在每次刷新显示面板28时扫描所有的显示缓冲区。
然而,在智能面板模式(被称为具有分散扫描的能力的智能显示面板)的一些示例中,显示面板28的硬件可以被配置为从显示缓冲区的任意位置读取图像内容。作为一个示例,CPU 16可以经由显示驱动器生成显示像素块表,或者显示处理器26可以生成显示像素块表。类似于GPU像素块表,显示像素块表可以指示被存储在显示缓冲区中的图像内容在显示面板上将被显示在何处(例如,基于上述类似的虚拟寻址方案)。在这样的示例中,显示面板28的硬件可以基于被存储在显示缓冲区中的图像内容和显示像素块表来显示图像内容。
图4是更加详细地示出图1的CPU 16、GPU 18、显示处理器26和系统存储器30的框图。如图4所示,CPU 16、GPU 18、显示处理器26和存储器30彼此通信地耦合。CPU 16、GPU 18和显示处理器26可以彼此集成以形成片上系统(SoC)。
如图4所示,CPU 16被配置为执行应用39、图形应用编程接口(API)40、图形驱动器42、显示驱动器43和操作系统44。在图4的示例中,GPU18包括控制器46、着色器核48和一个或多个固定功能处理单元50。为了方便,本地存储器20也被示为GPU 18的一部分,但是也可以是外部的。
软件应用39可以包括使得图形内容被显示的一个或多个指令、或者使得在GPU 18上执行非图形任务(例如,通用计算任务)的一个或多个指令中的至少一些指令。软件应用39可以向图形API 40发出指令。图形API 40可以是运行时服务,其将从软件应用39接收的指令转换为图形驱动器42可消耗的格式。在一些示例中,图形API 40和图形驱动器42可以是相同软件服务的部分。
图形驱动器42经由图形API 40从软件应用39接收指令,并且控制GPU 18的操作以便为所述指令服务。例如,图形驱动器42可以制定一个或多个命令流,将命令流放置到存储器30中,并且指导GPU 18执行命令流。图形驱动器42可以将命令流放置到存储器30中,并且经由操作系统(OS)44(例如,经由一个或多个系统调用)与GPU 18进行通信。
在一个或多个示例中,OS 44可以被配置为在存储器30中为应用缓冲区32保留存储器位置。OS 44可以确定应用缓冲区32中的存储器位置的大小,并且还可以确定用于应用缓冲区32中的存储器位置的虚拟存储器地址。然而,CPU 16的其它组件可以确定应用缓冲区32的存储器位置的大小以及其相应的虚拟地址。
控制器46被配置为取得被存储在命令流中的命令,并且分派命令以用于在着色器核48和一个或多个固定功能单元50上执行。控制器46可以分派来自命令流的命令以在一个或多个固定功能单元50、或者着色器核48和一个或多个固定功能单元50的子集上执行。控制器46可以是GPU 18的硬件,可以是在GPU 18上执行的软件或固件,或这两者的组合。
着色器核48包括可编程电路(例如,在其上执行软件的处理核)。一个或多个固定功能单元50包括固定功能电路,其被配置为以最小的功能灵活性来执行有限的操作。着色器核48和一个或多个固定功能单元50一起形成被配置为执行图形处理的图形流水线。
着色器核48可以被配置为执行从CPU 16下载到GPU 18上的一个或多个着色器程序。在一些示例中,着色器程序可以是以高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)编写的程序的编译版本。在一些示例中,着色器核48可以包括多个处理单元,其被配置为并行地操作(例如,SIMD流水线)。着色器核48可以具有存储着色器程序指令的程序存储器以及指示在程序存储器中正在执行的当前指令或要提取的下一指令的执行状态寄存器(例如,程序计数器寄存器)。在着色器核48上执行的着色器程序的示例包括例如顶点着色器、像素着色器(也被称为片段着色器)、几何着色器、外壳着色器、域着色器、计算着色器和/或统一着色器。
固定功能单元50可以包括被硬接线以执行某些功能的硬件。尽管固定功能硬件可以是可经由一个或多个控制信号配置为例如执行不同的功能的,但是固定功能硬件通常不包括能够接收用户编译的程序的程序存储器。在一些示例中,一个或多个固定功能单元50可以包括例如执行栅格操作(例如,深度测试、裁剪测试、alpha混合等)的处理单元。
CPU 16的图形驱动器42可以被配置为将命令流写到存储器30中,并且GPU 18的控制器46可以被配置为从存储器30读取命令流的一个或多个命令。在一些示例中,命令流中的一个或两个命令流可以作为环形缓冲区存储在存储器30中。环形缓冲区可以是具有循环寻址方案的缓冲区,其中CPU 16和GPU 18维持与将数据写到环形缓冲区中和从环形缓冲区读取数据相关联的同步状态变量。例如,如果第一命令流是环形缓冲区,则CPU 16和GPU 18中的每一者可以将指示要被写入的下一个地址的写指针存储在环形缓冲区中,以及将指示要从其进行读取的下一个地址的读指针存储在环形缓冲区中。
当CPU 16将新命令写到环形缓冲区中时,CPU 16可以更新CPU 16中的写指针,并且指导GPU 18更新GPU 18中的写指针。类似地,当GPU 18从环形缓冲区中读取新命令时,GPU 18可以更新GPU 18中的读指针,并且指导CPU 16更新CPU 16中的读指针。其它同步机制是可能的。当读指针和/或写指针到达为环形缓冲区分配的地址范围内的最高地址时,读指针和/或写指针可以折回到最低地址以实现循环寻址方案。
现在将关于图4来描述示例图形驱动器42和示例GPU控制器46的示例操作。图形驱动器42从软件应用39接收一个或多个指令,所述一个或多个指令指定将由GPU 18执行的图形操作和/或通用计算操作。图形驱动器42将输出命令流放置到可由GPU控制器46访问的存储器30中。图形驱动器42向GPU控制器46通知对应于软件应用39的命令流可用于处理。例如,图形驱动器42可以向GPU寄存器(例如,由GPU 18轮询的GPU硬件寄存器和/或由GPU 18轮询的GPU存储器映射的寄存器)写入指示命令流准备好执行的一个或多个值。
在通知命令流准备好执行之后,GPU 18的控制器46可以确定当前在GPU 18上资源是否可用于开始执行命令流。如果资源是可用的,则控制器46开始分派命令流中的命令。
如图4所示,显示处理器26包括作为用于执行各种操作的一些示例电路的合成器电路56、色域校正电路57和滤波器电路58。作为一个示例,合成器电路56可以将由GPU 18或其它组件生成的不同层混合或拼接到用于显示的合成帧中。色域校正电路57可以被配置为补偿显示面板28显示全色域的能力的缺陷。滤波器电路58可以被配置为在输出到显示面板28之前对合成图像帧执行诸如旋转、着色的操作或其它这样的操作。CPU 16可以执行显示驱动器43以控制显示处理器26的操作。
在一个或多个示例中,响应于图像内容的移位,CPU 16可以确定被显示的第一帧的图像内容的移位量,并且基于图像内容的所确定的移位来确定应用缓冲区32的具有过时数据的部分。图形驱动器42可以指导控制器46将针对与第一帧的图像内容不同的、第二帧的图像内容的图形数据渲染到应用缓冲区的所确定的部分,而不使得GPU 18重新渲染针对与第一帧的图像内容相同的、第二帧的图像内容的图形数据。
作为一个示例,CPU 16可以执行窗口管理器,该窗口管理器确定指示用户交互的动量(例如,用户将图像内容移位多快和哪个方向)的移位运动向量。窗口管理器可以从触摸传感器驱动器接收指示用户将图像内容移位的方式的信息(例如,用户轻扫以移位图像内容的长度和方向)。
图形驱动器42可以接收移位运动矢量的信息,并且基于运动矢量来确定图像内容的移位量。例如,如果运动矢量指示60行向上移位,则图形驱动器42可以确定在第一帧的顶部的60行现在不是可见的。
图形驱动器42可以确定针对不再可见的图像内容的图形数据在应用缓冲区32中被存储在何处。例如,图形驱动器42可以确定在应用缓冲区32中存储针对不再被显示的图像内容的图形数据的虚拟地址。针对不再被显示的图像内容的图形数据是过时数据。图形驱动器42然后可以指导控制器46渲染与不同于第一帧的图像内容的第二帧的图像内容相对应的图形数据(例如,仅渲染针对于新图像内容的图形数据),而不重新渲染与和第一帧的图像内容相同的第二帧的图像内容相对应的图形数据。
图形驱动器42还可以基于GPU 18将图形数据渲染到应用缓冲区32的所确定的部分中来更新GPU像素块表38。例如,图形驱动器42可以生成用于针对应用缓冲区32的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在应用缓冲区32中被存储在何处。
显示驱动器43可以基于经更新的GPU像素块表38来指导显示处理器26生成第二帧的图像内容以显示在显示面板28上。例如,返回参考3C,显示驱动器43可以指导显示处理器26从应用缓冲区32的具有虚拟地址0-119的存储器位置(例如,针对静态图像内容34A)、之后从应用缓冲区32的具有虚拟地址360-599的存储器位置(例如,针对滚动图像内容36C和36D)、之后从应用缓冲区32的具有虚拟地址120-359的存储器位置(例如,针对滚动图像内容36E和36F)、并且之后从应用缓冲区32的具有虚拟地址600-719的存储器位置(例如,针对静态图像内容34B),来取得图形数据。
在一个或多个示例中,诸如在其中显示面板28是智能模式面板的示例中,在显示处理器26生成第二帧的图像内容之后,显示驱动器43可以确定第一帧和第二帧的图像内容的差异。显示驱动器43可以基于第一帧和第二帧的图像内容的所确定的差异来更新显示面板28的显示缓冲区中的图像内容,并且使得显示面板28基于被存储在显示缓冲区中的图像内容来显示第二帧的图像内容。
在其中显示面板28是具有分散扫描的能力的智能模式面板的示例中,显示驱动器43可以更新显示像素块表54,其指示被存储在显示缓冲区中的图像内容在显示面板28上将被显示在何处。在这样的示例中,显示驱动器43可以使得显示面板28基于被存储在显示缓冲区中的图像内容和显示像素块表54中的信息来显示第二帧的图像内容。
以这种方式,显示驱动器43可以维护显示像素块表54,类似于图形驱动器42维护GPU像素块表38。然而,显示像素块表54和GPU像素块表38是彼此独立的。GPU像素块表38对应于GPU所生成的经渲染的内容,而显示像素块表54对应于显示处理器26所生成的合成内容。由于显示处理器26可以处理多个层(其中可以更新一个以上的层),GPU像素块表38和显示像素块表54可以是不同的,并且因此是分别更新和维护的。
在一个或多个示例中,可以存在多个应用缓冲区(例如,第一、第二和第三应用缓冲区),而不是存在一个应用缓冲区32。第一应用缓冲区可以存储与正被显示的图像内容相对应的图形数据。第二应用缓冲区可以存储与接下来要被显示的图像内容相对应的图形数据。第三应用缓冲区可以是可用于GPU 18渲染图形数据。然后,对于下一帧,第二应用缓冲区存储与正被显示的图像内容相对应的图形数据,第三应用缓冲区存储与接下来要被显示的图像内容相对应的图形数据,并且第一应用缓冲区可用于GPU 18渲染图形数据。以这种方式,三个应用缓冲区中的每一者分别循环为存储针对正被显示的图像内容的图形数据、针对将被显示的图像内容的图形数据以及存储正被渲染的图形数据。
因此,在显示面板28正在显示的帧与GPU 18正在对其操作的帧之间可能存在延迟。例如,显示面板28可以基于被存储在第一应用缓冲区中的图形数据来显示当前帧。第二应用缓冲区可以存储针对在显示当前帧之后的下一帧的图像内容的图形数据。GPU 18可以正在将针对在下一帧之后的帧的图像内容的图形数据渲染到第三应用缓冲区。
在这样的示例中,以上示例技术可以是适用的而无需改变,但是CPU 16可以进一步跟踪每个应用缓冲区的“缓冲区寿命”。例如,显示处理器26可以使得显示面板28显示具有被存储在第一应用缓冲区中的图形数据的当前帧。响应于用户向上滚动图像内容,GPU18可以将新图像内容渲染到第三应用缓冲区中。然后,最终,显示处理器26可以使得显示面板28显示具有被存储在第三应用缓冲区中的图形数据的当前帧,而GPU 18将新图形数据渲染到第一应用缓冲区中。
在该示例中,第一应用缓冲区中的过时数据是当在比GPU 18正在为其渲染图形数据的帧早两个帧处GPU 18渲染图形内容时存在的图形数据。然而,在渲染针对GPU 18正在为其渲染图形数据的帧早两个帧的帧的图形数据的时间期间,可能已经存在与第一应用缓冲区中的过时数据相对应的图像内容的更多滚动。因此,为了确定第一、第二或第三缓冲区中的一者的存储过时数据的部分,图形驱动器42可以基于指示该应用缓冲区先前何时被访问的信息来确定该部分。
图5是示出本公开内容的另一示例方法的流程图。图5的技术可以由诸如CPU 16、GPU 18和/或显示处理器26中的一者或任何组合的处理电路来执行。
处理电路可以确定图像内容相对于图像内容在被显示的第一帧中的位置的移位量(60)。例如,CPU 16可以确定用于指示水平或垂直内容移位的大小的运动矢量。
处理电路可以基于图像内容的所确定的移位来确定应用缓冲区32的具有过时数据的部分(62)。举例来说,图形驱动器42可以识别自从应用缓冲区32的最后一次使用以来在应用缓冲区32中的过时数据(例如,基于指示应用缓冲区32先前何时被访问的信息)。如上所述,在存在多个应用缓冲区的示例中,可以存在其中图像内容在帧与帧之间被移位的显示器刷新的一些迭代。因此,多个应用缓冲区中的一者中的过时数据不仅可以是基于图像内容中的帧与帧之间的变化,而且可以是基于该特定应用缓冲区最后一次被用来读取用于生成用于显示的帧的图形数据的时间。处理电路可以使用“缓冲区寿命”(例如,指示特定应用缓冲区先前何时被访问以生成帧的图像内容的信息)来确定在该应用缓冲区中的具有过时数据的部分。
处理电路可以指导GPU 18将针对与第一帧的图像内容不同的第二帧的图像内容的图形数据渲染到应用缓冲区的所确定的部分,而不使得GPU 18重新渲染针对与第一帧的图像内容相同的第二帧的图像内容的图形数据(64)。例如,图形驱动器42可以使得GPU 18将新图形数据渲染到应用缓冲区32的存储过时数据的存储器位置中。
在一些示例中,图形驱动器42可以基于GPU 18将图形数据渲染到应用缓冲区32的所确定的部分来更新GPU像素块表38,该GPU像素块表38指示图像内容的哪些行是与应用缓冲区32的哪些部分相关联的。例如,图形驱动器42可以生成用于针对应用缓冲区32的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在应用缓冲区32中被存储在何处。显示驱动器43可以指导显示处理器26基于经更新的GPU像素块表38来生成第二帧的图像内容以显示在显示面板28上。
在一些示例中,在显示处理器26生成第二帧的图像内容之后,处理电路可以确定第一帧和第二帧的图像内容的差异。处理电路(例如,经由显示驱动器43)可以基于第一帧和第二帧的图像内容的所确定的差异来更新显示缓冲区中的图像内容,并且使得显示面板28基于被存储在显示缓冲区中的图像内容来显示第二帧的图像内容。在一些示例中,处理电路(例如,经由显示驱动器43)可以更新显示像素块表54,其指示被存储在显示缓冲区中的图像内容在显示面板28上将被显示在何处。在这些示例中的一个或多个示例中,为了使得显示面板28显示图像内容,处理电路可以使得显示面板28基于被存储在显示缓冲区中的图像内容和显示像素块表54中的信息来显示第二帧的图像内容。
在一些情况下,示例技术可以针对在1440x 2560LCD面板上的60fps文本滚动提供大约54.8mA的功率节省。功率节省可以是以下各项的结果:在GPU 18和显示处理器26上的系统存储器30的操作的减少、在GPU 18和显示处理器26上的处理负载的减少、以及在系统存储器30和显示处理器26之间的数据传输的减少。
在一个或多个示例中,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或者通过其进行传输。计算机可读介质可以包括计算机数据存储介质或通信介质,所述通信介质包括促进将计算机程序从一个地方传送到另一个地方的任何介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取得用于实现在本公开内容中描述的技术的指令、代码和/或数据结构的任何可用的介质。通过举例而非限制性的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述各项的组合也应当被包括在计算机可读介质的范围之内。
代码可以由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效的集成或分立逻辑电路。因此,如本文所使用的术语“处理器”可以指代前述结构中的任何一者或者适于实现本文描述的技术的任何其它结构。另外,在一些示例中,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或者被并入经组合的编解码器中。此外,所述技术可以完全在一个或多个电路或逻辑元件中实现。
本公开内容的技术可以在多种多样的设备或装置中实现,包括无线手机、集成电路(IC)或一组IC(即,芯片组)。在本公开内容中描述了各种组件、模块或单元以强调被配置以执行所公开的技术的设备的功能性方面,但是不一定需要通过不同的硬件单元来实现。确切而言,如上所述,各种单元可以被组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合(包括如上所述的一个或多个处理器)结合适当的软件和/或固件来提供。
已经描述了本公开内容的各个方面。这些和其它方面在所附的权利要求的范围内。

Claims (26)

1.一种用于生成图像内容的方法,所述方法包括:
确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;
基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及
指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
2.根据权利要求1所述的方法,还包括:
基于所述GPU将图形数据渲染到所述应用缓冲区的所确定的部分,来更新GPU像素块表,所述GPU像素块表指示图像内容的哪些行是与所述应用缓冲区的哪些部分相关联的;以及
指导显示处理器基于经更新的GPU像素块表来生成所述第二帧的所述图像内容以显示在显示面板上。
3.根据权利要求2所述的方法,其中,更新所述GPU像素块表包括:
生成用于针对所述应用缓冲区的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在所述应用缓冲区中被存储在何处。
4.根据权利要求2所述的方法,还包括:
确定所述第一帧和所述第二帧的所述图像内容的差异;
基于所述第一帧和所述第二帧的所述图像内容的所确定的差异来更新显示缓冲区中的图像内容;以及
使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容来显示所述第二帧的所述图像内容。
5.根据权利要求4所述的方法,还包括:
更新显示像素块表,所述显示像素块表指示被存储在所述显示缓冲区中的图像内容在所述显示面板上将被显示在何处,
其中,使得所述显示面板显示所述图像内容包括:使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容和所述显示像素块表中的信息来显示所述第二帧的所述图像内容。
6.根据权利要求1所述的方法,其中,确定所述移位量包括:
确定指示用户交互的动量的运动矢量;以及
基于所确定的运动矢量来确定所述移位量。
7.根据权利要求1所述的方法,其中,确定所述部分包括:基于指示所述应用缓冲区先前何时被访问的信息来确定所述部分。
8.一种用于生成图像内容的设备,所述设备包括:
应用缓冲区;
图形处理单元(GPU);以及
处理电路,其被配置为:
确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;
基于所述图像内容的所确定的移位,来确定所述应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及
指导所述GPU将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
9.根据权利要求8所述的设备,还包括显示处理器和显示面板,其中,所述处理电路被配置为进行以下操作:
基于所述GPU将图形数据渲染到所述应用缓冲区的所确定的部分,来更新GPU像素块表,所述GPU像素块表指示图像内容的哪些行是与所述应用缓冲区的哪些部分相关联的;以及
指导所述显示处理器基于经更新的GPU像素块表来生成所述第二帧的所述图像内容以显示在所述显示面板上。
10.根据权利要求9所述的设备,其中,为了更新所述GPU像素块表,所述处理电路被配置为:
生成用于针对所述应用缓冲区的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在所述应用缓冲区中被存储在何处。
11.根据权利要求9所述的设备,其中,所述显示面板包括显示缓冲区,并且其中,所述处理电路被配置为:
确定所述第一帧和所述第二帧的所述图像内容的差异;
基于所述第一帧和所述第二帧的所述图像内容的所确定的差异来更新所述显示缓冲区中的图像内容;以及
使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容来显示所述第二帧的所述图像内容。
12.根据权利要求11所述的设备,其中,所述处理电路被配置为进行以下操作:
更新显示像素块表,所述显示像素块表指示被存储在所述显示缓冲区中的图像内容在所述显示面板上将被显示在何处,
其中,为了使得所述显示面板显示所述图像内容,所述处理电路被配置为:使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容和所述显示像素块表中的信息来显示所述第二帧的所述图像内容。
13.根据权利要求8所述的设备,其中,为了确定所述移位量,所述处理电路被配置为进行以下操作:
确定指示用户交互的动量的运动矢量;以及
基于所确定的运动矢量来确定所述移位量。
14.根据权利要求8所述的设备,其中,为了确定所述部分,所述处理电路被配置为:基于指示所述应用缓冲区先前何时被访问的信息来确定所述部分。
15.一种存储指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器进行以下操作:
确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量;
基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及
指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据。
16.根据权利要求15所述的计算机可读存储介质,还包括使得所述一个或多个处理器进行以下操作的指令:
基于所述GPU将图形数据渲染到所述应用缓冲区的所确定的部分,来更新GPU像素块表,所述GPU像素块表指示图像内容的哪些行是与所述应用缓冲区的哪些部分相关联的;以及
指导显示处理器基于经更新的GPU像素块表来生成所述第二帧的所述图像内容以显示在显示面板上。
17.根据权利要求16所述的计算机可读存储介质,其中,使得所述一个或多个处理器更新所述GPU像素块表的指令包括使得所述一个或多个处理器进行以下操作的指令:
生成用于针对所述应用缓冲区的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在所述应用缓冲区中被存储在何处。
18.根据权利要求16所述的计算机可读存储介质,还包括使得所述一个或多个处理器进行以下操作的指令:
确定所述第一帧和所述第二帧的所述图像内容的差异;
基于所述第一帧和所述第二帧的所述图像内容的所确定的差异来更新显示缓冲区中的图像内容;以及
使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容来显示所述第二帧的所述图像内容。
19.根据权利要求18所述的计算机可读存储介质,还包括使得所述一个或多个处理器进行以下操作的指令:
更新显示像素块表,所述显示像素块表指示被存储在所述显示缓冲区中的图像内容在所述显示面板上将被显示在何处,
其中,使得所述一个或多个处理器使得所述显示面板显示所述图像内容的所述指令包括使得所述一个或多个处理器进行以下操作的指令:使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容和所述显示像素块表中的信息来显示所述第二帧的所述图像内容。
20.根据权利要求15所述的计算机可读存储介质,其中,使得所述一个或多个处理器确定所述移位量的所述指令包括使得所述一个或多个处理器进行以下操作的指令:
确定指示用户交互的动量的运动矢量;以及
基于所确定的运动矢量来确定所述移位量。
21.根据权利要求15所述的计算机可读存储介质,其中,使得所述一个或多个处理器确定所述部分的所述指令包括使得所述一个或多个处理器进行以下操作的指令:基于指示所述应用缓冲区先前何时被访问的信息来确定所述部分。
22.一种用于生成图像内容的设备,所述设备包括:
用于确定图像内容相对于所述图像内容在被显示的第一帧中的位置的移位量的单元;
用于基于所述图像内容的所确定的移位,来确定应用缓冲区的具有过时数据的部分的单元,其中,所述过时数据是被存储在所述应用缓冲区中的针对不再被显示的图像内容的数据;以及
用于指导图形处理单元(GPU)将针对与所述第一帧的所述图像内容不同的、第二帧的图像内容的图形数据渲染到所述应用缓冲区的所确定的部分中,而不使得所述GPU重新渲染针对与所述第一帧的图像内容相同的、所述第二帧的图像内容的图形数据的单元。
23.根据权利要求22所述的设备,还包括:
用于基于所述GPU将图形数据渲染到所述应用缓冲区的所确定的部分,来更新GPU像素块表的单元,所述GPU像素块表指示图像内容的哪些行是与所述应用缓冲区的哪些部分相关联的;以及
用于指导显示处理器基于经更新的GPU像素块表来生成所述第二帧的所述图像内容以显示在显示面板上的单元。
24.根据权利要求23所述的设备,其中,所述用于更新所述GPU像素块表的单元包括:
用于生成用于针对所述应用缓冲区的虚拟地址的偏移的信息,以指示针对图像内容的各行的图形数据在所述应用缓冲区中被存储在何处的单元。
25.根据权利要求23所述的设备,还包括:
用于确定所述第一帧和所述第二帧的所述图像内容的差异的单元;
用于基于所述第一帧和所述第二帧的所述图像内容的所确定的差异来更新显示缓冲区中的图像内容的单元;以及
用于使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容来显示所述第二帧的所述图像内容的单元。
26.根据权利要求25所述的设备,还包括:
用于更新显示像素块表的单元,所述显示像素块表指示被存储在所述显示缓冲区中的图像内容在所述显示面板上将被显示在何处,
其中,所述用于使得所述显示面板显示所述图像内容的单元包括:用于使得所述显示面板基于被存储在所述显示缓冲区中的所述图像内容和所述显示像素块表中的信息来显示所述第二帧的所述图像内容的单元。
CN201880085353.2A 2018-01-04 2018-12-19 任意块渲染和显示帧重构 Expired - Fee Related CN111542872B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/862,227 US10789913B2 (en) 2018-01-04 2018-01-04 Arbitrary block rendering and display frame reconstruction
US15/862,227 2018-01-04
PCT/US2018/066406 WO2019135910A1 (en) 2018-01-04 2018-12-19 Arbitrary block rendering and display frame reconstruction

Publications (2)

Publication Number Publication Date
CN111542872A true CN111542872A (zh) 2020-08-14
CN111542872B CN111542872B (zh) 2021-06-22

Family

ID=65003599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880085353.2A Expired - Fee Related CN111542872B (zh) 2018-01-04 2018-12-19 任意块渲染和显示帧重构

Country Status (3)

Country Link
US (1) US10789913B2 (zh)
CN (1) CN111542872B (zh)
WO (1) WO2019135910A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022073182A1 (en) * 2020-10-09 2022-04-14 Qualcomm Incorporated Methods and apparatus for display panel fps switching
CN115497432A (zh) * 2022-09-23 2022-12-20 珠海格力电器股份有限公司 数据处理方法、装置、电子设备、显示设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112022025581A2 (pt) * 2020-06-23 2023-01-03 Qualcomm Inc Redução de demanda de potência para geração de imagem para visores

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2508986A1 (en) * 2011-04-05 2012-10-10 Research In Motion Limited Backing store memory management for rendering scrollable webpage subregions
US20140125686A1 (en) * 2012-11-05 2014-05-08 Rightware Oy Image rendering method and system
CN105809728A (zh) * 2015-01-19 2016-07-27 想象技术有限公司 在图形处理单元中渲染场景的视图
CN106528174A (zh) * 2016-11-25 2017-03-22 上海野火网络科技有限公司 基于cocos2dx的flash渲染方法和渲染引擎

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW376495B (en) * 1994-05-17 1999-12-11 Sega Enterprises Kk Method and device for outputting image
JPH096326A (ja) * 1995-06-23 1997-01-10 Konami Co Ltd 画像表示装置
US6215505B1 (en) 1997-06-20 2001-04-10 Nippon Telegraph And Telephone Corporation Scheme for interactive video manipulation and display of moving object on background image
JP4844780B2 (ja) * 2000-04-13 2011-12-28 ソニー株式会社 撮像制御装置、撮像制御方法、プログラム、およびプログラム記録媒体
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
US7895411B2 (en) 2003-10-02 2011-02-22 Nvidia Corporation Physics processing unit
US20070188506A1 (en) * 2005-02-14 2007-08-16 Lieven Hollevoet Methods and systems for power optimized display
US7737986B2 (en) * 2006-08-29 2010-06-15 Texas Instruments Incorporated Methods and systems for tiling video or still image data
US8358876B1 (en) 2009-05-20 2013-01-22 Adobe Systems Incorporated System and method for content aware in place translations in images
US8856682B2 (en) * 2010-05-11 2014-10-07 AI Squared Displaying a user interface in a dedicated display area
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US9576068B2 (en) * 2010-10-26 2017-02-21 Good Technology Holdings Limited Displaying selected portions of data sets on display devices
US9251607B1 (en) 2011-11-14 2016-02-02 Google Inc. Anti-aliasing techniques
CN108307172A (zh) * 2016-10-04 2018-07-20 途艾斯技术有限公司 视频处理装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2508986A1 (en) * 2011-04-05 2012-10-10 Research In Motion Limited Backing store memory management for rendering scrollable webpage subregions
US20140125686A1 (en) * 2012-11-05 2014-05-08 Rightware Oy Image rendering method and system
CN105809728A (zh) * 2015-01-19 2016-07-27 想象技术有限公司 在图形处理单元中渲染场景的视图
CN106528174A (zh) * 2016-11-25 2017-03-22 上海野火网络科技有限公司 基于cocos2dx的flash渲染方法和渲染引擎

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022073182A1 (en) * 2020-10-09 2022-04-14 Qualcomm Incorporated Methods and apparatus for display panel fps switching
CN115497432A (zh) * 2022-09-23 2022-12-20 珠海格力电器股份有限公司 数据处理方法、装置、电子设备、显示设备及存储介质

Also Published As

Publication number Publication date
CN111542872B (zh) 2021-06-22
US10789913B2 (en) 2020-09-29
WO2019135910A1 (en) 2019-07-11
US20190206111A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
US7262776B1 (en) Incremental updating of animated displays using copy-on-write semantics
US10796478B2 (en) Dynamic rendering for foveated rendering
US7586492B2 (en) Real-time display post-processing using programmable hardware
CN111542872B (zh) 任意块渲染和显示帧重构
US9129581B2 (en) Method and apparatus for displaying images
US10257487B1 (en) Power efficient video playback based on display hardware feedback
US20080238928A1 (en) Frame buffer compression for desktop composition
US20160292812A1 (en) Hybrid 2d/3d graphics rendering
US11037271B2 (en) Dynamic rendering for foveated rendering
US20200051214A1 (en) Dynamic rendering for foveated rendering
US10748235B2 (en) Method and system for dim layer power optimization in display processing
US20190089927A1 (en) Block-based power efficient timing engine for smart display panels
CN100378793C (zh) 液晶显示器显示方法与系统
US20180166045A1 (en) Efficient occlusion detection in display compositor
WO2022073182A1 (en) Methods and apparatus for display panel fps switching
US20190220130A1 (en) Input event based dynamic panel mode switch
US20190087144A1 (en) Frame-based power efficient timing engine for smart display panels
US8593473B2 (en) Display device and method for optimizing the memory bandwith
CN114174980A (zh) 用于刷新多个显示器的方法和装置
WO2023151067A1 (en) Display mask layer generation and runtime adjustment
WO2024044936A1 (en) Composition for layer roi processing
WO2023141917A1 (en) Sequential flexible display shape resolution
WO2024044934A1 (en) Visual quality optimization for gpu composition
WO2023065100A1 (en) Power optimizations for sequential frame animation
WO2024020825A1 (en) Block searching procedure for motion estimation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210622