用于使用低质量块来减少存储器带宽的系统和方法与流程

文档序号:11334175阅读:330来源:国知局
用于使用低质量块来减少存储器带宽的系统和方法与流程

发明人:s·w·惠、v·阿鲁桑和y·王

相关申请的交叉引用

本申请要求于2015年2月20提交的美国非临时专利申请no.14/628,097的权益,其通过援引全部纳入于此。

公开领域

本公开一般涉及计算系统,尤其涉及在图形处理系统中渲染内容。

背景

计算设备可以装备有一个或多个高性能图形处理单元(gpu),这些gpu提供关于计算和图形渲染的高性能。计算设备可使用gpu来加速对图形数据的渲染以供显示。此类计算设备的示例可包括计算机工作站、移动电话(例如,智能电话)、嵌入式系统、个人计算机、平板计算机、以及视频游戏控制台。

渲染一般指的是将三维(3d)图形场景(其可包括一个或多个3d图形对象)转换成二维(2d)经栅格化的图像数据的过程。具体而言,gpu可包括3d渲染流水线以便为渲染3d图形场景提供至少部分的硬件加速。该场景中的3d图形对象可由图形应用细分为一个或多个3d图形原语(例如,点、线条、三角形、块等),并且gpu可将该场景的3d图形原语转换成2d经栅格化的图像数据。

简要概述

公开了用于使用lq块在显示器设备上显示数据以减少存储器带宽的系统和方法。用户可在显示质量或网页的信息内容的最小降级的情况下快速滚动网页。

根据一些实施例,一种用于在显示器设备上显示数据的方法包括:基于高质量(hq)块与对应的低质量(lq)块之间的差异来计算纹理。所述方法还包括:将所述纹理存储到所述lq块的阿尔法通道中。所述方法进一步包括:当所述阿尔法通道的属性满足阈值时,将所述lq块合成到屏幕上。

根据一些实施例,一种用于在显示器设备上显示数据的系统包括显示器设备和存储器。所述系统还包括耦合到所述存储器和所述显示器设备的一个或多个处理器。所述一个或多个处理器读取所述存储器并且被配置成:基于hq块与对应的lq块之间的差异来计算纹理。所述处理器还被配置成:将所述纹理存储到所述lq块的阿尔法通道中。所述处理器被进一步配置成:当所述阿尔法通道的属性满足阈值时,将所述lq块合成到所述显示器设备上。

根据一些实施例,一种计算机可读介质在其上存储有用于执行操作的计算机可执行指令,所述操作包括:基于hq块与对应的lq块之间的差异来计算纹理;将所述纹理存储到所述lq块的阿尔法通道中;以及当所述阿尔法通道的属性满足阈值时,将所述lq块合成到所述显示器设备上。

根据一些实施例,一种用于在显示器设备上显示数据的装备包括:用于基于hq块与对应的lq块之间的差异来计算纹理的装置。该系统还包括:用于将所述纹理存储到所述lq块的阿尔法通道中的装置。该系统进一步包括:当所述阿尔法通道的属性满足阈值时,将所述lq块合成到所述显示器设备上。

附图简述

形成本说明书一部分的各附图解说了本发明的各实施例,并且与本描述一起进一步用以解释各实施例的原理。在各附图中,类似的附图标记可指示相同元件或功能上类似的元件。元件在其中首次出现的附图通常由对应附图标记中的最左边的数字指示。

图1是解说了根据一些实施例的可用于实现渲染技术的计算设备的框图。

图2是更详细地解说了根据一些实施例的图1中的计算设备的cpu、gpu、以及系统存储器的框图。

图3是根据一些实施例的由浏览器渲染的网页的解说。

图4是根据一些实施例的用于使gpu将hq块或lq块合成到显示器设备上的过程的流程图。

本公开的各实施例及其优点通过参考以下详细描述而被最好地理解。

详细描述

i.概览

ii.示例系统架构

iii.将内容渲染到显示器设备上

a.hq块不可用并且lq块可用

b.hq块和lq块可用

1.计算具有与lq块相同分辨率的纹理“dlow”

2.将纹理“dlow”存储到lq的阿尔法通道中

3.基于阈值的lq块与hq块之间的差异

iv.示例方法

i.概览

将理解,以下公开提供了用于实现本公开的不同特征的许多不同的实施例或者示例。一些实施例可以在没有这些具体细节中的一些或全部的情况下被实践。以下描述了各组件、模块和布置的具体示例以简化本公开。当然,这些仅仅是示例而并不旨在限制。

网页充满了丰富的多媒体内容,该多媒体内容可包括图形、视频、图像、文本等等。在网页渲染期间,web浏览器可将网页划分成多个块。每个块内部的网页内容可被栅格化成位图,该位图随后被加载到纹理中以供gpu访问。每个位图可对应于覆盖屏幕的一部分的块。为了显示网页,gpu将各块合成到屏幕上。当用户滚动网页帧时,新块可出现在浏览器窗口中并且旧块可从浏览器窗口消失。

gpu可生成具有不同分辨率的块。低质量(lq)块是对应的高质量(hq)块的较低分辨率版本。hq块是可具有与屏幕相同的分辨率的块,而lq块是lq块所覆盖的信息内容的缩减版本。lq块与完全渲染的块(被称为hq块)相比渲染得相对更迅速,并且可被用于迅速地传达lq块所覆盖的网页内容的缩略草图。

在快速滚动期间,并非帧的所有hq块可在新帧出现在浏览器窗口中之前被渲染。为了允许在web浏览器中平滑滚动网页,大约60帧每秒(fps)的帧率可能是期望的。可惜的是,该帧率通常需要高的存储器带宽。如果用户快速滚动网页帧并且被暴露在屏幕上网页的hq块还未被渲染,则用户可能看到空白区域,这可能令人分心并且使总体用户体验降级。由于渲染hq块的高成本,因此可生成对应的lq块并将其合成到屏幕上以使得在滚动期间可以显示网页的较低分辨率版本,由此减少了在滚动期间空白的出现。lq块可被渲染成hq块以完全显示信息内容。

对于高分辨率设备,可能需要大量的存储器带宽来显示整个网页。将hq块合成到屏幕上与合成对应的lq块相比可消耗大量的存储器带宽和功率以及使性能降级。可能期望减少存储器带宽以便改善性能并减少功耗。减少存储器带宽的常规技术包括执行硬件纹理压缩。gpu可以执行硬件纹理压缩,但是该技术可能是不期望的,因为它需要硬件支持并且可能是昂贵的。替换地,还可以使用用于纹理压缩的软件技术。然而,由于所需要的中央处理单元(cpu)处理的量,软件纹理压缩可能是不期望的。

本公开的各技术可提供克服这些缺点、同时使得web浏览器在快速滚动网页期间能够在显示质量或信息内容的最小降级的情况下快速地渲染网页的帧的解决方案。公开了用于使gpu将hq块或其对应的lq块合成到显示器设备上的系统和方法。如果lq块和hq块足够相似以至于不会使用户体验降级,则gpu可合成lq块而不是对应的hq块(不用hq块来替代lq块)。lq块比它们对应的hq块更小并且消耗更少的存储器空间。通过合成lq块而不是hq块,减少了由gpu在合成期间访问的存储器的量。由此,使用lq块可减少在块合成期间所需要的存储器带宽。

在一些实施例中,gpu生成hq块和对应的lq块,并基于hq块与lq块之间的差异来计算纹理。lq块中的每个像素可具有三个颜色通道和一阿尔法通道。阿尔法通道通常具有描述给定像素的对象片段的不透明程度的属性。gpu可将纹理存储到lq块的阿尔法通道中,而不是存储不透明程度。通过这样做,可节省存储器空间。纹理可包括lq块中每个像素的单个标量值。对应于lq块中的像素的单个标量值是该像素与对应hq块中的多个像素之间的差异,并且可被存储为阿尔法通道的属性的值。

当阿尔法通道的属性满足阈值时,gpu可将lq块合成到显示器设备上。在一示例中,低于阈值的属性满足该阈值。这种属性可指示lq块和hq块彼此足够相似,以使得将lq块而不是hq块合成到显示器设备上将不会使用户体验降级。替换地,当属性不满足阈值时,gpu可将hq块合成到显示器设备上。不低于阈值的属性可指示lq块和hq块彼此不足够相似以合成lq块而不是hq块。因此,hq块应当被合成到显示器设备上而不是对应的lq块。

ii.示例系统架构

图1是解说了根据一些实施例的可被用于实现渲染技术的计算设备102的框图。计算设备102可包括个人计算机、台式计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、无线通信设备(例如,移动电话、蜂窝电话、卫星电话、和/或移动电话手持机)、手持式设备(诸如便携式视频游戏设备或个人数字助理(pda))、个人音乐播放器、视频播放器、电视、电视机顶盒、大型计算机或者任何其他类型的处理和/或显示图形数据的设备。

如图1的示例中解说的,计算设备102包括用户接口104、cpu106、存储器控制器108、系统存储器110、图形处理单元(gpu)112、gpu高速缓存114、显示器接口116、显示器设备118、以及总线120。用户接口104、cpu106、存储器控制器108、gpu112以及显示器接口116可以使用总线120来彼此通信。应当注意,图1中示出的不同组件之间的总线和通信接口的具体配置仅是示例,并且计算设备的其他配置和/或具有相同或不同组件的其他图形处理系统可被用于实现本公开的各技术。

cpu106可包括控制计算设备102的操作的通用或专用处理器。用户可向计算设备102提供输入以使cpu106执行一个或多个软件应用。在cpu106上执行的软件应用可包括例如操作系统、软件应用122(例如,文字处理器应用、电子邮件应用、电子表格应用、媒体播放器应用、视频游戏应用、图形用户界面(gui)应用、或浏览器)、或另一程序。用户可经由一个或多个输入设备(未示出)(诸如键盘、鼠标、话筒、触摸垫或者经由用户接口104耦合到计算设备102的另一输入设备)向计算设备102提供输入。

软件应用122可包括指示gpu112将图形数据渲染到显示器设备118的一个或多个图形渲染指令。在一些示例中,软件指令可遵循图形应用编程接口(api),诸如开放图形库(opengl.rtm.)api、开放图形库嵌入式系统(opengles)api、direct3dapi、x3dapi、rendermanapi、webglapi、或其他任何公共或专有标准图形api。为了处理图形渲染指令,cpu106可向gpu112发出一个或多个图形渲染命令以使gpu112渲染图形数据中的全部或一些。要被渲染的图形数据可包括图形原语(例如,点、线条、三角形、四边形、三角形条等)的列表。

存储器控制器108促成进入和离开系统存储器110的数据的传输。例如,存储器控制器108可接收存储器读取和写入命令,并且对关于存储器系统110的此类命令进行服务,以便为计算设备102中的各组件提供存储器服务。存储器控制器108通信地耦合到系统存储器110。尽管存储器控制器108在图1的示例计算设备102中被解说为与cpu106和系统存储器110两者分开的处理模块,但在其他示例中,存储器控制器108的一些或全部功能性可被实现在cpu106和系统存储器110中的一者或两者上。

系统存储器110可存储:可由cpu106访问以供执行的程序模块和/或指令、和/或由在cpu106上执行的程序使用的数据。例如,系统存储器110可存储用户应用和与这些应用相关联的图形数据。系统存储器110可另外存储由计算设备102的其他组件使用和/或生成的信息。例如,系统存储器110可充当gpu112的设备存储器,并且可存储要由gpu112操作的数据以及从由gpu112执行的操作得到的数据。例如,系统存储器110可存储纹理缓冲器、深度缓冲器、丝网缓冲器、顶点缓冲器、帧缓冲器等的任何组合。另外,系统存储器110可存储用于由gpu112处理的命令流。系统存储器110可包括一个或多个易失性或非易失性存储器或存储设备,诸如举例而言,随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、只读存储器(rom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存存储器、磁数据介质或光存储介质。

gpu112可被配置成:执行图形操作以将一个或多个图形原语渲染到显示器设备118,以及将图像纹理映射为像素以供显示。当在cpu106上执行的软件应用122要求图形处理时,cpu106可向gpu112提供图形命令和图形数据以供渲染到显示器设备118。图形命令可包括绘制调用命令、gpu状态编程命令、存储器传输命令、通用计算命令、内核执行命令等。在一些示例中,cpu106可通过将命令和图形数据写入可由gpu112访问的系统存储器110来向gpu112提供命令和图形数据。在一示例中,图形数据可包括纹理,该纹理被存储在系统存储器110中并由gpu112用于确定显示器设备118上像素的颜色。在一些示例中,gpu112可被进一步配置成执行针对在cpu106上执行的应用的通用计算。

在一些实例中,gpu112可构建有高度并行结构,该高度并行结构提供比cpu106更高效的对向量运算的处理。例如,gpu112可包括多个处理单元,这些处理单元被配置成以并行方式来对多个顶点、控制点、像素和/或其他数据进行操作。在一些实例中,gpu112的高度并行本质可允许gpu112比使用cpu106来渲染图像更迅速地将图形图像(例如,gui和二维(2d)和/或三维(3d)图形场景)渲染到显示器设备118上。另外,gpu112的高度并行本质可允许gpu112比cpu106更迅速地处理通用计算应用的某些类型的向量和矩阵运算。

在一些实例中,gpu112可被集成到计算设备102的主板中。在其他实例中,gpu112可以存在于被安装在计算设备102的主板的端口中的图形卡上或者可以通过其他方式纳入到被配置成与计算设备102互操作的外围设备内。在进一步实例中,gpu112可位于与形成片上系统(soc)的cpu106相同的微芯片上。gpu112可包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、或者其他等效的集成或分立逻辑电路系统。

gpu112可以直接耦合到gpu高速缓存114。由此,gpu112可在不必使用总线120的情况下从gpu高速缓存114读数据和向gpu高速缓存114写数据。换言之,gpu112可使用本地存储而不是片下存储器来在本地处理数据。这通过降低对gpu112经由总线120来读写数据(其可经历繁重的总线通信量)的需求来允许gpu112以更高效的方式进行操作。gpu高速缓存114可包括一个或多个易失性或非易失性存储器或存储设备,诸如举例而言,随机存取存储器(ram)、静态ram(sram)、动态ram(dram)等。然而,在一些实例中,gpu112可不包括分开的高速缓存,而是替代地经由总线120来使用系统存储器110。

cpu106和/或gpu112可将经渲染的图像数据存储在系统存储器110内所分配的帧缓冲器中。在cpu106上执行的软件应用可将图像数据(例如,纹理元素颜色、宽度、高度、和颜色深度)存储在系统存储器110中。显示器接口116可以从帧缓冲器检索数据并且配置显示器设备118以显示由经渲染的图像数据表示的图像。在一些示例中,显示器接口116可包括数模转换器(dac),其被配置成将从帧缓冲器检索的数字值转换成可由显示器设备118使用的模拟信号。在其他示例中,显示器接口116可将数字值直接传递给显示器设备118以供处理。

显示器设备118可包括监视器、电视、投影设备、液晶显示器(lcd)、等离子显示面板、发光二极管(led)阵列、阴极射线管(crt)显示器、表面传导式电子发射显示器(sed)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器设备118可被集成在计算设备102内。例如,显示器设备118可以是移动电话手持机或平板计算机的屏幕。替换地,显示器设备118可以是经由有线或无线通信链路耦合到计算设备102的独立设备。例如,显示器设备118可以是经由线缆或无线链路来连接到个人计算机的计算机监视器或平板显示器。

可以使用总线结构和总线协议(包括第一、第二、以及第三代总线结构和协议、共享总线结构和协议、点对点总线结构和协议、单向总线结构和协议、以及双向总线结构和协议)的任何组合来实现总线120。可用于实现总线120的不同总线结构和协议的示例包括,例如,超传输(hypertransport)总线、无限频带(infiniband)总线、高级图形端口总线、外围组件互连(pci)总线、高速pci总线、高级微控制器总线架构(amba)、高级高性能总线(ahb)、amba高级外围总线(apb)、以及amba高级可扩展接口(axi)总线。还可以使用其他类型的总线结构和协议。

图2是更详细地解说了根据一些实施例的图1中的计算设备102的cpu106、gpu112、以及系统存储器110的框图。如图2中所示,cpu106通信地耦合到gpu112和系统存储器110,并且gpu112通信地耦合到cpu106和系统存储器110。在一些示例中,gpu112可与cpu106一起被集成到主板上。

cpu106被配置成执行软件应用,诸如浏览器224、图形api226、gpu驱动程序228、以及操作系统230。浏览器224可包括使图形图像被显示的一个或多个指令和/或使由gpu112执行非图形任务(例如,通用计算任务)的一个或多个指令。浏览器224可包括或实现多个硬件组件和/或软件组件,这些组件操作以执行根据所描述的各实施例的方法体系。

用户可将浏览器224指向网页的统一资源定位符(url)。浏览器224可加载由该url引用的超文本标记语言(html)文件并在屏幕(例如,图1中的显示器设备118)上渲染网页。尽管浏览器224可被描述为向gpu112发出指令,但是应当理解,计算设备102中可执行的并且处理和/或显示图形数据的任何软件应用可被用于发出这些指令。另外,尽管网页被描述为可渲染内容,但这并非旨在限定并且可渲染/经渲染的内容可以是页面(其与诸如因特网之类的网络相关联或者不相关联)上的任何文本、图像、或图形。

图3是根据一些实施例的由浏览器224渲染的网页300的解说。将一起讨论图2和3以更好地解释本公开的渲染技术。浏览器224可在浏览器窗口中显示网页300的帧。

在网页渲染期间,浏览器224将网页300划分成多个块302。网页300被划分成三列四行的块302,总共12块。块302可与传达信息的图形、文本304、图像306和308、图标、视频的链接等等相交叠。浏览器224将每个块内部的网页内容栅格化成位图。每个位图与覆盖显示器设备118的一部分的块相对应。

浏览器224可栅格化多个块302中的一个或多个块的一个或多个版本。在一示例中,浏览器224栅格化每个块的lq版本和hq版本。浏览器224可将块302的lq版本栅格化成lq位图260,并将块302的对应hq版本栅格化成hq位图262。浏览器224可将块的lq版本栅格化成比块的hq版本更小的块。cpu106可花费更少的时间来栅格化块302的lq版本中的内容,因为块302的lq版本比对应的hq块更小并且包含更少的信息。如此,在一些实施例中,浏览器224在hq位图262之前生成lq位图260。可在正在生成lq位图260时或者已生成位图260之后在后台生成hq位图262。

gpu112可能不可访问位图。为了向gpu112提供对位图的访问,浏览器224可将位图上传到纹理存储器264中。在一示例中,浏览器224将lq位图260上传到lq块270中,并将hq位图262上传到hq块272中。lq块270对应于hq块272并且是hq块272的较低分辨率版本。在一示例中,hq块272可映射到显示器设备118的512x512纹理元素区域,并且对应的lq块270可映射到显示器设备118的32x32纹理元素区域。纹理元素区域包括一个或多个纹理元素,并且纹理元素是纹理存储器264中的像素。

由于栅格化和合成hq块的高成本,它们对应的lq块可被用于在滚动期间渲染网页300的较低分辨率版本,由此减少在滚动期间空白的出现以及减少存储器带宽。尽管在图2中解说了一个lq位图和hq位图,但应当理解,一个或多个lq位图和/或一个或多个hq位图可被存储在系统存储器110中。类似地,尽管在图2中解说了一个lq块和hq块,但应当理解,一个或多个lq块和/或一个或多个hq块可被存储在系统存储器110中。另外,hq块可被描述为具有一个对应的较低分辨率版本。这并非旨在限定,并且应当理解,hq块可具有一个以上对应的较低分辨率版本。

浏览器224可向图形api226发出指令,api226可将接收自浏览器224的指令转换成可由gpu驱动程序228使用的格式。gpu驱动程序228经由图形api226从浏览器224接收指令,并控制gpu112的操作以对这些指令进行服务。例如,gpu驱动程序228可编制一个或多个命令240,将命令240置于系统存储器110中(例如,纹理存储器264中),并指示gpu112执行命令240。在一些示例中,gpu驱动程序228可将命令240置于系统存储器110中,并经由操作系统230(例如,经由一个或多个系统调用)与gpu112通信。

系统存储器110可存储一个或多个命令240。命令240可被存储在一个或多个命令缓冲器(例如,环形缓冲器)中并且包括一个或多个状态命令和/或一个或多个绘制调用命令。状态命令可指示gpu112改变gpu112中的一个或多个状态变量,诸如绘制颜色。绘制调用命令可指示gpu112渲染由存储在系统存储器110中的一组一个或多个顶点所定义的(例如,在顶点缓冲器中所定义的)几何形状、或者将纹理(例如,lq块270或hq块272)的内容绘制到显示器设备118上。

gpu112包括命令引擎232以及一个或多个处理单元234。命令引擎232检索并执行存储在系统存储器110中的命令240。响应于接收到状态命令,命令引擎232可被配置成基于该状态命令来将gpu112中的一个或多个状态寄存器设置成特定的值。响应于接收到绘制调用命令,命令引擎232可被配置成:使处理单元234基于存储在系统存储器110中的原语类型数据来渲染由顶点表示的几何形状。命令引擎232还可接收着色器程序绑定命令,并基于着色器程序绑定命令将特定的着色器程序加载到可编程处理单元234中的一者或多者中。

处理单元234可包括一个或多个处理单元,其中每一者可以是可编程处理单元或固定功能处理单元。可编程处理单元可包括例如可编程着色器单元,其被配置成执行从cpu106下载到gpu112上的一个或多个着色器程序。在一些示例中,着色器程序可以是以高级着色语言编写的程序的经编译版本,诸如opengl着色语言(glsl)、高级着色语言(hlsl)、用于图形的c(cg)着色语言等等。

在一些示例中,可编程着色器单元可包括被配置成并行操作的多个处理单元,例如simd流水线。可编程着色器单元可具有存储着色器程序指令的程序存储器和执行状态寄存器(例如,指示程序存储器中正在被执行的当前指令或要被获取的下一指令的程序计数器寄存器)。处理单元234中的可编程着色器单元可包括例如顶点着色器单元、像素着色器单元、几何形状着色器单元、外壳着色器单元、域着色器单元、计算着色器单元、和/或统一着色器单元。一个或多个处理单元234可形成3d图形渲染流水线,其可包括被配置成执行着色器程序的一个或多个着色器单元。浏览器224可向gpu112发送不同的着色器程序。

iii.将内容渲染到显示器设备上

在一示例中,命令240包括用于渲染网页300的命令。处理单元234包括片段着色器或像素着色器237,其可在渲染过程的合成阶段期间将lq块270和hq块272中的至多一者合成到显示器118上。像素着色器237还可计算并设置由显示在显示器设备118上的纹理对象(例如,纹理图像)覆盖的像素的颜色。术语“片段”和“像素”在本公开中可互换地使用。

显示器设备118的每个像素可具有相关联的信息。在一些示例中,每个像素具有三个颜色通道和一个阿尔法通道。颜色通道是该像素的特定分量(其通常是红色、绿色和蓝色(rgb)分量)的函数。因此,像素可具有红色通道、绿色通道、蓝色通道、以及阿尔法通道。处于不同强度的这三种颜色的组合可表示每个像素的可见光谱的全范围。另外,阿尔法通道可具有指示每个像素的不透明程度的属性。当在合成程序中检查该属性时,属性值一(白色)表示100%不透明并且完全覆盖像素的感兴趣区域。相比之下,属性值零(黑色)表示100%透明。

a.hq块不可用并且lq块可用

在一些实施例中,在渲染过程的合成阶段期间,gpu112可将lq块270或hq块272合成到显示器设备118上。lq块比它们对应的hq块更小并消耗更少的存储器空间。lq块270可包括具有比hq块272更低分辨率的内容(例如,图形、文本、图像、图标、视频的链接等等)。因此,gpu112将lq块270合成到显示器设备118上而不是hq块272可能更迅速,因为lq块270包含比hq块272更少的信息。

当用户滚动网页帧时,新块可出现在浏览器窗口中,并且旧块可从浏览器窗口消失。在快速滚动期间,并非帧的所有hq块可以是可用的。例如,在hq块272可用之前lq块270可以可用,因为与hq块272相比生成lq块270可能更迅速。此处,lq块270可被合成到显示器设备118上以避免用户在不可用的hq块原本将被显示的地方看到空白区域。空白区域可能令人分心并且使总体用户体验降级。

b.hq块和lq块可用

替换地,如果lq块270和hq块272两者可用,则若lq块和hq块彼此足够相似以使得用户看到lq块不引人注意或者不会令人分心,可能期望将lq块270合成到显示器设备118上而不是hq块272(不用hq块272来替代lq块270)。gpu112可确定是将hq块272还是lq块270合成到显示器设备118上。图4是根据一些实施例的用于使gpu112将hq块272或lq块270合成到显示器设备118上的过程的流程图400。方法400并非意在限定并且可以用于其他应用中。

1.计算具有与lq块相同分辨率的纹理“dlow”

在动作402中,基于hq块272与对应的lq块270之间的差异来计算纹理。在一示例中,浏览器224经由图形api226向gpu112发送指令以计算纹理dlow。gpu112比较具有不同分辨率的两幅图像(例如,对应于hq块272和lq块270)之间的差异。在一示例中,像素着色器237通过基于hq块272与lq块270之间的差异计算纹理dlow,来确定这些块之间的相似程度。

lq块270中的像素可被称为lq像素,并且hq块272中的像素可被称为hq像素。hq和lq块具有不同数目的像素。lq块270中的每个lq像素可被映射到hq块272中的多个hq像素。在一示例中,lq块270是32x32像素区域,其映射到hq块272中的512x512像素区域。对于lq块270中的每个lq像素,纹理dlow可包括指示lq像素与hq块272中其所映射的多个hq像素之间差异的差值。纹理dlow具有与lq块270相同的分辨率。纹理dlow中的每个像素可与表示lq像素与其所映射的多个hq像素之间的差异的单个标量值相关联。gpu112可高效地计算纹理dlow,因为gpu112可以并行处理像素。在一示例中,像素着色器237的每个实例可处理浏览器窗口的一个像素。

gpu112可按各种方式来计算纹理dlow。在一些示例中,gpu112在一个轮次中计算纹理dlow。在一示例中,对于lq块270中的每个lq像素,gpu112标识hq块272中的对应像素区域(例如,16x16hq像素)。gpu112可计算像素区域的属性。像素区域的属性可以是该像素区域的均值。在一示例中,像素区域中的各像素值的强度被平均。每个像素可包括rgb颜色。例如,每个像素可包括三个标量值,其中第一标量值对应于红色(“r”)值,第二标量值对应于绿色(“g”)值,并且第三标量值对应于蓝色“b”值。像素强度可以是三个颜色值的函数。在一示例中,强度是红色、绿色和蓝色值的线性组合。gpu112随后可计算像素区域的属性与lq像素之间的差异。像素区域的属性与lq像素之间的差异可以是纹理dlow中的值。在一示例中,lq像素对应于存储像素区域的属性与lq像素之间的差异的纹理dlow中的像素。可针对lq块270中的每个lq像素计算该差异,并且纹理dlow可包括这些经计算的差异中的每一者。

在另一示例中,对于lq块270中的每个lq像素,gpu112标识hq块272中的对应像素区域,并计算lq像素与该像素区域中的每个像素的差异。gpu112随后可计算一个或多个经计算的差异的均值。该均值可以是纹理dlow中的值。在一示例中,lq像素对应于存储均值的纹理dlow中的像素。可针对lq块270中的每个lq像素计算该均值,并且纹理dlow可包括这些经计算的均值中的每一者。

在一些示例中,gpu112在一个以上轮次中计算纹理dlow。在一示例中,对于lq块270中的每个lq像素,gpu112标识hq块272中的对应像素区域,并基于lq像素与该像素区域之间的差异来计算纹理dhigh。纹理dhigh的分辨率可与hq块272的分辨率相同。纹理dhigh中的每个像素可与表示hq块272与lq块270之间的像素强度的差异的单个标量值相关联。在分开的轮次中,gpu112可将纹理dhigh下采样到lq块270的分辨率。纹理dlow可以是被下采样到lq块270的分辨率的纹理dhigh。在一示例中,lq像素对应于存储lq像素与像素区域之间的经下采样差异的纹理dlow中的像素。纹理dhigh可被存储在一个或多个临时缓冲器中并且可在计算纹理dlow之后被丢弃。可针对lq块270中的每个lq像素来计算该经下采样差异,并且纹理dlow可包括这些经下采样差异中的每一者。

2.将纹理“dlow”存储到lq块的阿尔法通道中

在动作404中,纹理被存储到lq块的阿尔法通道中。在一示例中,浏览器224向gpu112发送指令以将纹理dlow存储到lq块270的阿尔法通道中。因此,gpu112可将纹理dlow存储到lq块270的阿尔法通道中。纹理dlow的内容(其存储每像素单个标量值)可被写入lq块270的阿尔法通道中。具体而言,lq块270中的每个lq像素可具有阿尔法通道,该阿尔法通道具有描述lq像素的对象片段的不透明程度的属性。阿尔法通道的属性通常具有值一,从而指示块是不透明的。由于块通常是不透明的,因此阿尔法通道的属性可以用于存储与块的不透明度不同的信息。例如,该属性可指示lq块270与hq块272之间的相似性(或差异),以确定在不将hq块272合成到显示器设备118上的情况下合成lq块270是否足够。阿尔法通道可用于存储纹理dlow以节省存储器空间。

在一些实施例中,纹理dlow中的每个值被存储在lq块270中的lq像素的阿尔法通道的属性中。该属性基于lq像素与hq块272中其所映射的像素区域之间的差异。存储在lq块270的阿尔法通道中的每个差值可以是hq块272中的多个差异的均值。差值提供了对要将hq块272还是lq块270合成到显示器设备118上的指示。在一示例中,差值可与阈值进行比较,以确定lq块270与hq块272有多相似。阈值可取决于多种因素,诸如屏幕和网页的分辨率。例如,阈值可指示像素值的特定百分比差异(例如,像素强度的20%差异)。

3.基于阈值的lq块与hq块之间的差异

在动作406中,当阿尔法通道的属性满足阈值时,lq块被合成到显示器设备上。因此,可使用来自lq块270中的纹理元素的颜色值。在一示例中,浏览器224经由图形api226向gpu112发送指令以从阿尔法通道的属性读取并将该属性与阈值进行比较。当阿尔法通道的属性满足阈值时,gpu112可将lq块270合成到显示器设备118上。如果阿尔法通道的属性小于(或等于)阈值(其可指示lq块270与hq块272有多相似),则该属性可满足阈值。低于阈值的属性可指示lq块270与hq块272足够相似以至于不会使用户体验降级。因此,lq块270可被合成到显示器设备118上而不是hq块272。

网页可包含低频率数据(例如,空白、恒定颜色、或缓慢变化的梯度或图像),以使得如果lq块270被合成到显示器设备118上而不是hq块272,则最终结果足够良好以供用户观看而不会使用户体验降级。如果hq块包含低频率数据,则lq块270可与hq块272相似。

gpu112可将lq块270高速缓存在gpu高速缓存114中以供稍后检索。如果gpu112访问lq块270,则gpu112可从gpu高速缓存114检索lq块270而不是访问纹理存储器264。浏览器窗口的像素中的许多像素可(逆向地)映射到相同的lq块。因此,像素着色器237的实例可获取相同的lq块,该lq块更有可能在gpu112的纹理高速缓存中。对于包含在hq位图262与lq位图260之间具有相似颜色值的像素的块(诸如在网页包含空白区域、缓慢变化的梯度等等的情况下),这可得到降低的存储器带宽。

另外,gpu112可能完全不必访问hq块272。相反,gpu112可读取lq块270的阿尔法通道,以确定lq块270与hq块272之间的差异是否如此小以使得gpu112可以合成lq块272。如果阿尔法通道的属性满足阈值,则gpu112免于访问hq块272,由此减少了存储器带宽。

相比之下,在动作408中,当阿尔法通道的属性不满足阈值时,hq块被合成到显示器设备上。因此,可使用来自hq块272中的纹理元素的颜色值。当阿尔法通道的属性不满足阈值时,gpu112可将hq块272合成到显示器设备118上。在一示例中,如果属性不小于阈值(例如,大于或等于阈值),则该属性不满足阈值。不低于阈值的属性可指示lq块270与hq块272不够相似以至于无法代替hq块被显示。因此,hq块272可被合成到显示器设备118上而不是lq块270。网页可包含高频率数据,以使得如果lq块270被合成到显示器设备118上而不是hq块272,则最终结果对于供用户观看而言令人分心。

gpu112可按多种方式将hq块272合成到显示器设备118上。在一示例中,gpu112访问高分辨率块并将纹理元素从hq块272复制到帧缓冲器中以供在显示器设备118上显示。在另一示例中,lq块270可能已经被合成到显示器设备118上。在该示例中,gpu112可加回hq块272与lq块270之间的差异以获得hq块272。

在一些实施例中,可针对任何数目的lq块来执行动作402-408。也要理解,可在以上讨论的动作402-408之前、期间或之后执行附加动作。也要理解,本文中所描述的方法400的一个或多个动作可以按期望被省略、组合或以不同的次序执行。

使用本公开中所公开的各技术,纹理获取的次数未减少,而是实际上可能增加。例如,如果阿尔法通道的属性不满足阈值,则gpu112访问lq块270和hq块272两者。尽管如此,如果gpu112经常使用来自lq块的纹理元素,则本公开的各实施例可通过减少存储器带宽来显著地改善性能。

在一些实施例中,处理单元(例如,gpu112和/或cpu106)在运行中改变阈值以减少存储器带宽。处理单元可减小阈值以使得可更频繁地使用lq块。在一示例中,在快速滚动期间,用户不太可能注意lq块与hq块之间的差异。因此,如果处理单元检测到快速滚动,则该处理单元可减小阈值。在另一示例中,计算设备102可能处于低电池模式(例如,小于15%电池剩余),则可能期望减少功耗。因此,如果处理单元检测到计算设备处于低电池模式,则该处理单元可减小阈值。

如以上所讨论并在此进一步强调的,图1-4仅仅是示例,其不应当不恰当地限制权利要求的范围。在本公开的各个实施例中,用于实践本公开的指令序列(例如,图4中的动作402-408)的执行可以由计算设备102执行。在本公开的各种其他实施例中,由通信链路耦合到网络(例如,诸如局域网(lan)、无线局域网(wlan)、公共交换电话网(ptsn)、和/或各种其他有线或无线网络,包括电信、移动、和蜂窝电话网络)的多个计算设备可以执行指令序列以彼此协同地实践本公开。

在一示例中,用于合成lq块或hq块的指令可被存储在系统存储器110的计算机可读介质中。处理器可以执行指令以基于hq块与对应的lq块之间的差异来计算纹理dlow并将该纹理dlow存储到lq块的阿尔法通道中。处理器还可以执行指令以便在阿尔法通道的属性满足阈值时将lq块合成到显示器设备118上。处理器还可以执行指令以便在阿尔法通道的属性不满足阈值时将hq块合成到显示器设备118上。

在适用的情况下,可使用硬件、软件、固件、或者其组合来实现由本公开提供的各种实施例。同样在适用的情况下,本文阐述的各种硬件组件、软件组件、和/或固件组件可被组合成包括软件、固件、硬件、和/或全部的复合组件而不脱离本公开的精神。在适用的情况下,本文阐述的各种硬件组件、软件组件、和/或固件组件可被分成包括软件、固件、硬件、或全部的子组件而不脱离本公开的精神。另外,在适用的情况下,构想了软件组件可被实现为硬件组件,反之亦然。在适用的情况下,本文描述的各个步骤或动作的次序可以改变、组合成复合步骤或动作、和/或分成子步骤或子动作以提供本文描述的特征。

尽管已经描述了本公开的各实施例,但这些实施例进行解说而不限制本公开。还应当理解,本公开的各实施例不应当限制于这些实施例,而是本领域普通技术人员可根据本公开的原理作出众多修改和变型,并且这些修改和变型被包括在如所附权利要求中主张的本公开的精神和范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1