掌桥专利:专业的专利平台
掌桥专利
首页

本申请是优先权日为2017年6月1日、申请日为2018年4月3日、申请号为201880034179.9、发明名称为“用于中央凹形渲染的存储”的发明专利申请的分案申请。

技术领域

本公开涉及图形处理。

背景技术

计算装置常常利用图形处理单元(GPU)来加速用于显示的图形数据的渲染,且利用显示处理单元(DPU)来产生驱动显示器的信号。此类计算装置可包含例如计算机工作站、移动电话(例如所谓的智能手机)、嵌入系统、个人计算机、平板计算机及视频游戏控制台。GPU通常执行图形处理管线,所述图形处理管线包含一起操作以执行图形处理命令的多个处理级。主机中央处理单元(CPU)可通过将一或多个图形处理命令发布给GPU来控制GPU的操作。DPU检索由GPU产生的图像内容且进一步处理所述图像内容以产生驱动显示器的信号以致使显示器呈现所述图像内容。

发明内容

本公开针对图形内容的稀疏中央凹形渲染。图形处理单元(GPU)可基于图像的一部分中的图像内容的分辨率而非所述部分的尺寸来渲染所述图像内容。举例来说,如果图像内容的分辨率小于所述部分的尺寸的分辨率,则GPU可渲染具有比所述部分的尺寸小的尺寸的图像内容。GPU可针对图像中的每一部分重复这些操作,且将每一部分的图像内容存储在GPU外部的存储器中。通过存储具有较小尺寸(例如,相对于图像内容涵盖的所述部分的尺寸)的图像内容,GPU可减小需要存储到外部存储器的图像内容的量,借此减小存储器带宽。

GPU或另一处理电路可从外部存储器以较小尺寸检索图像内容,且接着调整图像内容的尺寸使得图像内容的尺寸与图像内容将涵盖的部分的尺寸相同。调整图像内容的尺寸的一个实例方式是利用纹理映射技术,其将具有较小尺寸的图像内容映射到具有所述部分的尺寸的网格,借此将图像内容拉伸回到其实际尺寸。

在一个实例中,本公开描述一种产生图像内容的方法,所述方法包括:确定待显示图像的第一部分包含具有第一分辨率的图像内容,其中所述第一分辨率小于图像的一或多个其它部分的第二分辨率;基于第一部分中的图像内容的第一分辨率以小于第一部分的尺寸的尺寸渲染第一部分的图像内容,以产生与所述第一部分相关联的较小尺寸的图像内容;将所述较小尺寸的图像内容存储在系统存储器中;从系统存储器检索所述较小尺寸的图像内容;以及将所述较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸。

在一个实例中,本公开描述一种用于产生图像内容的装置,所述装置包括系统存储器和处理电路,所述处理电路包括可编程或固定功能电路中的至少一个以及本地存储器,其中所述处理电路被配置成:确定待显示图像的第一部分包含具有第一分辨率的图像内容,其中所述第一分辨率小于图像的一或多个其它部分的第二分辨率;基于第一部分中的图像内容的第一分辨率以小于所述第一部分的尺寸的尺寸渲染第一部分的图像内容,以产生与所述第一部分相关联的存储在本地存储器中的较小尺寸的图像内容;将来自本地存储器的较小尺寸的图像内容存储到系统存储器;从系统存储器检索较小尺寸的图像内容;且将较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸。

在一个实例中,本公开描述一种用于产生图像内容的装置,所述装置包括:用于确定待显示图像的第一部分包含具有第一分辨率的图像内容的装置,其中所述第一分辨率小于图像的一或多个其它部分的第二分辨率;用于基于第一部分中的图像内容的第一分辨率以小于第一部分的尺寸的尺寸渲染第一部分的图像内容以产生与所述第一部分相关联的较小尺寸的图像内容的装置;用于将较小尺寸的图像内容存储在系统存储器中的装置;用于从系统存储器检索较小尺寸的图像内容的装置;以及用于将较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸的装置。

在一个实例中,本公开描述一种计算机可读存储介质,其上存储有指令,所述指令在执行时致使用于产生图像内容的装置的一或多个处理器:确定待显示图像的第一部分包含具有第一分辨率的图像内容,其中所述第一分辨率小于图像的一或多个其它部分的第二分辨率;基于第一部分中的图像内容的第一分辨率以小于第一部分的尺寸的尺寸渲染第一部分的图像内容,以产生与所述第一部分相关联的较小尺寸的图像内容;将较小尺寸的图像内容存储在系统存储器中;从系统存储器检索较小尺寸的图像内容;以及将较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸。

在附图和下文描述中阐述本公开的一或多个实例的细节。本公开的其它特征、目标和优势将从描述内容和图式以及从权利要求书中显而易见。

附图说明

图1是示出可用于实施本公开的技术的实例计算装置的框图。

图2是示出虚拟现实(VR)渲染的实例操作的流程图。

图3是更详细地示出图1的计算装置的CPU、GPU和存储器的框图。

图4A和4B是示出系统存储器中图像的图像内容的存储的概念图。

图5是更详细地示出图1的计算装置的GPU和存储器的框图。

图6是示出产生图像内容的实例方法的流程图。

图7是示出实例中央凹形区域的概念图。

图8是示出中央凹形渲染的一个实例的直观图。

具体实施方式

中央凹形渲染是旨在通过减少帧缓冲器的平均分辨率来减少片段处理工作负荷、带宽和其它渲染工作负荷同时通过以全分辨率留下渲染的焦点来维持高图像质量的技术。举例来说,在中央凹形渲染中,图像帧的不同部分在不同分辨率下。这使得某些部分与其它部分相比呈现为较模糊。

中央凹形渲染具有工作负荷效率、功率降低和检视者体验较好的益处。产生较低分辨率图像内容与较高分辨率图像内容相比通常需要更少处理,并且因此,中央凹形倾向于减少总体处理量。并且,图像内容创建者可能期望检视者聚焦在图像的某些部分(例如,前景对背景),或者可能存在检视者不太感兴趣的部分。通过使得图像的一些部分模糊并且其它部分清晰,检视者可能倾向于将注意力转移到更清晰的部分。在一些实例中,中央凹形可以是引导检视者检视图像的某些部分的工具。

图形处理单元(GPU)可被配置成执行中央凹形渲染。作为一个实例,GPU可执行虚拟现实(VR)或扩增现实(AR)应用的中央凹形渲染。在VR和/或AR应用中,GPU可产生图像内容以供两轮显示:眼睛-缓冲轮次和扭曲轮次。在眼睛-缓冲轮次中,GPU可基于例如从服务器接收的图像内容信息产生眼睛-缓冲图像内容。在扭曲轮次中,GPU接着可使用眼睛-缓冲图像内容来基于用户的眼睛或头部的当前位置产生图像内容。

举例来说,包含GPU的装置可从服务器请求和接收图像内容信息,且装置接收的图像内容信息可基于用户的眼睛或头部的位置。对于眼睛-缓冲轮次,GPU可基于所接收图像内容信息产生图像内容。然而,用户的头部的位置可能从请求的时间到当前时间已改变。相应地,在扭曲轮次中,GPU可使眼睛-缓冲轮次中产生的图像内容扭曲以适应用户的头部的位置的任何改变。

在眼睛-缓冲轮次之后,GPU将所产生的眼睛-缓冲图像内容存储到GPU外部的系统存储器。对于扭曲轮次,GPU从系统存储器检索眼睛-缓冲图像内容,执行扭曲以产生扭曲的图像内容,且将扭曲的图像内容存储回到系统存储器。GPU和系统存储器之间图像内容的此来回传递在存储器带宽方面可能是效率低下的,在图像内容的整个图像需要写入到系统存储器以及从系统存储器读取的情况下尤其如此。

本公开中所描述的实例技术涉及数种在使需要写入到系统存储器和从系统存储器读取的图像内容的量最小化的同时利用中央凹形的方式。举例来说,对于图像的特定部分,GPU可基于所述部分所要的图像分辨率以小于所述部分的尺寸的尺寸渲染与所述部分相关联的图像内容。图像分辨率是某一部分的模糊程度(例如,锐度缺乏)的量度。举例来说,对于图像的用户不在聚焦或不应聚焦的部分,GPU可以小于那些部分的尺寸的尺寸渲染图像内容。当图像内容在显示之前最终调整尺寸时,所述部分的图像内容可呈现为比GPU以与所述部分相同的尺寸渲染图像内容所针对的部分模糊。

作为一实例,假定用户不在聚焦或不应聚焦于第一16×16尺寸的部分,且应正聚焦于第二16×16尺寸的部分。在此实例中,GPU可以小于16×16的尺寸渲染第一16×16尺寸的部分的图像内容(例如,产生具有尺寸4×4、8×8等的图像内容)。此较小尺寸的图像内容与第一16×16尺寸的部分相关联。GPU可以16×16的相同尺寸渲染第二16×16尺寸的部分的图像内容(例如,产生具有尺寸16×16的图像内容)。在此实例中,当较小尺寸的图像内容的尺寸最终调整回到16×16(或可能另一尺寸)时,第一16×16尺寸的部分中的图像内容可呈现为比第二16×16尺寸的部分中的图像内容模糊。第一16×16尺寸的部分中的图像内容可呈现为比第二16×16尺寸的部分中的图像内容模糊,因为相比于第二16×16尺寸的部分,存在较少独立的图像内容可用于产生第一16×16尺寸的部分中的图像内容。

在本公开中所描述的实例技术中,GPU可将与某一部分(例如,对于具有减小的图像分辨率的部分)相关联的较小尺寸的图像内容输出到系统存储器,而非将图像内容的尺寸调整回到所述部分的实际尺寸并存储经过调整尺寸的图像内容。以此方式,GPU可减小需要写入到外部存储器(例如,作为眼睛-缓冲轮次的一部分)的图像内容的量,从而使存储器带宽减小。并且,当GPU需要读取图像内容(例如,作为扭曲轮次的一部分)时,相比于存储整个部分的图像内容的情况,GPU可读取较少图像内容。GPU接着可调整图像内容的尺寸,且执行扭曲的操作。

在一些实例中,在眼睛-缓冲轮次期间,GPU可产生(例如,渲染)比检视所需多的图像内容。原因是确保即使用户将要移动他或她的头部,也存在可用于扭曲的图像内容。作为一实例,当装置作为眼睛-缓冲轮次的一部分请求图像内容时,装置可请求基于当前眼睛和/或头部位置将被用户可见的图像内容,以及超出用户将能够看到的图像内容的周边的额外图像内容。此额外图像内容的原因是,因为用户可在扭曲轮次之前进一步移动他或她的头部,且具有此额外图像内容对于确保存在可用于扭曲的图像内容是有价值的。

然而,扭曲轮次需要的图像内容的量可能小于眼睛-缓冲轮次期间渲染的图像内容的量。再次,在眼睛-缓冲轮次期间,GPU可渲染比用户将可检视的更多图像内容。在扭曲轮次期间,GPU可渲染用户可检视的图像内容,其可以是眼睛-缓冲轮次期间渲染的图像内容中的一些或全部(例如,图像内容的子集)。

如上文所描述,在眼睛-缓冲轮次期间,GPU可将与某一部分(例如,对于具有减小的图像分辨率的部分)相关联的较小尺寸的图像内容输出到系统存储器,而非将图像内容的尺寸调整回到所述部分的实际尺寸并存储经过调整尺寸的图像内容。接着,作为尺寸调整的一部分,GPU可仅调整扭曲所需要的较小尺寸的图像内容的尺寸。相应地,在一些实例中,图像内容的尺寸调整可能不会导致将图像内容的尺寸调整回到与眼睛-缓冲轮次中相同的尺寸,而是,图像内容的尺寸调整将把尺寸调整回到填充所显示的图像内容所需的尺寸,该尺寸可能小于眼睛-缓冲轮次中图像内容的尺寸。

为了实施尺寸调整,在一个实例中,GPU可执行纹理映射(例如,经由GPU的纹理电路)。在纹理映射中,GPU将纹理图像覆叠到二维或三维网格上。为了进行尺寸调整,GPU可利用较小尺寸的图像内容作为纹理图像,且在此实例中,二维网格可具有与同较小尺寸的图像内容相关联的图像的图像部分相同的尺寸。因为较小尺寸的图像内容小于网格的尺寸(例如,图像部分的尺寸),所以为了纹理映射,GPU可拉伸较小尺寸的图像内容以将其覆叠在网格上。举例来说,GPU可将纹理图像中(例如,较小尺寸的图像内容中)的图元(例如,三角形)映射到网格中的图元,其中纹理图像中的图元的面积小于网格中的图元的面积。在此实例中,映射致使纹理图像中的图元的拉伸,因为纹理图像中的图元小于网格中的图元。

使用纹理映射的尺寸调整是一个实例,且存在其它实例技术。举例来说,GPU可复制像素值以调整图像内容的尺寸。作为一实例,如果较小尺寸的图像内容的尺寸为8×8且图像部分的尺寸为16×16,则GPU可复制8×8尺寸的图像内容中的每一像素三次使得存在四个像素来产生16×16尺寸的部分的图像内容。

在一些实例中,GPU可产生较小尺寸的图像内容作为两个遍次处理方案的一部分。在被称作分区遍次的第一遍次中,GPU将图像(例如,图像帧)划分为多个分区(也称为图块)。这些分区或图块是图像中具有不同分辨率的部分的一个实例。GPU确定哪些图元(例如,三角形)属于分区遍次中的哪些图块。在被称作渲染遍次的下一遍次中,GPU以逐图块的方式渲染图元(例如,以每分区的方式渲染图元)。

在本公开中所描述的实例中,在中央处理单元(CPU)上执行的应用(例如,视频游戏)可确定用于中央凹形渲染的图像帧的不同部分的图像分辨率,或服务器可提供指示用于中央凹形渲染的图像帧的不同部分的图像分辨率的信息。在渲染每个图块时,GPU可首先确定由该图块捕获的部分的图像分辨率。接着,代替于将图块的图像部分渲染为与图块相同的尺寸(例如,使得图像部分涵盖整个图块),GPU可以较小尺寸(例如,小于图块的尺寸)渲染图像内容。GPU可针对每个图块重复此过程。

仅出于说明的目的,相对于眼睛-缓冲轮次和扭曲轮次描述实例技术,然而,实例技术不限于此。举例来说,实例技术可适用于作为扭曲的补充或替代的各种后处理效果。此外,在一些实例中,可在不调整图像内容的尺寸的情况下执行扭曲,且可由除GPU以外的处理电路执行尺寸调整。并且,即使在不执行扭曲的实例中,也有可能由除GPU外的另一处理电路执行尺寸调整。

图1是示出可用于实施本公开的技术的实例计算装置2的框图。计算装置2可包括相机、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机和/或计算机工作站)、视频游戏平台或控制台、例如无线通信装置等移动装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)等手持式装置、个人音乐播放器、视频播放器、显示装置、电视、机顶盒、广播接收器、服务器、中间网络装置、主机计算机或处理和/或显示图形数据的任何其它类型的装置。

如图1的实例中所示出,计算装置2包含用户输入接口4、CPU 6、存储器控制器8、系统存储器10、图形处理单元(GPU)12、GPU 12的本地存储器14、显示处理器16、显示器18、位姿监视电路19和总线20。用户输入接口4、CPU 6、存储器控制器8、GPU12和显示接口16可使用总线20彼此通信。总线20可以是多种总线结构中的任一种,例如第三代总线(例如,超传送总线或无限频带总线)、第二代总线(例如,先进图形端口总线、外围组件互连(PCI)高速总线或先进可扩展接口(AXI)总线)或另一类型的总线或装置互连。应注意,图1中展示的不同组件之间的总线和通信接口的特定配置仅是示例性的,且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置可用于实施本公开的技术。

CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含例如操作系统、文字处理器应用、电子邮件应用、电子数据表应用、媒体播放器应用、媒体编辑应用、视频游戏应用、图形用户接口应用、电话会议应用或另一程序。用户可经由一或多个输入装置(未示出)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。

在CPU 6上执行的软件应用可包含指示CPU 6以致使将图形数据渲染到显示器18的一或多个图形渲染指令。在一些实例中,软件指令可符合图形应用编程接口(API),例如开放图形库

存储器控制器8促进数据进出系统存储器10的传递。举例来说,存储器控制器8可接收存储器读取和写入命令,且服务相对于存储器系统10的此些命令以便为计算装置2中的组件提供存储器服务。存储器控制器8以通信方式耦合到存储器10。尽管存储器控制器8在图1的实例计算装置2中被示出为与CPU 6和系统存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的功能性中的一些或全部可实施于CPU 6和系统存储器10中的一或两个上。

系统存储器10可存储可被访问以用于由CPU 6执行的程序模块和/或指令和/或用于由CPU 6上执行的程序使用的数据。举例来说,系统存储器10可存储用户应用和与所述应用相关联的图形数据。系统存储器10可另外存储用于由计算装置2的其它组件使用及/或由其产生的信息。举例来说,系统存储器10可充当用于GPU 12的装置存储器且可存储将由GPU12操作的数据以及由GPU 12执行的操作产生的数据。举例来说,系统存储器10可存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器或类似者的任何组合。另外,存储器10可存储命令流以供由GPU 12处理。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据介质或光学存储介质。

GPU 12可被配置成执行图形操作以将一或多个图形图元渲染到显示器18。因此,当在CPU 6上执行的软件应用中的一个需要图形处理时,CPU 6可将图形命令和图形数据提供到GPU 12以用于渲染到显示器18。图形命令可包含例如如绘制调用等绘制命令、GPU状态编程命令、存储器传送命令、通用计算命令、内核执行命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到可由GPU 12访问的存储器10而将命令和图形数据提供到GPU12。在一些实例中,GPU 12可被进一步配置成执行针对在CPU 6上执行的应用的通用计算。

在一些情况下,GPU 12可内置有高度并行结构,所述高度并行结构比CPU 6提供对向量运算的更高效处理。举例来说,GPU 12可包含多个处理元件,所述多个处理元件被配置成以并行方式在多个顶点或像素上操作。在一些情况下,GPU 12的高度并行性质允许GPU12比使用CPU 6直接将场景绘制到显示器18更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。另外,GPU 12的高度并行性质可允许GPU 12比CPU6更快速地处理用于通用计算应用的特定类型的向量和矩阵运算。

在一些例子中,GPU 12可集成到计算装置2的母板中。在其它例子下,GPU 12可存在于安装在计算装置2的母板中的端口中的图形卡上或可另外并入在被配置成与计算装置2交互操作的外围装置内。在进一步例子下,GPU 12可与CPU 6位于同一微芯片上,从而形成芯片上系统(system on a chip;SoC)。GPU 12可包含一或多个处理器,例如,一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP),或其它等效的集成电路或离散逻辑电路。

GPU 12可直接耦合到GPU本地存储器14。因此,GPU 12可从GPU本地存储器14读取数据和将数据写入到GPU本地存储器14,而不必使用总线20。换句话说,GPU12可使用本地存储装置而非芯片外存储器来在本地处理数据。此允许GPU 12通过消除GPU 12经由总线20读取和写入数据的需要而以更有效的方式操作,经由总线20操作可经历繁重的总线业务。然而,在一些例子中,GPU 12可不包含单独的高速缓冲存储器,而是经由总线20利用系统存储器10。GPU本地存储器14可包含一或多个易失性或非易失性存储器或存储装置,比如(例如)随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据介质或光学存储介质。

CPU 6和/或GPU 12可将经渲染的图像数据存储在系统存储器10内所分配的帧缓冲器中。显示处理器16可从帧缓冲器检索数据,并且配置显示器18以显示由经渲染的图像数据表示的图像。尽管单独地展示,但显示处理器16可以不是单独的处理器或单独的集成电路。事实上,显示处理器16的实例功能可在GPU 12处/由GPU 12执行。

在一些实例中,显示处理器16可包含数/模转换器(DAC),其被配置成将从帧缓冲器中检索的数字值转换成显示器18可消耗的模拟信号。在其它实例中,显示处理器16可将数字值直接传递到显示器18以进行处理。显示器18可包含监视器、电视机、投影装置、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话手持机或平板计算机的屏幕。或者,显示器18可以是经由有线或无线通信链路而耦合到计算装置2的独立装置。举例来说,显示器18可为经由缆线或无线链路而连接到个人计算机的计算机监视器或平板显示器。

在一些实例中,GPU 12可在被称作中央凹形渲染的过程中在不同图像分辨率下产生图像内容。如更详细地描述,GPU 12可首先以低于完全分辨率的像素分辨率渲染图像内容,且接着存储经渲染图像内容,这相比于以完全分辨率渲染图像内容和存储图像内容可需要较少存储器带宽。图像内容的图像分辨率可以小于GPU 12以完全像素分辨率渲染的部分的图像分辨率。

像素分辨率和图像分辨率不应被混淆。像素分辨率指代针对图像的一部分渲染的像素数目。具有较高像素分辨率的图像内容意味着与针对较低像素分辨率图像内容中的像素独立地产生的像素值相比针对较高像素分辨率图像内容中的像素存在更多独立地产生的像素值。

图像分辨率指示最终图像内容呈现的清晰或模糊程度。像素的像素值并非独立地产生;而是,使用最终像素值来复制、内插或求平均以产生作为图像内容的一部分的像素的像素值。

作为一实例,假定GPU 12针对具有32×32的尺寸的第一部分产生图像内容的32×32像素,且针对具有32×32的尺寸的第二部分产生相同图像内容的16×16像素。并且,假定GPU 12将图像内容的16×16像素的尺寸调整为第二部分的32×32。

在此实例中,尺寸32×32的第一部分和尺寸32×32的第二部分各自具有相同像素分辨率(例如,32像素乘32像素)。然而,即使图像内容相同,第一部分和第二部分的图像分辨率有可能不同。第二部分可呈现为比第一部分模糊。这种情况的一个原因可能是,相比于第二部分,第一部分包含每像素更多独立的图像内容。

相应地,第一部分和第二部分可在给定区域中包含相同数目的像素,但图像可能不呈现为更清晰或更清楚,因为在第二部分中未添加新的独立地产生的图像内容。因此,由于尺寸调整的缘故在此尺寸调整部分中的图像内容可能呈现为模糊,并且因此,该尺寸调整部分中的图像分辨率可以小于其它部分中的图像分辨率。如所描述,一部分的图像分辨率是图像部分保留的细节的量度。如果GPU 12添加额外的像素(例如,经由尺寸调整),但是不存在细节上的增加,那么图像分辨率降低。

图像分辨率可以与尺寸调整的量成反比地相关。GPU 12执行的尺寸调整越多,则图像分辨率将越低。举例来说,GPU 12以16倍进行尺寸调整的部分的图像内容的图像分辨率低于GPU 12以2倍进行尺寸调整的部分的图像内容的图像分辨率,GPU 12不需要调整尺寸。

可能存在GPU 12为何可在不同图像分辨率下产生图像内容的各种原因。作为一个实例,在较低像素分辨率下渲染图像内容与在较高像素分辨率下渲染图像内容相比通常需要较少功率,因为在较低像素分辨率图像内容中存在较少的待处理的像素。举例来说,GPU12在每次像素着色器执行时消耗功率。对于较低像素分辨率图像内容,存在像素着色器的较少执行,因为与用于较高像素分辨率图像内容相比存在较少像素。与产生独立像素值相比尺寸调整往往需要较少功率(例如,因为存在较少操作)。因此,相对于完全像素分辨率在较低像素分辨率下产生图像内容并且随后进行尺寸调整以相对于完全图像分辨率在较低图像分辨率下产生图像内容与在完全图像分辨率下产生图像内容相比消耗较少功率。

作为另一实例,在不同图像分辨率下产生图像内容可用于使用户的注意力聚焦到某些部分。在较高图像分辨率下的图像内容与在较低图像分辨率下的图像内容相比更清晰地呈现,并且用户倾向于自动地聚焦在较高图像分辨率部分上。通过致使GPU 12在不同像素分辨率下渲染图像内容(其随后被调整尺寸以在不同图像分辨率下产生图像内容),内容提供商可以确保检视者聚焦在与其它区域相比可以是更具有吸引力的特定区域上,从而产生更好的检视体验。

因此,在一些情况下,当针对检视者应该聚焦的部分在高分辨率下产生图像内容时由于处理很少像素,GPU 12可执行中央凹形渲染以降低功率消耗。可能存在中央凹形渲染的额外原因,并且实例技术不应被视为限于中央凹形渲染的这些特定原因。

在一些实例中,中央凹形渲染可用于虚拟现实(VR)和/或扩增现实(AR)应用。作为一实例,在VR应用中,装置2可以是头戴式装置(HMD)的实例,用户将所述头戴式装置安装到他/她的头部,且显示器18处于眼睛前方。随着用户移动他或她的头部或眼睛,显示器18显示不同的图像内容。此类应用给予检视者沉浸在图像内容中的效果。

因为用户可能正基于VR应用提供的体验不断地移动眼睛或头部,所以GPU 12可能需要以相对快的速率渲染图像内容。因此,可存在中央凹形渲染的益处,其允许GPU12产生较少像素值以实现较快渲染。并且,因为用户通常聚焦于特定位置,所以即使周围的图像内容不需要为清晰的,也可能不存在用户体验的大幅或任何降低。

作为另一实例,且如上文所描述和下文更详细地描述,在VR应用中,存在眼睛-缓冲轮次和扭曲轮次。在扭曲轮次期间,GPU 12可执行桶形失真。在桶形失真中,定位于用户正检视的中心的图像内容相比于周边处的图像内容处于聚焦,周边处的图像内容可能不处于聚焦。相应地,利用中央凹形,周边处的图像内容的图像分辨率可相对于较处于用户正检视的中心的图像内容减小,因为沿着周边的图像内容可能不是用户所关注的。

位姿监视电路19可跟踪用户的眼睛和/或头部的位置(例如,经由加速计、眼睛跟踪电路等)。用户输入接口4可将位姿信息输出到正提供待显示于显示器18上的图像内容的图像内容信息的外部服务器。基于位姿信息,服务器可确定发送什么图像内容信息。举例来说,服务器可发送涵盖用户在发送请求时正查看的区域的图像内容信息,以及可能不可由用户检视但在用户改变他或她的眼睛或头部的位置的情况下可能可检视的周围区域的图像内容。然而,为了节省带宽,服务器可仅针对在发送请求时用户正查看的区域发送图像内容信息以产生图像(例如,显示在显示器18上的图像帧)的图像内容。

GPU 12可基于所接收图像内容信息在被称作眼睛-缓冲轮次的轮次中渲染图像内容。在渲染此图像内容时,GPU 12可执行本公开中所描述的实例技术。举例来说,GPU12可基于分辨率针对图像的不同部分以不同尺寸(例如,小于所述部分的尺寸的尺寸)渲染图像内容。GPU 12接着可将相对于与图像内容相关联的部分的尺寸具有较小尺寸的图像内容存储在系统存储器10中。

在VR应用中,存在用户从发射图像内容信息的请求时他们所在的位置改变他或她的头部的可能性。为了考虑此位置改变,GPU 12可从系统存储器10检索较小尺寸的图像内容,将图像内容的尺寸调整回到与图像内容相关联的部分的尺寸,且在被称作扭曲轮次的轮次中在用户移动他或她的头部的方向中使图像内容扭曲(例如,移位或旋转图像内容)。否则,用户可能体验到抖动,这可能负面地影响体验。在一些实例中,GPU 12可首先使图像内容扭曲,且接着调整图像内容的尺寸。在一些实例中,GPU 12可在共同操作中使图像内容扭曲和调整图像内容的尺寸。

GPU 12接着可将图像的所得图像内容存储在系统存储器10中。显示处理器16可从系统存储器10检索图像内容,且驱动显示器18以显示所述图像内容。如果用户的眼睛或头部移动,则重复上述实例操作。在一些实例中,即使用户的眼睛或头部不移动,GPU 12也可保持使用本公开中描述的中央凹形渲染技术来减小所产生图像内容的量。

在VR应用以及也可能非VR应用中,如上文所描述,GPU 12可能需要将图像内容存储到系统存储器10,且接着GPU 12或可能例如显示处理器16等另一电路可从系统存储器10检索图像内容。在本公开中所描述的实例中,在存储图像内容时,GPU 12可以某一部分的减小的尺寸存储该部分的图像内容。如上文所描述,对于对于其需要较低图像分辨率的部分,GPU 12可以小于所述部分的尺寸的尺寸渲染那些部分的图像内容。在本公开中所描述的实例中,GPU 12可将此较小尺寸的图像内容存储在系统存储器10中。对于其中期望完全分辨率的部分(例如,用户正查看或应该正查看的部分),GPU 12可以与那些部分的尺寸相同的尺寸渲染所述部分的图像内容,且将图像内容存储在系统存储器10中。然而,因为存在GPU12产生较小尺寸的图像内容所针对的某些部分,所以GPU 12需要存储在系统存储器10中的图像内容的总量相对于所有部分的图像内容渲染到所述部分的尺寸的情况减小。

实例技术描述例如在其中GPU 12针对图形渲染执行两个遍次处理方案的实例中执行中央凹形渲染的方式。然而,所述技术不限于其中GPU 12针对图形渲染执行两个遍次处理方案的实例。此两个遍次处理方案可以是GPU 12针对眼睛-缓冲轮次执行用于产生图像内容的操作的一部分,以及GPU 12针对扭曲轮次执行用于产生图像内容的操作的一部分。然而,针对眼睛-缓冲轮次和扭曲轮次的两个遍次处理可能并非在每个实例中都是必需的。

第一遍次被称作分区遍次.其中GPU 12确定哪些图元属于哪些分区(也被称为图块)以及哪些图元可见(例如,产生可见性信息)。分区或图块是图像的部分的实例。在被称作渲染遍次的第二遍次中,GPU 12基于哪些图元属于哪些图块以及图元的可见性的确定循序地渲染每一部分(例如,图块或分区)。

可出于各种原因使用此类双重遍次图形处理架构(有时被称作基于流式输出的分区架构)。作为一个实例,例如域着色器、棋盘形布置和/或几何形状着色器等额外处理级可以被添加到GPU 12,并且由于时间上分开的几何形状和光栅化处理而存在分区和渲染的有效的重叠(例如,GPU 12可渲染一个图像同时在下一表面上执行分区)。

在本公开中所描述的实例技术中,GPU 12可执行分区遍次,且接着在渲染遍次期间,GPU 12可基于所述部分中的图像内容的图像分辨率渲染所述部分中的每一个的图像内容。举例来说,CPU 6或提供图像内容信息的服务器可限定GPU 12将要渲染的图像的不同部分的图像分辨率。在渲染某一部分时,GPU 12可基于由CPU 6或服务器限定的不同部分的图像分辨率确定所述部分的图像内容的图像分辨率。GPU 12接着可基于所述部分的图像内容的图像分辨率渲染属于所述部分的图像内容。

举例来说,每一部分的部分尺寸可以是N×N。如果某一部分中的图像内容的图像分辨率将相对于完全分辨率为四分之一分辨率,则GPU 12可渲染N×N部分中具有(N/2)x(N/2)的像素分辨率的图像内容(例如,渲染具有尺寸(N/2)x(N/2)的像素数目的图像内容)。因此,与所述部分中的像素数目相比,GPU 12渲染的图像内容中将存在四分之一的像素数目。GPU 12接着可针对每一部分重复这些步骤(例如,基于所述部分中的图像内容的图像分辨率渲染所述部分中的图像内容)。

GPU 12可将某一部分的经渲染图像内容输出到本地存储器14以供存储,且可类似地将每一部分的图像内容存储到本地存储器14。在此实例中,由于不同的像素分辨率,某一部分的图像内容的尺寸可不同于所述部分的尺寸,且不同部分的图像内容的尺寸可不同。GPU 12接着可将具有不同部分的不同尺寸的图像内容存储到系统存储器10。

为了执行尺寸调整,作为一个实例,GPU 12可对图像内容进行纹理映射。举例来说,GPU 12、CPU 6或某一其它处理电路可限定网格。此网格可以是与图像部分相同的尺寸和形状。举例来说,所述网格可以是图像的图块的尺寸和形状。所述网格可包含由顶点限定的多个图元,顶点是网格上的点。作为一实例,网格可以是具有与图块或分区的尺寸相同的尺寸的二维矩形网格。二维矩形网格包含由顶点限定的图元(例如,三角形是具有三个顶点的图元)。每一顶点包含(x,y)坐标。

在纹理映射中,GPU 12可将纹理中的图元的顶点映射到网格中的图元。为了避免混淆,纹理中的图元的坐标识别为(u,v)坐标。GPU 12可将纹理中的图元的顶点的(u,v)坐标映射到网格中的图元的顶点的(x,y)坐标(例如,基于限定映射的所接收命令)。GPU12可基于所述映射将纹理图元再绘制到网格中的图元上。

在本公开中所描述的实例中,存储在系统存储器10中的较小尺寸的图像内容是纹理的实例。举例来说,GPU 12可检索较小尺寸的图像内容且将较小尺寸的图像内容纹理映射到网格,其在此情况下为与同较小尺寸的图像内容相关联的图像中的部分相同的尺寸。

可存在其它可执行尺寸调整的方式。作为另一实例,GPU 12可将一或多个像素的像素值复制、内插或求平均到较小尺寸的图像内容的像素。举例来说,如果较小尺寸的图像内容为(N/2)x(N/2),则为了进行尺寸调整,GPU 12可将像素的像素值复制到三个相邻像素(例如,右、下和右下像素),这基本上将一个像素转换为四个像素。GPU 12可在上取样之后执行某一额外滤波,但此滤波是任选的。

在一些实例中,GPU 12可作为后处理操作的一部分执行尺寸调整。举例来说,在GPU 12产生一或多个图块的图像内容之后,作为后处理的一部分,GPU 12可应用后处理操作(例如,模糊、转换成黑白、扭曲等),并且作为后处理操作的一部分,GPU 12可调整所述一或多个部分的图像内容的尺寸。相对于扭曲描述所述技术,但可结合其它后处理操作执行所述技术。并且,在一些实例中,GPU 12可能不执行用于尺寸调整的后处理。事实上,显示处理器16或某一其它处理电路可被配置成接收较小尺寸的图像内容,且在显示之前调整尺寸。

举例来说,尽管相对于GPU 12调整图像内容的尺寸描述以上实例,但实例技术不限于此。在一些实例中,显示处理器16可被配置成调整图像内容的尺寸。举例来说,显示处理器16可被配置成执行上文关于GPU 12所描述的例如复制、内插或求平均等实例尺寸调整操作。显示处理器16可能并非在所有实例中都被配置成执行纹理映射,而是有可能显示处理器16也执行纹理映射技术。

在一些实例中,作为眼睛-缓冲轮次的一部分渲染的图像内容的量以及作为扭曲轮次的一部分调整尺寸的图像内容的量不必相同。如上文所描述,服务器可发送涵盖用户在发送请求时正查看的区域的图像内容信息,以及可能不可由用户检视但在用户改变他或她的眼睛或头部的位置的情况下可能可检视的周围区域的图像内容。因此,在眼睛-缓冲轮次期间,GPU 12可渲染从服务器接收的图像内容,包含不可由用户检视的周围区域的图像内容。举例来说,所接收的图像内容包含可由用户检视的图像内容的第一部分,以及不可由用户检视的周围区域的图像内容的第二部分。在一些实例中,除可渲染到较小尺寸的图像内容中的任何其它部分外,GPU 12还可使用本公开中描述的中央凹形技术以较小尺寸渲染非可检视周围区域中的图像内容。

在扭曲轮次期间,GPU 12可仅需要渲染实际用户可检视的部分。因此,GPU 12需要从系统存储器10检索的图像内容的量减小,因为GPU 12不需要从眼睛-缓冲轮次检索所有图像内容,而是仅检索现可检视的图像内容。如上文所描述,在眼睛-缓冲轮次期间,GPU 12可能已将图像内容渲染到较小尺寸,且将所述较小尺寸的图像内容存储到系统存储器10。接着,在扭曲轮次期间,GPU 12可从系统存储器10检索所述较小尺寸的图像内容的一些或全部(例如,子集),这意味着扭曲轮次期间GPU 12需要检索的图像内容的量进一步减小。

GPU 12可使用纹理映射来调整所检索图像内容的尺寸。然而,尺寸调整不必意味着GPU 12将图像内容的尺寸调整回到眼睛-缓冲轮次期间其被渲染的尺寸,但此尺寸调整是可能的。GPU 12可将图像内容的尺寸调整回到填充用户实际正检视的图像内容的图像所需的尺寸。

举例来说,在眼睛-缓冲轮次期间,GPU 12可能已经以不同尺寸渲染所接收图像内容。GPU 12可能已经以小于图像内容中的相关联部分的尺寸的尺寸渲染图像内容的部分。GPU 12可能未以不同尺寸渲染所有部分,但可能已经以不同尺寸渲染一些部分。GPU 12接着可将具有不同尺寸的经渲染图像内容存储在系统存储器10中。

作为扭曲轮次的一部分,GPU 12可检索以不同尺寸渲染的经渲染图像内容。在一些实例中,基于用户的头部的位置,GPU 12可能需要检索所有经渲染图像内容,或可能需要检索仅经渲染图像内容的子集。GPU 12接着可调整经渲染图像内容的尺寸以产生用户检视的图像。

GPU 12对经渲染图像内容进行尺寸调整的量可以是图像的尺寸的函数。举例来说,GPU 12可调整图像内容的尺寸使得其填充图像,且图像中不存在空穴。相应地,GPU 12进行尺寸调整的量可以是变化的。如所描述,在一些实例中,GPU 12可使用纹理映射技术来执行尺寸调整。

因为本公开中描述的技术可由不同实例电路执行,所以本公开中所描述的技术可由包含固定功能电路和可编程电路中的一或多个的处理电路执行。处理电路的实例包含CPU 6、GPU 12、显示处理器16和位姿监视电路19中的一个或任何组合。为易于描述,大体相对于GPU 12描述本公开中描述的技术。然而,此描述不应被视为将实例技术限于GPU 12。事实上,本公开中描述的技术可由各种处理电路个别地或组合地执行。

大体来说,GPU 12可确定待显示图像的第一部分将包含具有第一图像分辨率的图像内容,所述第一图像分辨率小于图像的一或多个其它部分的图像分辨率。举例来说,图像中可能存在某些部分比图像中的其它部分模糊或大体较不清晰。对于基于分区的架构,部分的一个实例为图像中的图块。

GPU 12可基于第一部分中的图像内容的图像分辨率以小于所述部分的尺寸的尺寸渲染第一部分的图像内容,以产生与第一部分相关联的较小尺寸的图像内容。举例来说,GPU 12可确定第一部分的图像分辨率为完全分辨率的1/16,且渲染具有(N/4)x(N/4)的像素分辨率(例如,(N/4)x(N/4)的尺寸)的第一部分的图像内容,其中N×N为所述部分的尺寸,且因此,(N/4)x(N/4)小于N×N。

在一些实例中,GPU 12可将较小尺寸的图像内容存储在系统存储器10中。举例来说,代替于在存储于系统存储器10中之前进行尺寸调整,GPU 12可在被称作稀疏存储的过程中将较小尺寸的图像内容存储在系统存储器10中,这需要将较少位从GPU 12传递到系统存储器10且促进总线20上的存储器带宽。GPU 12或显示处理器16可从系统存储器10检索较小尺寸的图像内容,且将较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸。

可能存在GPU 12确定图像的不同部分的图像分辨率的各种方式。作为一个实例,CPU 6可限定每一部分的像素分辨率,因为当调整所述部分的尺寸时,所得图像分辨率将是那些部分的图像分辨率。在此实例中,像素分辨率和图像分辨率可以是相同的(例如,具有图块的(N/2)x(N/2)像素分辨率与将图像分辨率限定为四分之一图像分辨率是有效地相同的)。作为另一实例,CPU 6可限定图像的部分的图像分辨率。CPU 6可限定形状(例如,矩形、三角形、椭圆形,或某一其它多边形)及其坐标,并且可按绝对项(例如,在上取样之前应该针对该部分渲染的像素数目)或相对项(例如,完全图像分辨率的某一因数)限定所述部分的图像分辨率。作为一个实例,CPU 6可限定分辨率的带(例如,具有不同水平的中央凹形的带)。对于图像的中心,CPU 6可限定没有中央凹形的圆(例如,完全图像分辨率),对于围绕圆的圆形带(例如,环),CPU 6可限定四分之一分辨率等等,作为限定图像的不同部分的不同分辨率(例如,中央凹形的量)的方式。在一些实例中,CPU 6可从服务器接收指示不同部分的图像分辨率的信息。

CPU 6可输出关于具有特定图像分辨率的部分的形状和位置的信息。GPU 12可基于图像的不同部分的形状和位置以及图像中的部分的位置的信息确定所述部分中的图像内容的图像分辨率。

在一些情况下,并非CPU 6限定图像部分的尺寸和形状以及该部分的特定图像分辨率,GPU 12可被配置成限定图像部分的尺寸和形状及其图像分辨率。举例来说,GPU 12可被配置成限定在图像的中心具有半径R的圆为具有第一图像分辨率,具有围绕圆的宽度W0的环形为具有第二图像分辨率,围绕具有宽度W0的环形的环形宽度W1为具有第三图像分辨率,等等。限定图像分辨率的其它可能方式是可能的并且实例技术不应被视为限于这些实例。并且,代替于环形、椭圆形或矩形,或其它非圆形环是可能的。

在基于分区的实例中,具有特定图像分辨率的图像部分的尺寸和/或形状可与图块的尺寸和/或形状不相同。举例来说,假设CPU 6限定图像部分为部分配适在图块内的椭圆形。在此实例中,CPU 6可限定图块内的椭圆形图像部分为具有第一分辨率,所述第一分辨率小于图块内的剩余的图像部分的第二分辨率。

在一或多个实例中,GPU 12可渲染图像内容使得图块中的图像内容始终具有相同图像分辨率(例如,图块中的所有图像内容具有相同图像分辨率)。虽然CPU 6可能已经限定相同图块中的图像内容的两个不同的分辨率(例如,第一分辨率和第二分辨率),但是GPU12可渲染图像内容使得该图块中的图像内容的像素分辨率是均匀的。相应地,在此实例中,GPU 12可确定是否以第一分辨率、第二分辨率或对于图块均匀的某一其它分辨率来渲染图块。

在具有特定图像分辨率的图像部分并不涵盖整个图块的情况下,GPU 12可利用各种因数来确定渲染该图块的图像内容的分辨率。作为一个实例,GPU 12可确定涵盖大部分或多个图块的图像内容的部分,确定该部分的图像分辨率,并且以某一像素分辨率渲染图块的图像内容使得当对图像内容进行上取样时该图像内容的图像分辨率等于所确定的图像分辨率。作为另一实例,GPU 12可确定具有最高分辨率的图块中的图像内容的部分,确定该部分的图像分辨率,并且以某一像素分辨率渲染图块的图像内容使得当对图像内容进行上取样时该图像内容的图像分辨率等于所确定的图像分辨率。作为另一实例,GPU 12可确定图块内的不同图像部分的不同图像分辨率的平均值或加权平均值(例如,较大部分被更大程度上加权)以确定平均图像分辨率,并且以某一像素分辨率渲染图块的图像内容使得当对图像内容进行上取样时该图像内容的图像分辨率等于所确定的平均图像分辨率。可能存在GPU 12确定图块的图像分辨率的其它方式,并且技术不应被视为限于上述实例。

在上述实例中的一或多个中,某些图像部分的图像分辨率可以不同于由CPU 6限定的图像分辨率。举例来说,在上述实例中,对于图块存在具有第一图像分辨率的图像内容(例如,图像内容的椭圆形),其小于具有第二图像分辨率的图像内容(例如,图块的剩余部分)。如果GPU 12或CPU 6确定图块的图像内容应该具有等于第二图像分辨率的图像分辨率,那么虽然CPU 6限定图像内容的椭圆形为具有第一图像分辨率,但是图像内容的椭圆形的实际产生的图像分辨率可以等于第二图像分辨率。相反地,如果GPU 12或CPU 6确定图块的图像内容应该具有等于第一图像分辨率的图像分辨率,那么虽然CPU 6限定除图像内容的椭圆形之外的图块的其它部分为具有第二图像分辨率,但是执行图像内容的椭圆形的图块的部分的实际产生的图像分辨率可以等于第一图像分辨率。

为了产生具有特定图像分辨率的图像内容,GPU 12可首先以较低像素分辨率渲染图像内容,且接着调整图像内容的尺寸(或显示处理器16可执行尺寸调整)。以较低像素分辨率渲染图像内容的一种方式是将图像内容渲染到小于所述部分的尺寸的尺寸。GPU12将图像内容渲染到小于某一部分的尺寸的尺寸的一个实例方式是将GPU 12将渲染的视口限定到较小尺寸。举例来说,如果GPU 12将渲染到尺寸(N/2)x(N/2),其中NxN是图块的尺寸,那么GPU12可将视口限定为(x,y)到((x+N/2)),(y+N/2)),其中x是部分的左上角的x坐标并且y是部分的左上角的y坐标。在一些实例中,CPU 6可限定视口,而非GPU 12。作为另一实例,在CPU 6上执行的应用可限定视口而没有尺寸上的任何变化(例如,限定视口为图块的尺寸),并且在CPU 6或GPU 12的控制器上执行的图形驱动器可随后修改限定视口以将视口的尺寸调整到较小尺寸的命令。致使GPU 12将图像内容渲染到小于图块的尺寸的尺寸的其它可能技术是可能的,并且技术不应被视为限于上述实例。

相应地,实例技术提供GPU 12产生中央凹形渲染图像内容使得图像的不同部分处于不同图像分辨率的方式。举例来说,代替于渲染图像内容以扣接到某一部分(例如,具有某一部分的相同尺寸),GPU 12可将所述部分的图像内容渲染到小于所述部分的尺寸,从而产生与所述部分相关联的较小尺寸的图像内容,其中GPU 12渲染到的尺寸是基于所述部分中的图像内容的图像分辨率和所述部分的尺寸。如果所述部分的尺寸为N×N,且图像分辨率将为完全分辨率的一半,则GPU 12可将所述部分的图像内容渲染到

(NxN)(1/2)(即,(N/2)xN或Nx(N/2))。在此实例中,像素分辨率为Nx(N/2)或(N/2)xN。同样,像素分辨率限定给定区域中渲染的像素的数目,并且图像分辨率限定图像内容中的细节的量。GPU 12可调整渲染到较小尺寸的图像内容的尺寸使得所得图像内容具有与所述部分的尺寸相同的尺寸。GPU 12可针对部分中的每一个重复这些操作。

在一些实例中,尺寸调整不会向图像添加任何新的额外图像内容,而是基于相邻像素的像素值通过纹理映射或者对像素值进行复制、内插或求平均来执行。所需的尺寸调整的量可以直接地与部分呈现的模糊或清晰程度相关。举例来说,16倍上取样的图像内容的部分与4倍上取样的图像内容的部分相比将呈现为更模糊。通过将某一部分的图像内容渲染到小于所述部分的尺寸的尺寸且接着进行尺寸调整到所述部分的尺寸导致图像内容在图像的不同部分中具有不同的图像分辨率。

GPU 12或显示处理器16可被配置成将与某一部分相关联的较小尺寸的图像内容的尺寸调整回到所述部分的尺寸。为了执行此尺寸调整,GPU 12或显示处理器16可被配置成确定调整较小尺寸的图像内容的尺寸到什么程度。在一些实例中,GPU 12或CPU 6可存储GPU 12或显示处理器18用来确定调整图像内容的尺寸到什么程度的元数据。元数据的实例可以是指示所述部分的尺寸、较小尺寸的图像内容的尺寸或所述部分的分辨率中的一或多个的信息。GPU 12或显示处理器16接着可检索元数据连同较小尺寸的图像内容,且基于所存储的元数据调整尺寸。作为一实例,元数据可指示部分的尺寸为N×N,且较小尺寸的图像内容的尺寸为(N/4)x(N/4)。在此实例中,GPU 12或显示处理器16可按16倍(水平地四倍,且竖直地四倍)调整图像内容的尺寸。作为另一实例,元数据可指示第一部分的分辨率为1/64。在此实例中,GPU 12或显示处理器16可以因数八水平地调整图像内容的尺寸,且以因数八竖直地调整图像内容的尺寸,因为八乘以八为64。

在一些实例中,作为存储GPU 12或显示处理器16用来调整较小尺寸的图像内容的尺寸的元数据的替代或补充,处理电路(例如,CPU6、GPU 12或显示处理器16的任何组合)可再确定不同部分的分辨率。举例来说,在一些实例中,给定部分的分辨率可相对于用户正在或应该正在检视图像内容的位置。处理电路可使用指示用户正查看(例如,如位姿监视电路19所确定)或应该正查看(例如,如CPU 6上执行的应用所确定)的位置的信息,且再确定图像分辨率应该为多少。再确定的图像分辨率和最初确定的图像分辨率应相同,因为处理电路使用相同信息来确定图像分辨率。因为GPU 12基于所确定的图像分辨率渲染图像内容,所以GPU 12或显示处理器16可能够使用由GPU 12或CPU 6用来确定图像分辨率的相同信息确定调整较小尺寸的图像内容的尺寸到什么程度。

图2是示出虚拟现实渲染的实例操作的流程图。为了便于理解,相对于虚拟现实渲染描述实例技术。然而,应理解,实例技术不限于虚拟现实渲染。

CPU 6可执行向服务器请求图像内容信息或产生图像的图像内容信息的虚拟现实(VR)应用。图像涉及将涵盖显示器18的整个图像内容,有时也被称为图像帧或简称为帧。在请求图像内容信息或产生图像内容信息时,CPU 6经由应用可利用用户正检视的位置的信息。在任何情况下,GPU 12可接收用于处理和产生图像内容以供显示的图像内容信息(22)。在一些实例中,GPU 12接收的图像内容的量可能超过用户可见的量。可需要此额外图像内容以确保在用户移动他或她的头部的情况下存在用户可用的图像内容。

为了产生图像内容以供显示,GPU 12可执行用于眼睛-缓冲轮次的操作,由参考数字(24)示出。在眼睛-缓冲轮次中,GPU 12可为位于系统存储器10中的眼睛缓冲器产生图像内容(26)。在下文关于图3和5更详细地描述GPU 12产生图像内容的方式。大体来说,为了为眼睛缓冲器产生图像内容,GPU 12可基于不同部分的图像分辨率产生图像的不同部分的具有不同尺寸的图像内容。作为一实例,如果某一部分将相对于完全分辨率具有1/16图像分辨率,则GPU 12可产生具有具有完全分辨率的图像内容的尺寸的1/16的尺寸的图像内容(例如,如果块为N×N,则GPU 12可渲染具有尺寸(N/4)x(N/4)的图像内容)。

在渲染具有较小尺寸的图像内容时,GPU 12可初始地将图像内容存储在其本地存储器14中。GPU 12接着可从本地存储器14输出图像内容且将其存储到系统存储器10(28)。在输出图像内容时,GPU 12可不改变图像内容的尺寸或以其它方式增加图像内容的尺寸。这允许GPU 12限制需要存储在系统存储器10中的图像内容的量。

在此实例中,GPU 12可确定图像的部分的图像分辨率,基于一或多个部分的分辨率将那些部分的图像内容渲染到小于所述部分的尺寸的尺寸,且针对系统存储器10中的眼睛缓冲器将与所述部分相关联的所得较小尺寸的图像内容存储到系统存储器10,作为眼睛缓冲轮次的一部分。GPU 12接着可执行扭曲轮次,由参考数字30示出。举例来说,作为使图像内容扭曲的一部分,GPU 12可检索较小尺寸的图像内容并调整其尺寸。

举例来说,GPU 12可从系统存储器10检索较小尺寸的图像内容(32)。然而,并非全部较小尺寸的图像内容可需要检索,因为在眼睛-缓冲轮次中,GPU 12可能已经渲染比可检视多的图像内容。因为图像内容与较小尺寸的图像内容一起存储,所以GPU 12需要检索的图像内容的量小于在图像内容具有与同图像内容相关联的部分相同的尺寸的情况下GPU12原本需要检索的图像内容的量。GPU 12可使图像内容扭曲(34)。在一些实例中,GPU 12可首先将较小尺寸的图像内容的尺寸调整到与其相关联的部分的尺寸以确保图像中不存在空穴,且接着使经过尺寸调整的图像内容扭曲(例如,旋转或移位)以考虑自从请求图像内容信息的时间以来用户的头部的移动的任何改变。在一些实例中,GPU 12可首先使较小尺寸的图像内容扭曲且接着调整尺寸,或者使图像内容扭曲和调整图像内容的尺寸一起进行。

作为眼睛-缓冲轮次24的一部分,处理电路(例如,CPU 6或GPU 12与位姿监视电路19组合)可能已经确定用户眼睛或用户头部中的至少一个的位置,且可能已经接收基于所确定的位置指示图像的部分的分辨率的信息。作为扭曲轮次30的一部分,处理电路可在尺寸调整之前或尺寸调整之后再确定用户头部的位置,且基于再确定的位置使较小尺寸的图像内容扭曲(例如,其中尺寸调整在扭曲之后发生)或使经过尺寸调整的图像内容扭曲(例如,其中尺寸调整在扭曲之前发生)。在其中位姿监视电路19不作为眼睛-缓冲轮次的一部分确定眼睛或头部位置的实例中,处理电路可仍利用头部的所确定位置,作为扭曲轮次的一部分。

GPU 12可将扭曲轮次30之后所得的图像内容存储在系统存储器10中。显示处理器16可从系统存储器10检索所得图像内容,且致使显示器18显示图像内容(36)。以此方式,实例技术提供中央凹形,同时使需要写入到系统存储器10以及从系统存储器10读取的图像内容数据的量最小化。如上文所描述,尽管单独地展示,但显示处理器16可以不是单独的处理器或单独的集成电路。事实上,显示处理器16的实例功能可在GPU12处/由GPU 12执行。

图3是更详细地示出图1的计算装置2的CPU 6、GPU 12和存储器10的框图。如图3所示,CPU 6以通信方式耦合到GPU 12和存储器10,且GPU 12以通信方式耦合到CPU 6和存储器10。在一些实例中,GPU 12可与CPU 6集成到母板上。在额外实例中,GPU 12可实施在安装于包含CPU 6的母板的端口中的图形卡上。在其它实例中,GPU 12可并入在被配置成与CPU6交互操作的外围装置内。在额外实例中,GPU 12可与CPU 6位于同一微芯片上,例如从而形成芯片上系统(SoC)。CPU 6被配置成执行应用38、图形应用编程接口(API)40、GPU驱动器42和操作系统44。

在图3的实例中,GPU 12包含控制器46、着色器核心48和一或多个固定功能单元50。为了简单起见,本地存储器14也示出为GPU 12的一部分,但也可在外部。

软件应用38可包含致使显示图形内容的一或多个指令或致使在GPU 12上执行非图形任务(例如,通用计算任务)的一或多个指令中的至少一些。软件应用38可将指令发布到图形API 40。图形API 40可以是运行时服务,其将从软件应用38接收的指令转译为可由GPU驱动器42消耗的格式。在一些实例中,图形API 40和GPU驱动器42可以是相同软件服务的一部分。

GPU驱动器42经由图形API 40从软件应用38接收指令,且控制GPU 12的操作以服务于所述指令。举例来说,GPU驱动器42可制定一或多个命令流,将所述命令流放置到存储器10中并指示GPU 12执行命令流。GPU驱动器42可将命令流放置到存储器10中,且经由操作系统44(例如,经由一或多个系统调用)与GPU 12通信。

控制器46被配置成检索存储在命令流中的命令,且分派所述命令以用于在着色器核心48和一或多个固定功能单元50上执行。控制器46可从命令流分派命令以用于在一或多个固定功能单元50,或着色器核心48和一或多个固定功能单元50的子集上执行。控制器46可为GPU 12的硬件,可为在GPU 12上执行的软件或固件,或两者的组合。

着色器核心48包含可编程电路(例如,软件在上面执行的处理核心)。一或多个固定功能单元50包含固定功能电路,所述固定功能电路被配置成用最小功能灵活性执行有限操作。着色器核心48和一或多个固定功能单元50一起形成被配置成执行图形处理的图形管线。

着色器核心48可被配置成执行从CPU 6下载到GPU 12上的一或多个着色器程序。在一些实例中,着色器程序可以是用高级着色语言(例如,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)编写的程序的经编译版本。在一些实例中,着色器核心48可包含被配置成并行操作的多个处理单元(例如,SIMD管线)。着色器核心48可具有存储着色器程序指令的程序存储器和执行状态寄存器(例如,程序计数器寄存器),所述执行状态寄存器指示程序存储器中正执行的当前指令或待提取的下一指令。在着色器核心48上执行的着色器程序的实例包含例如顶点着色器、像素着色器(也被称为片段着色器)、几何形状着色器、外壳着色器、域着色器、计算着色器和/或统一着色器。

固定功能单元50可包含经硬连线以执行某些功能的硬件。虽然固定功能硬件可经由(例如)一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,一或多个固定功能单元50可包含例如执行光栅操作(例如,深度测试、剪刀测试、阿尔法混合等)的处理单元。

CPU 6的GPU驱动器42可被配置成将命令流写入到存储器10,且GPU 12的控制器46可被配置成从存储器10读取命令流中的一或多个命令。在一些实例中,可将命令流中的一或两个存储为存储器10中的环形缓冲器。环形缓冲器可以是具有循环寻址方案的缓冲器,其中CPU 6和GPU 12维持与将数据写入到环形缓冲器及从环形缓冲器读取数据相关联的同步状态变量。举例来说,如果第一命令流是环形缓冲器,那么CPU 6及GPU 12中的每一个可存储指示待写入到环形缓冲器中的下一地址的写入指针及指示待从环形缓冲器中读取的下一地址的读取指针。

当CPU 6将新命令写入到环形缓冲器时,CPU 6可更新CPU 6中的写入指针且指示GPU 12更新GPU 12中的写入指针。类似地,当GPU 12从环形缓冲器读取新命令时,GPU 12可更新GPU 12中的读取指针且指示CPU 6更新CPU 6中的读取指针。其它同步机制是可能的。在读取和/或写入指针到达针对环形缓冲器所分配的地址范围内的最高地址时,读取和/或写入指针可环绕到最低地址以实施循环寻址方案。

现在将相对于图3描述实例GPU驱动器42和实例GPU控制器46的实例操作。GPU驱动器42从软件应用38接收指定待由GPU 12执行的图形操作和/或通用计算操作的一或多个指令。GPU驱动器42将输出命令流放置到可由GPU控制器46访问的存储器10中。GPU驱动器42通知GPU控制器46对应于软件应用38的命令流可用于处理。举例来说,GPU驱动器42可将指示命令流准备好执行的一或多个值写入到GPU寄存器(例如,由GPU 12轮询的GPU硬件寄存器及/或由GPU 12轮询的GPU存储器映射的寄存器)。

在通知命令流准备好执行之后,GPU 12的控制器46可确定资源在GPU 12上当前是否可供使用以开始执行命令流。如果资源是可用的,那么控制器46开始分派命令流中的命令。

作为图形处理的一部分,CPU 6可将某些图形处理任务卸载到GPU 12。举例来说,应用38可产生互连以形成图形对象的图元的多个顶点的属性的属性数据。应用38可将属性数据存储在存储器10中的顶点缓冲器中。GPU驱动器42可指示控制器46检索顶点的属性的属性数据以用于处理以产生图形数据以供显示。

在一些实例中,应用38产生GPU驱动器42将向GPU 12发射的图像分辨率信息。图像分辨率信息限定GPU 12将产生的图像的不同部分的图像分辨率。在一些实例中,应用38可发送针对指示图像的不同部分的图像分辨率信息的信息的请求。

作为一实例,在应用38确定图像分辨率的情况下,应用38可限定图像分辨率的带。对于特定带中的图像内容,GPU 12可基于图像内容所属的带来渲染图像内容。举例来说,GPU 12可确定图元的顶点所属的带,并且基于图元的顶点所属的带的图像分辨率来渲染图元。对于高度感兴趣的部分,应用38可限定相对高的图像分辨率,并且对于不太感兴趣的部分,应用38可限定相对低的图像分辨率。

作为另一实例,应用38可限定顶点中的每一个的图像分辨率,作为存储在顶点缓冲器中的属性数据的一部分。在此实例中,对于位于具有高度感兴趣的区域(例如,检视者应正检视的区域)的部分中的图元的顶点,应用38可将那些区域限定为具有相对高的图像分辨率,且至于具有不太感兴趣的区域的其它部分,则限定为具有相对低的图像分辨率。

图像分辨率的限定可以是相对于完全图像分辨率的比率。举例来说,图像分辨率的限定可以是1/4分辨率、1/16分辨率等。将图像分辨率限定为某一比率(例如,1/4、1/16等)可以与将像素分辨率限定为某一比率同义。

举例来说,完全像素分辨率是指显示器18上的像素数目。如果显示器18为2048像素宽和1536像素宽,且GPU 12渲染具有2048像素乘1536像素的图像,则所述图像处于完全像素分辨率。然而,如果GPU 12渲染具有128像素乘96像素的图像,则GPU12以1/256像素分辨率(例如,(2048/16)x(1536 16))渲染图像。如果GPU 12接着以因数256倍调整具有1/256像素分辨率的图像的尺寸,则所得经过尺寸调整的图像将包含2048x1536像素,但图像分辨率将为完全图像分辨率的1/256。作为比较,经过尺寸调整的具有1/256像素分辨率的图像将呈现为比具有完全像素分辨率的图像模糊。这是因为,经过尺寸调整的图像内容中存在较少细节,因为尺寸调整基于已经现有的像素值而非产生独立的新像素值来产生像素的像素值。

尽管相对于完全图像描述图像分辨率和像素分辨率的以上描述,但相同概念适用于图像的一部分。举例来说,如果图像内容将被渲染到NxN尺寸的部分,且来自应用38的图像分辨率信息指示NxN尺寸的部分中的图像内容的图像分辨率是四分之一分辨率,则将图像内容渲染到尺寸(N/2)x(N/2),并且随后以因数四进行尺寸调整使得所述图块的图像内容具有四分之一图像分辨率。

在应用38在顶点基础上限定图像分辨率的实例中,应用38可将每个图元的图像分辨率限定为该图元的顶点的额外的属性数据。因为在图像中存在多个图元,所以将存在具有不同图像分辨率的多个图像部分。举例来说,应用38可限定第一组的图元将处于第一图像分辨率,第二组的图元将处于第二图像分辨率,等等,包含将处于完全图像分辨率的一组图元。

具有不同图像分辨率的图元的组中的每一个可形成相应的形状(例如,椭圆形)。相应地,一些实例中的应用38可限定图像的不同部分的不同图像分辨率,其中每一部分具有特定多边形形状(例如,椭圆形、矩形等)。可能存在应用38限定具有不同图像分辨率(例如,包含图像分辨率的带)的图像部分的各种其它方式,并且图像分辨率信息的顶点的顶点属性的使用是一个实例。

如上文所描述,GPU 12可被配置成在两个轮次中产生VR内容:眼睛缓冲轮次和扭曲轮次。对于至少眼睛缓冲轮次,且可能还对于扭曲轮次,GPU 12可被配置成在两个遍次中产生图像内容:分区遍次和渲染遍次。尽管相对于两个遍次描述实例技术,但实例技术不限于此。

在分区遍次中,GPU驱动器42和/或控制器46可限定某一部分(也称为分区或图块)的尺寸,其中每一部分具有尺寸N×N(例如,N×N像素数目)。所述部分不必是正方形的或全部是相同尺寸。为易于描述,以下内容是相对于具有相同尺寸的正方形部分描述的。

控制器46接着可致使着色器核心48和固定功能单元50执行相应的操作以确定哪些图元属于哪个部分以及哪些顶点可见。在渲染遍次中,控制器46可致使着色器核心48和固定功能单元50以每部分为基础执行相应操作,从而以逐部分的方式渲染图像内容。GPU12将所得图像内容存储在存储器10中以用于检索和显示。

图形处理的部分包含顶点处理,所述顶点处理通常由在着色器核心38上执行顶点着色器的GPU 12执行。举例来说,顶点着色器可对每个顶点的属性的属性数据执行坐标转换、照明、着色和其它此类处理。应用38可与顶点着色器结合,并且应用38可经由GPU驱动器42发布指示控制器46检索顶点着色器的目标代码以用于在着色器核心48上执行的命令。

GPU 12可执行顶点着色器作为分区遍次的一部分。顶点着色器可接收如由应用38限定的图元的顶点坐标并且产生作为检视区域的一部分的图元的顶点坐标。可以是固定功能单元50的部分的分区电路可确定图元中的每一个所属的部分。举例来说,分区电路可接收指示显示器18的尺寸的信息(例如,显示器18的水平像素数目乘显示器18的竖直像素数目)。基于显示器18的尺寸,分区电路可将顶点着色器所提供的坐标转换成显示器18上的坐标。显示器18的尺寸可以存储在本地存储器14或存储器10中。

另外,分区电路可将图像划分成多个部分。图像可以是显示器18的尺寸。GPU驱动器42可限定分区电路将把图像划分为的部分的数目。基于部分的数目和显示器18的尺寸,分区电路可确定每一部分的尺寸和图像中每一部分的位置。作为一实例,如果显示器18的尺寸是100像素乘100像素,并且GPU驱动器42限定图像将被划分成100个图块,那么分区电路可确定存在连续地布置的100个10像素乘10像素图块。

基于每一部分的尺寸、图像中每一部分的位置以及显示器18上的顶点的坐标,分区电路可确定哪些顶点属于哪一部分。举例来说,继续100个10像素乘10像素图块的实例,如果分区电路确定顶点的x和y坐标分别为25和35,则分区电路可确定此顶点位于部分(2,3)处。在此实例中,25/10指示所述部分位于从右边数第二部分,且35/10指示所述部分位于从顶部数第三部分。

在一些实例中,顶点着色器输出的两个顶点可以位于相同x、y坐标处,但是在不同z坐标处。z坐标指示深度。深度测试电路可从分区电路接收哪些顶点属于哪些图块的坐标信息。对于具有相同x、y坐标的顶点,深度测试电路可基于相应的z坐标确定哪个顶点被哪个顶点遮挡。如果顶点或图元被遮挡,那么该顶点或图元可以被免于进一步处理。举例来说,深度测试电路可能不将被遮挡的顶点或图元的属性数据输出到存储器10。分区电路和深度测试电路的操作次序是作为一实例提供的,并且操作次序可以颠倒。深度测试电路可首先确定顶点或图元是否被遮挡且从进一步处理中移除那些顶点,并且分区电路可随后确定顶点属于哪些图块。

在任一实例(例如,分区并且随后深度测试或深度测试并且随后分区)中,结果可以是指示图元属于哪些图块的信息。并且,剩余的顶点(例如,那些未丢弃的顶点)可以是促成最终图像的顶点。这些操作可结束分区遍次。相应地,在分区遍次结束时,存在哪些顶点属于哪些部分(例如,促成图像中的内容的哪些顶点属于哪些部分)的可见性信息。

GPU 12可在存储器10中存储哪些顶点属于哪个部分的信息,可能作为额外属性数据。举例来说,每一部分可以与数字值中的位置相关联(例如第一位置与数字值中的最后位相关联,第二部分与数字值中的第二到最后位相关联,等等)。对于每个顶点,分区电路可确定指示该顶点所属的部分的数字值。在顶点的数字值中与特定部分相关联的位的数字一意味着相应的顶点属于所述部分。举例来说,假设九个部分,这意味着对于属于第一部分的每一顶点,分区电路可存储以下数字值作为所述顶点的额外属性数据:000000001。在此实例中,第一部分与数字值中的最后位相关联,并且因此,该位是数字(例如,二进制)一并且其余位是属于第一部分的顶点的数字零值。如果顶点属于第三部分,那么分区电路可存储以下数字值作为所述顶点的额外属性数据:000000100(例如,距离最后数字位的第三位是数字一,因为距离最后数字位的第三位与第三部分相关联)。

接下来针对渲染遍次,GPU 12可渲染由所述部分中的每一个中的顶点形成的图元。GPU 12可以逐部分的方式执行此渲染。举例来说,GPU 12可渲染第一部分的图像内容,接着是,等等。在写入第一部分的图像内容结束时,GPU 12可将图像内容存储在本地存储器14中,且重复这些操作直至没有更多部分要渲染。

为了渲染图像内容,GPU 12确定部分中的每一个中的像素中的每一个的像素值(例如,颜色和不透明度)。GPU 12渲染部分中的每一个中的像素的一种方式是,通过限定图像内容将被渲染到的部分内的区域。如果GPU 12将部分中的每一个中的图像内容渲染到所述部分的尺寸,那么GPU 12可将图像内容渲染到完全像素分辨率。

然而,根据本公开中描述的技术,代替于将某一部分的图像内容渲染到所述部分的尺寸,GPU 12可将图像内容渲染到小于所述部分的尺寸。GPU 12将某一部分的图像内容渲染到的尺寸可基于所述部分中的图像内容的图像分辨率。

如上文所描述,应用38可限定分辨率带。在顶点着色器的操作的结尾,GPU 12可确定图块中的顶点所属的带。顶点所属的分辨率带可限定该图块中的图像内容的图像分辨率。

在一些实例中,应用38可限定顶点的图像分辨率。在通过顶点着色器执行的操作期间,顶点着色器可保持指派给顶点的顶点的图像分辨率的限定。随后在渲染期间,对于属于由其顶点限定的图元的全部像素,GPU 12可基于所限定的图像分辨率将这些图元渲染到与图块的尺寸成比例的尺寸。

举例来说,如果第一图块内的大部分或多个顶点落入具有四分之一图像分辨率的带内或者被限定为具有四分之一图像分辨率,并且图块的尺寸是NxN,那么GPU 12可将第一图块的图像内容渲染到图块的尺寸的四分之一的尺寸(例如,(N/2)x(N/2))。在此实例中,GPU 12将第一图块的图像内容渲染到的尺寸为(N/2)x(N/2),其与图块的尺寸成比例(例如,与N×N成比例)且基于限定的图像分辨率(例如,四分之一分辨率)。在此实例中,GPU 12可将图块的尺寸乘以图像分辨率的比率(例如,N×N乘以四分之一为(N/2)x(N/2))。

GPU 12可将第一图块的图像内容渲染到(N/2)x(N/2)的一个实例方式是基于限定的视口。举例来说,作为渲染图像内容的一部分,GPU 12接收限定GPU 12将在其中渲染图像内容的视口的命令。对于完全像素/图像分辨率,视口命令(例如,OpenGL的glViewport命令)可将GPU 12将图像内容渲染到的视口限定为图块的尺寸(例如,N×N)。然而,对于小于基于图像分辨率的图块的尺寸的尺寸,视口命令可将视口限定为(N/2)x(N/2)。

在一些实例中,因为应用38可能并不被配置成确定各种图元将被渲染到的图块,所以应用38可能并不被配置成发布将该图块的视口限定到小于该图块的尺寸的视口命令。因此,应用38可发布视口命令而不指示GPU 12将图像内容渲染到较小尺寸。

GPU驱动器42可捕获由应用38发布的视口命令并且修改视口命令以将视口限定到与图块的尺寸和所限定的图像分辨率成比例的较小尺寸。举例来说,如上文所描述,GPU驱动器42的任务可以是输出应用38发布到GPU 12的GPU 12执行的命令。应用38可限定视口命令,并且GPU驱动器42可接收视口命令并且修改视口命令以将视口设定到GPU 12将把图像内容渲染到的实际视口(例如,将视口从NxN修改到(N/2)x(N/2))。

基于图块的所限定的视口,GPU 12可将该图块的图像内容渲染到由该图块的视口限定的区域。举例来说,GPU 12可光栅化图元并且基于限定的视口尺寸限定图元内的像素。对于图元内的每个像素,GPU 12可执行确定相应的像素的像素值的像素着色器。像素着色器可将视口内的像素的所得像素值输出到本地存储器14。

GPU 12可针对图块中的每一个重复这些操作。相应地,本地存储器14可针对每个图块存储图像内容。然而,任何图块的图像内容的尺寸不需要一定是与图块相同尺寸的,并且可以小于图块的尺寸。举例来说,如果第一图块的图像分辨率是四分之一分辨率(例如,因为应用38限定恰好在第一图块中的图像分辨率带为四分之一图像分辨率),那么图块的图像内容的尺寸可以是第一图块的尺寸的四分之一。如果第二图块的图像分辨率是十六分之一分辨率,那么图块的图像内容的尺寸可以是第二图块的尺寸的十六分之一,等等。这可结束渲染遍次。

对于一些图块,可有可能的是,GPU 12将图像内容渲染到那些图块的尺寸。应用38可能已经限定一些顶点以具有完全图像分辨率,因为那些顶点是用于检视者应该聚焦在的图元的。因此,GPU 12可将一些图块渲染到完全像素分辨率(例如,到等于图块的尺寸的尺寸),因为那些图块中的图像内容将具有完全图像分辨率并且可将一些图块渲染到小于完全像素分辨率(例如,到与图块的尺寸相比较小的尺寸),因为那些图块中的图像内容将具有小于完全图像分辨率(例如,二分之一、四分之一、八分之一、十六分之一图像分辨率,等等)。

在上述实例中,应用38被描述为限定每一图块(例如,部分)的分辨率。然而,在一些实例中,另一装置(例如,从其接收图像内容信息的服务器)可限定每一图块的分辨率。可有可能CPU 6执行限定分辨率的另一应用。可存在各种方式限定部分的分辨率,且所述技术不限于限定分辨率的一种特定方式。

对于某一图块(例如,部分),控制器46可将来自本地存储器14的较小尺寸的图像内容(例如,小于与图像内容相关联的部分的尺寸)输出到系统存储器10。以此方式,控制器46可将直接来自本地存储器14的较低分辨率渲染存储到系统存储器10。

然而,稍后,较小尺寸的图像内容可能需要进行尺寸调整到与其相关联的部分的尺寸。举例来说,为了显示图像内容,GPU 12或某一其它处理电路可将图像内容的尺寸调整回到图块的尺寸。否则,图像内容将呈现为向拐角移位,且将在中间出现大黑空隙。

为了调整尺寸,在一些实例中,控制器46或GPU驱动器42或某一其它处理电路可存储可用于尺寸调整的信息。作为一实例,控制器46、GPU驱动器42或应用38可存储每中央凹形区的质量水平的元数据(例如,存储指示所述部分的尺寸、较小尺寸的图像内容的尺寸或图像内容的分辨率中的一或多个的元数据),且可在设定中央凹形渲染参数(例如,由应用38、服务器或CPU 6)时存储此元数据。对于更精细粒度中央凹形(例如,所述部分不设定成图块的尺寸),控制器46、GPU驱动器42或应用38可存储每一部分的质量水平。这导致相对于非稀疏中央凹形中的着色器减少而节省带宽。举例来说,稀疏中央凹形相对于以基于分区的中央凹形渲染实现的像素量减少而节省带宽。

以下是可存储元数据的一种实例方式。所述技术不应被视为限于这些实例技术。

在一些实例中,控制器46、GPU驱动器42或应用38可使用x和y中的每一个中的两个位以允许按比例缩小到每轴线1/8。举例来说,对于某一部分0x0意味着无中央凹形,且完全分辨率。对于某一部分0x1意味着x中1/2尺寸,y中无缩放。0x4意味着x中无缩放,以及y中1/2尺寸。0xF意味着x中1/8尺寸,以及y中1/8尺寸。对于基于分区的中央凹形,使用此实例方案使用每部分(例如,图块或分区)多达四个位,这意味着存储元数据所需的存储器为4位*部分的数目。对于基于四分之一的中央凹形,对于1024眼睛缓冲器,这导致1024*1024/(2*2)*4位/8位/字节=128k,这相对于1024*1024*4字节眼睛缓冲器增加3%。

在一些实例中,可能不需要存储元数据。事实上,在尺寸调整之前,控制器46或应用38可再确定部分中的每一个的分辨率。举例来说,为了确定所述部分中的每一个的分辨率,控制器46、应用38或服务器可基于眼睛位置确定分辨率。在一些实例中,应用38可能已经基于用户应该正查看的位置的信息确定分辨率。在这些实例中的任一个中,应用38、服务器或控制器46可使用先前用于确定分辨率的相同信息来再确定所述分辨率。举例来说,应用38或控制器46可在将较小图像内容存储在系统存储器中之后确定较小尺寸的图像内容的尺寸。在此类实例中,尺寸调整可基于较小尺寸的图像内容的尺寸的确定。在此类实例中,可依据中央凹形参数而非所存储参数计算缩放因数。这可能允许连续质量水平(例如,不设定一半、四分之一等百分比)。

如上文所描述,调整尺寸的一种实例方式是利用纹理映射。固定功能单元50包含硬件纹理映射电路。然而,可经由着色器核心48上执行的着色器执行纹理映射。出于说明的目的,相对于纹理映射电路描述纹理映射,纹理映射电路可为固定功能单元50的部分。

对于纹理映射,系统存储器10或本地存储器14可存储包含多个点的网格,其中所述网格为所述部分的尺寸。纹理映射电路可接收指示与网格中的点相关联的较小尺寸的图像内容(其在此情况下为纹理映射的纹理)中的顶点的指令。然而,因为较小尺寸的图像内容的尺寸相对于网格来说较小,所以较小尺寸的图像内容中存在的像素比网格中少。相应地,可能需要在纹理坐标(例如,较小尺寸的图像内容中的坐标)中缩放以使纹理坐标与网格中的坐标对齐。在一些实例中,纹理映射电路接收的指令可使得纹理提取在从系统存储器10提取图像内容之前在每一方向上依据质量水平缩放纹理坐标。在此实例中,所述缩放可在任何滤波之前进行,这可避免图像内容中的缝隙。

以下是指令的实例,着色器程序可在着色器核心48上执行所述指令以产生纹理映射电路用来提取图像内容的纹理映射电路的坐标。在一些实例中,代替于着色器程序,某一其它硬件电路或纹理映射电路可被配置成执行以下操作以确定用于提取的坐标。

下文中,着色器程序可能需要重新缩放检索图像内容的位置的坐标,因为当图像内容从本地存储器14存储到系统存储器10时,图像内容可存储在系统存储器10的稀疏填充区中。举例来说,且如下文相对于图4A和4B更详细地描述,系统存储器10可被分配存储器空间以存储整个部分的图像内容。然而,因为存储较小尺寸的图像内容,所以并非使用针对某一部分分配的整个存储器空间,从而使所分配存储器空间被稀疏地填充。位了适应稀疏地存储图像内容,以下指令缩放检索图像内容的位置的坐标。

float binOffsetU=binWidth/surfaceWidth;

float binOffsetV=binHeight/surfaceHeight;

float binX=floor(vTexCoords.x/binOffsetU);

float binY=floor(vTexCoords.y/binOffsetV);

float scaleX=scaleFactorX[binX,binY];

float scaleY=scaleFactorY[binX,binY];

float currentOffsetU=(binOffsetU*binX);

float currentOffsetV=(binOffsetV*binY);

float texCoordOffsetU=currentOffsetU-(currentOffsetU/scaleX);

float texCoordOffsetV=currentOffsetV-(currentOffsetV/scaleY);

newTexcoord=

(vTexCoords/vec2(scaleX,scaleY))+vec2(texCoordOffsetU,texCoordOffsetV);

因此,图3描述实例,其中GPU 12基于来自应用38的信息(作为一个实例)确定待显示图像的一部分包含具有小于图像的一或多个其它部分的分辨率的第一分辨率的图像内容。GPU 12可基于第一分辨率以小于第一部分的尺寸的尺寸渲染第一部分的图像内容以产生与所述第一部分相关联的较小尺寸的图像内容,且将较小尺寸的图像内容存储在系统存储器30中。在一些实例中,GPU 12可执行此类操作作为眼睛-缓冲轮次的一部分。

举例来说,GPU 12可接收可由用户检视的图像的图像内容,以及不可由用户检视的周围区域的图像内容。在此实例中,所接收图像内容包含图像的第一部分。举例来说,为了确保存在足够的图像内容用于扭曲,GPU 12可不仅接收可由用户检视的部分的图像内容,而且在用户移动他或她的头部的情况下接收额外周围区域的图像内容,且需要此额外图像内容以供显示。GPU 12以较小尺寸渲染并存储的第一部分是所接收图像内容的一部分。

作为眼睛-缓冲轮次的一部分,GPU 12可以不同尺寸渲染所接收图像内容。举例来说,为了执行中央凹形,GPU 12可确定所接收图像内容的不同部分的不同分辨率,且基于所确定的分辨率以不同尺寸渲染所接收图像内容。如此以不同尺寸渲染所接收图像内容包含渲染第一部分的图像内容以产生较小尺寸的图像内容。GPU 12可将不同尺寸的经渲染图像内容存储在系统存储器10中,包含将较小尺寸的图像内容存储在系统存储器10中。

作为扭曲轮次的一部分,GPU 12可检索经渲染图像内容中的一些或全部(例如,图像内容的子集)。举例来说,在扭曲轮次期间,基于用户的头部的位置的任何改变,并非需要眼睛-缓冲轮次期间渲染的全部图像内容。相应地,GPU 12可能需要仅检索执行扭曲所需的图像内容,其可以是作为眼睛-缓冲轮次的一部分渲染的经渲染图像内容中的一些或全部(例如,作为图像内容的子集)。在此实例中,GPU 12可从系统存储器10检索较小尺寸的图像内容,因为作为眼睛-缓冲轮次的一部分产生的所述较小尺寸的图像内容为经渲染图像内容的一部分。GPU 12可调整所检索图像内容的尺寸(例如,使用纹理映射)以产生图像。举例来说,对所检索图像内容进行尺寸调整的一部分包含将较小尺寸的图像内容的尺寸调整回到图像的第一部分的尺寸。

作为一实例,为了说明实例技术,假定基于眼睛位置和/或头部位置,服务器将3k乘3k字节的图像内容发送到装置2;然而,实际可检视的图像内容的量为1k乘1k字节的图像内容。在此实例中,在检视者改变他或她的头部的位置的情况下,装置2接收到超过可检视的图像内容量。作为眼睛-缓冲轮次的一部分,GPU 12可渲染3k乘3k字节的图像内容。然而,代替于产生3k乘3k字节的图像内容数据,GPU 12可以不同尺寸渲染所接收图像内容的部分以减小字节的总数。以不同的较小尺寸渲染的部分可基于来自应用38的信息,且可相对于与图像内容相关联的部分的尺寸较小。作为一实例,假定GPU 12存储2k乘2k字节的图像内容数据,因为相对于产生于中央凹形的3k乘3k字节的图像内容,存在较少字节待存储。

作为扭曲轮次的一部分,GPU 12可能不需要检索整个2k乘2k字节的图像内容,而是可实际上检索图像内容的子集。GPU 12接着可将图像内容的尺寸调整回到产生图像所需的尺寸。在此实例中,图像的尺寸可以是1k乘1k,因为这是可由用户检视的图像内容量。

在一些实例中,有可能检索作为眼睛-缓冲轮次的一部分渲染的所有图像内容而非仅图像内容的一部分。举例来说,假定在中央凹形的情况下,GPU 12能够将3k乘3k字节的图像内容减小到0.5字节乘1字节的图像内容。在此些情况下,GPU 12可将图像内容的尺寸调整到产生图像所需的尺寸(例如,1k乘1k)。因此,图像内容的尺寸调整可设定成足以填充图像的图像内容因此图像中不存在空穴的任何尺寸。

相应地,GPU 12可接收用户可检视的图像的图像内容的第一部分(例如,上述实例中接收的3k乘3k图像内容中的1k乘1k),以及用户不可检视的周围区域的图像内容的第二部分(例如,3k乘3k图像内容中的剩余2k乘2k图像内容)。作为眼睛-缓冲轮次的一部分,GPU12可以不同尺寸(例如,基于分辨率)渲染图像内容的所接收第一和第二部分。GPU 12可将具有不同尺寸的图像内容的所渲染第一和第二部分存储在系统存储器30中。

作为扭曲轮次的一部分,GPU 12可检索图像内容的所渲染第一和第二部分的子集(例如,一些或全部)。举例来说,GPU 12可检索图像内容的第一部分中的一些,或图像内容的第二部分中的一些,或图像内容的第一和第二部分两者中的一些。GPU 12接着可调整图像内容的所渲染第一和第二部分的子集的尺寸以产生图像。

图4A和4B是示出系统存储器中图像的图像内容的存储的概念图。图4A示出图像52。应用38可能已经确定图像52的不同部分的图像分辨率。举例来说,对于部分54E,应用38可能已经确定图像分辨率为完全分辨率(例如,无中央凹形),且因此部分54E被示出为完全深色。举例来说,GPU 12可将与部分54E相关联的图像内容渲染到与部分54E相同的尺寸。对于图像52的部分54A和54C,应用38可能已经确定1/16分辨率,且因此部分54A和54C的1/16示出为完全深色。举例来说,GPU 12可以部分54A和54C的尺寸的1/16渲染与部分54A和54C相关联的图像内容。

对于部分54B、54D、54F和54H,应用38可能已经确定1/4分辨率,且因此部分54B、54D、54F和54H的1/4示出为完全深色。举例来说,GPU 12可以部分54B、54D、54F和54H的尺寸的1/4渲染与部分54B、54D、54F和54H相关联的图像内容。对于部分54G和54I,应用38可能已经确定二分之一分辨率,且因此部分54G和54I的一半示出为完全深色。举例来说,GPU 12可以54G和54I的尺寸的二分之一渲染与部分54G和54I相关联的图像内容。此处二分之一被示出为沿着y轴缩放图像内容,但沿着x轴缩放到一半也是可能的。

图8中示出通过GPU 12渲染具有部分94A-94I的图像内容而产生的图像内容的一个实例。部分94A-94I可类似于图4的部分54A-54I。在图8中,部分94A的图像内容渲染到部分94A的尺寸的仅1/16,因为应用38可能已经确定部分94A的1/16分辨率。部分94A中的经渲染图像内容是较小尺寸的图像内容的实例,因为经渲染图像内容包含原本将属于部分94A但处于1/16尺寸的图像的相同图像内容。对于部分94E,部分94E的图像内容渲染到部分94E的整个尺寸,因为应用38可能已经确定部分94E的完全分辨率。对于部分94I,部分94I的图像内容渲染到部分94I的尺寸的1/4,因为应用38可能已经确定1/4分辨率。部分94I中的经渲染图像内容是较小尺寸的图像内容的实例,因为经渲染图像内容包含原本将属于部分94I但处于1/4尺寸的图像的相同图像内容。

为了简单起见,图8还示出在部分94A-94I经上取样从而产生中央凹形图像内容的情况下产生的图像。然而,在本公开中所描述的实例技术中,代替于对部分94A-94I中的图像内容进行上取样,GPU 12可将如部分94A-94I中所示出的较小尺寸的图像内容存储在系统存储器10中。

图4B示出其中存储图像52的图像内容的系统存储器10中的位置。举例来说,系统存储器10中的位置56A-56I对应于图像52中的部分54A-54I。在图4B中,对于中央凹形渲染,系统存储器10可被稀疏地填充。举例来说,并非使用针对某一部分分配的所有存储器空间,这意味着存储器空间未完全使用。

举例来说,因为部分54A和54C的图像内容渲染到部分54A和54C的尺寸的十六分之一,所以使用位置56A和56C中的存储器空间的仅十六分之一。因为部分54B、54D、54F和54H的图像内容渲染到部分54B、54D、54F和54H的尺寸的四分之一,所以使用位置56B、56D、56F和56H中的存储器空间的仅四分之一。因为部分54G和54I的图像内容渲染到部分54G和54I的尺寸的一半,所以使用位置56G和56I中的存储器空间的仅一半。因为部分54E的图像内容处于完全分辨率,所以使用位置56E的全部。

尽管示出具有系统存储器10中的稀疏填充的存储的实例,但实例技术不限于此。在一些实例中,图像52的图像内容可以打包的方式存储。举例来说,代替于将部分54的图像内容存储在相应位置56中,GPU 12可将图像内容存储在系统存储器10的连续和相邻存储器位置中使得存储位置中不存在间隙。图5是以更进一步细节示出图1的计算装置的GPU和存储器的框图。为了执行图形操作,GPU 12可实施图形处理管线。图形处理管线包含执行如由在GPU 12上执行的软件或固件限定的功能并且通过作为被配置成执行非常特定功能的固定硬件的固定功能单元执行功能。在GPU 12上执行的软件或固件可被称作着色器,且着色器可在GPU 12的一或多个着色器核心上执行。着色器给用户提供功能灵活性,因为用户可设计着色器按任何可设想的方式执行所要的任务。然而,固定功能单元针对固定功能单元执行任务的方式而经硬接线。因此,固定功能单元可不提供许多功能灵活性。

在此实例中,GPU 12可包含控制器46、输入汇编器电路58、分区遍次电路62和渲染遍次电路72中的一或多个。分区遍次电路62包含顶点着色器64,其以虚线示出以指示顶点着色器64在GPU 12的着色器核心48(图3)上执行。举例来说,分区遍次电路62包含顶点着色器64在上面执行的着色器核心48。分区遍次电路62还包含分区电路66和深度测试电路68。渲染遍次电路72包含光栅化器电路74和像素着色器78,其以虚线示出以指示像素着色器78在着色器核心48(图3)上执行。在所示出的实例中,本地存储器14示出为在GPU 12内部但可在GPU 12外部。GPU 12还包含执行尺寸调整的纹理电路82,其还可用于使图像内容扭曲。

着色器核心48也可执行其它类型的着色器,例如以所述次序遵循顶点着色器级且用于棋盘形布置的外壳着色器和域着色器。棋盘形布置电路还可包含在一或多个固定功能单元50中以用于执行棋盘形布置。着色器核心48还可执行几何形状着色器,所述几何形状着色器在着色器核心48执行域着色器时接收域着色器的输出,或在不执行域着色器时接收顶点着色器的输出。光栅化器电路74可接收顶点着色器64所产生的图形数据或来自几何形状着色器(当可用时)或域着色器(当可用时)的图形数据。

图形管线的其它配置是可能的,且本公开中所描述的技术不应被视为限于图5中所示出的特定实例。举例来说,GPU 12可包含比所示出的那些多的级,且在一些实例中,GPU12可能未必包含所有所示出的级。而且,提供所述级的特定排序是用于说明的目的且不应被视为限制性。

图5还示出用于存储中间图形数据作为通过GPU 12的图形管线所产生的图形数据的存储器10中的各种缓冲器。如所示出,存储器10包含顶点缓冲器60、流式输出缓冲器70、像素缓冲器76和帧缓冲器80。这些缓冲器可以是相同的较大缓冲器的部分或者可以是单独的缓冲器。

应用38可致使CPU 6(例如,经由GPU驱动器42)将顶点的顶点数据(例如,属性数据)输出到顶点缓冲器60。在一些实例中,顶点的属性数据可包含指示通过顶点形成的图元的相对图像分辨率的图像分辨率信息。举例来说,对于用于检视者应该聚焦在的图像部分的图元,应用38(或服务器)可限定相对高水平的图像分辨率,包含完全分辨率。对于用于检视者不应该聚焦在的图像部分的图元,应用38(或服务器)可限定相对低水平的图像分辨率(例如,四分之一分辨率、八分之一分辨率等等)。在一些实例中,应用38可以越来越小的图像分辨率渐进地限定图像部分。举例来说,对于紧邻具有完全分辨率的图像部分的图像部分,应用38可限定二分之一分辨率,对于紧靠着所述紧邻的图像部分的图像部分,应用38可限定四分之一分辨率,等等。

可能存在限定例如分辨率的带等图像分辨率的其它方式。并且,应用38不必是限定图像分辨率的唯一方式。作为应用38的补充或替代,某一其它组件(例如,GPU驱动器42或控制器46)可限定图像分辨率。

输入汇编器电路58可从系统存储器10读取如由CPU 6限定的顶点的顶点,且汇编所述控制点以形成顶点。举例来说,输入汇编器电路58可读取坐标、颜色值和其它此类信息。坐标、颜色值和其它此信息可通常被称作顶点的属性。基于顶点的属性,输入汇编器电路58可确定图元的大体布局。输入汇编器电路58可以是固定功能单元。

顶点着色器64可接收顶点的属性的属性数据。顶点着色器64可执行每顶点操作,例如,变换、蒙皮、变形和每顶点照明。举例来说,应用38可限定在所谓的“本地坐标”中形成不同对象的图元的顶点的坐标。本地坐标为三维坐标(x,y,z),且限定本地空间中的坐标(例如,相对于对象本身,对象的中心处于坐标(0,0,0),作为一实例)。顶点着色器64经由模型矩阵将本地坐标转换到世界空间,其中世界空间包含图像所涵盖的空间中的所有对象。有时被称作变换矩阵的模型矩阵平移、缩放和/或旋转对象到较大世界空间中对象所属的地点。模型矩阵可以由应用38的开发者限定。

顶点着色器64可将顶点的世界坐标乘以旋转场景的视图矩阵使得对象定向到检视者的视角。基于检视者的视点,在一个视点中一些对象可能呈现在其它对象的前方,且与其它视点逆向,并且视图矩阵基于检视者的视点正确地定向对象。作为一实例,如果检视者正从第一视点检视对象,那么第一对象呈现在第二对象的前方,但是从相反的视点,第二对象将呈现在第一对象的前方。视图矩阵可以由应用38的开发者限定。

顶点着色器64可经由投影矩阵将视图空间坐标裁剪到裁剪空间。投影矩阵指定顶点着色器变换到正规化装置坐标(NDC)的范围(例如,-1.0到1.0)的坐标的范围。顶点着色器64裁剪在此范围外部的所有坐标,因为那些图元是不可见的。如果图元的仅一部分在所述范围内,那么顶点着色器64可裁剪在所述范围外部的图元的部分,并且产生适配在所述范围内部的图元。

在数学上,顶点着色器64可执行以下操作以产生裁剪坐标:

V裁剪=M

其中M

分区电路66从顶点着色器64接收输出(例如,裁剪坐标中的顶点),且确定顶点所属的图块(例如,分区)。举例来说,顶点着色器64的输出可以是检视者视角中的x和y坐标对,以及深度值(例如,z坐标)。分区电路66可利用x和y坐标以确定顶点属于哪一图块,以及产生由渲染遍次电路72渲染所需的任何额外图形数据。分区电路66可为一或多个固定功能单元50的固定功能单元。

作为一实例,分区电路66可针对完全像素分辨率图像确定每一顶点所属的图块。GPU驱动器42可限定视口,其中视口的尺寸是显示器18的尺寸(例如,1920像素乘1080像素)。在制造期间GPU驱动器42可以通过显示器18的尺寸预编程,或者操作系统44可将显示器18的尺寸提供到GPU驱动器42。GPU驱动器42也可提供指示图块的数目的信息,或者图块的数目可以是预设的并且存储在本地存储器14或GPU 12的寄存器中。在任一情况下,分区电路66可接收视口的尺寸和图块的数目,并且确定视口中的哪些像素属于哪些图块。在一些实例中,分区电路66可接收指示每一图块的尺寸和图块的数目的信息。在此类实例中,分区电路66不需要一定接收视口。

顶点着色器64可提供从检视者的视角正规化到-1.0到1.0之间的范围的像素的x和y坐标。分区电路66可利用x和y坐标以及图块的尺寸和数目来确定顶点中的每一个所属的图块。作为一实例,假设存在10x10个图块,其各自具有10x10像素的尺寸。在此实例中,如果顶点具有相应地0.6和-0.4的NDC x和y坐标,那么分区电路66可确定此顶点的位置在(80,20),因为在此实例中NDC中的每个0.1梯级是5个像素。因为每个图块是10像素乘10像素,所以具有相应地80和20的x和y坐标的顶点将在从左侧数第八图块和从顶部数第二图块中。分区电路66可重复此类操作以识别顶点中的每一个所属的图块。

如上文所描述,分区电路66可识别顶点所属的图块的一个实例方式是基于数字值,其中数字值中的每个位对应于图块。对于属于特定图块的顶点,分区电路66可将对应于该图块的位设定到顶点的数字值中的数字一,并且将所有其它的位保持在数字零。可能存在识别顶点所属的图块的其它方式。

深度测试电路68可比较由顶点着色器64处理的顶点的z坐标以确定顶点是可见还是不可见的。深度测试电路68可输出对流式输出缓冲器70可见的顶点的经处理属性。举例来说,如果一个顶点在另一顶点的前方,那么深度测试电路68可确定后面的顶点是不可见的并且可能不输出顶点的属性数据中的任一个到流式输出缓冲器70。通过这种方式,分区遍次电路62可产生包含指示每个顶点所属的图块的信息的信息的可见性流。

分区遍次电路62的操作的次序不需要一定得到设定。举例来说,在分区电路66确定顶点所属的图块之前深度测试电路68可首先确定顶点是否被遮挡。并且,如上文所描述,在一些实例中,应用38可已经限定顶点的图像分辨率。相应地,对于属性数据存储在流式输出缓冲器70中的可见的顶点,流式输出缓冲器70也可存储这些顶点的图像分辨率信息(例如,作为如上文所描述的元数据)。

举例来说,在应用38限定带中的图像分辨率的情况中,分区电路66可任选地确定顶点所属的分辨率带,方法是比较顶点的x坐标和y坐标以及分辨率带。分区电路66可将顶点的图像分辨率信息存储为流式输出缓冲器70中的属性数据。然而,分区电路66确定顶点所属的分辨率带并不是必需的,并且另一组件可确定顶点所属的分辨率带。

光栅化器电路74从流式输出缓冲器70接收图元的顶点的属性数据并且将图元转换成像素以供显示。举例来说,图元可被限定为指示图元的互连的向量,且可被限定在独立于将显示图像的显示器18的坐标空间中。光栅化器电路74将这些向量转换成显示器坐标,且执行任何额外功能,例如,移除被遮挡的图元内的点。光栅化器电路74可为一或多个固定功能单元50的固定功能单元且将值输出到像素缓冲器76。

在本公开中所描述的实例中,在将向量转换成显示器坐标的过程中,光栅化器电路74可考虑图像分辨率。作为一实例,应用38可输出限定光栅化器电路74将在其内确定显示器坐标的区域的视口命令。在其中不考虑图像分辨率的实例中,视口命令可将光栅化器电路74将在其内确定显示器坐标的尺寸限定为图块的尺寸(例如,N×N)。举例来说,对于第一图块,视口命令将把尺寸限定为(0,0,N,N)(例如,从0,0开始并且在N,N结束),对于第二图块,视口命令将把尺寸限定为(N,0,N+N,N),等等。

然而,在本公开中所描述的实例中,并非限定视口的尺寸为图块的尺寸,视口的尺寸可以小于图块的尺寸并且基于图像分辨率。举例来说,GPU驱动器42可修改由应用38限定的视口命令。

对于属于第一图块的所有顶点,它是在流式输出缓冲器70中可供使用的信息,如同上文所描述的数字值,GPU驱动器42可确定顶点所属的分辨率带以及是否存在多个或大部分的图像分辨率。作为一实例,假设在第一图块中存在五个顶点。对于每个顶点,GPU驱动器42可确定由应用38限定的图像分辨率。GPU驱动器42可确定是否存在为大部分或最可能图像分辨率的特定图像分辨率。基于大部分或最可能的图像分辨率,GPU驱动器42可确定第一图块的图像分辨率。在一些实例中,并非使用大部分或最可能的图像分辨率,GPU驱动器42可确定图像分辨率的平均值或加权平均值以确定第一图块的图像分辨率。

并且,在属性数据限定顶点的图像分辨率的实例中,GPU驱动器42可读取属性数据以确定图块的图像分辨率。举例来说,类似于上文,GPU驱动器42可确定是否存在大部分或最可能的图像分辨率并且指派图像分辨率用于整个图块,或一些平均值或加权平均值作为第一图块的图像分辨率。

GPU驱动器42可基于所确定的图像分辨率和第一图块的尺寸限定视口(例如,通过修改由应用38限定的视口)。举例来说,如果所确定的分辨率是四分之一分辨率,那么GPU驱动器42可确定视口的尺寸为N/2×N/2。在此实例中,GPU驱动器42确定第一图块中的图像内容的分辨率与完全分辨率(例如,四分之一分辨率)之间的比率,并将所述比率乘以第一图块的尺寸以确定视口的尺寸(例如,四分之一乘以NxN是N/2xN/2)。

在以上实例中,GPU驱动器42确定第一图块的图像内容的分辨率。然而,在第一图块中的顶点中的一些的图像分辨率可以不同于由GPU驱动器42确定的图像分辨率。举例来说,如果第一图块中的图元的顶点被限定到四分之一的图像分辨率(例如,基于图元所属的分辨率带),则基于大部分图像分辨率,GPU驱动器42可确定第一图块的图像分辨率是完全分辨率。在此情况下,虽然限定于四分之一分辨率,但是图元中的像素的最终经渲染的分辨率可以是完全分辨率。如果基于大部分分辨率GPU驱动器42确定第一图块的图像分辨率是八分之一分辨率,那么虽然限定于四分之一分辨率,但是图元的最终经渲染的分辨率可以是八分之一分辨率。

虽然上述实例是相对于GPU驱动器42描述的,但是控制器46可执行类似操作,或GPU驱动器42和控制器46可一起执行这些操作。举例来说,控制器46可基于图块的所确定的图像分辨率限定视口并且修改视口命令。

相应地,GPU驱动器42或控制器46可确定图像的第一部分(例如,图块)将包含具有第一分辨率(例如,第一图像分辨率)的图像内容。第一分辨率小于图像的其它部分的第二分辨率。举例来说,第一分辨率可以是八分之一分辨率,并且其它部分中的图像内容可处于完全分辨率或四分之一分辨率。GPU驱动器42或控制器46可基于第一图块中的图像内容的第一分辨率和第一图块的尺寸限定第一图块的视口。

像素着色器78从像素缓冲器76接收如由光栅化器电路74输出的像素,且执行后处理以将颜色值指派到待显示的像素中的每一个。举例来说,像素着色器78可接收存储在系统存储器10中的恒定值、存储在系统存储器10中的纹理数据和任何其它数据以产生每像素输出,例如颜色值。像素着色器78还可输出指示像素的不透明性的不透明度值。像素着色器78可将所得像素值输出到本地存储器14。以此方式,渲染遍次电路72可以小于第一部分的尺寸的尺寸且基于第一部分中的图像内容的第一分辨率渲染第一部分(例如,图块)的图像内容。举例来说,光栅化器电路74可基于如由GPU驱动器42和/或控制器46限定的视口的尺寸确定显示器坐标,并且像素着色器78可确定视口中的像素中的每一个的每像素值。

尽管未示出,但在一些实例中,像素着色器78可输出到输出合并电路(在图5中未图示)用于任何最终像素处理。举例来说,输出合并电路可利用深度信息以进一步确定是否应移除显示像素中的任一个。输出合并电路还可执行混合操作以产生最终像素值。在此类实例中,输出合并电路可将最终像素值输出到本地存储器14。

渲染遍次电路72可针对每一部分重复这些操作,且产生每一部分的图像内容。在一些实例中,可能仅需要单个渲染遍次,其中渲染遍次是指在所有部分中的图像内容的渲染。举例来说,应用38可能需要发布仅一个渲染命令以使GPU 12在不同图像分辨率下渲染部分中的每一个的图像内容,而并非发布多个渲染命令以使GPU 12在不同图像分辨率下渲染图像内容。

如所示出,控制器46可致使本地存储器14将较小尺寸的图像内容输出到系统存储器10的帧缓冲器80。接着,为了调整图像内容的尺寸,纹理电路82可检索较小尺寸的图像内容和其元数据(如果可用),且使用如上文所描述的纹理映射调整图像内容的尺寸。纹理电路82可将所得图像内容存储在本地存储器14中。

在某些情况下,例如针对扭曲,纹理电路82可从本地存储器14检索图像内容且使图像内容扭曲(例如,移位或旋转图像内容),并将所得扭曲的图像内容存储在帧缓冲器80中。举例来说,控制器46或应用38可再确定用户眼睛或用户头部的位置(应用38可能最初在眼睛-缓冲轮次期间已经确定眼睛或头部位置),且基于眼睛或头部的再确定的位置使经过尺寸调整的图像内容扭曲。然而,在一些实例中,纹理电路82可首先使图像内容扭曲,且接着调整扭曲的图像内容的尺寸。

在一些实例中,可有可能纹理电路82同时调整图像内容的尺寸和使图像内容扭曲。举例来说,在将较小尺寸的图像内容从系统存储器10纹理映射到网格的过程中,纹理电路82可接收致使纹理电路82映射顶点以重新缩放图像内容并且还移位或旋转(例如,扭曲)图像内容的指令。以此方式,扭曲可作为尺寸调整的一部分进行。

举例来说,扭曲(也被称为时间扭曲)绘制到网格,且在U、V纹理坐标上具有扭曲变换。稀疏允许将那些U、V坐标映射到纹理的实际填充的系统存储器(例如,一些U、V坐标将映射到经缩放区域中的相同纹素)。此方法允许恰好读取最终图像所需的数据,且在扭曲网格中填充颜色。在此实例中,其为按比例放大,因为其填充在扭曲网格中。

可存在其它调整尺寸的方式。作为一实例,上取样电路(未示出)可检索存储在帧缓冲器80中的图像内容,且基于所确定的图像分辨率对图像内容进行上取样。举例来说,GPU驱动器42或控制器46可向上取样电路指示图块中的每一个的图像分辨率。上取样电路可利用图像分辨率信息以确定对图像内容进行上取样到什么程度。举例来说,如果第一部分(例如,图块)的图像分辨率为四分之一,则上取样电路可依据因数四对图像内容进行上取样。如果第二部分(例如,图块)的图像分辨率为完全分辨率,则上取样电路可充当通过,而无上取样。

存在上取样电路可对图像内容进行上取样的各种方式,并且技术不限于进行上取样的任何特定方式。作为一个实例,上取样电路可复制相同像素值多次(例如,四次以依据因数四进行上取样)。作为另一实例,上取样电路可跨越多个像素内插像素值以产生额外像素的像素值。

在以上实例中,纹理电路82被描述为执行尺寸调整和扭曲。然而,本公开中所描述的技术不限于此。大体来说,着色器核心48上执行的各种实例着色器可被配置成读取较小尺寸的图像内容,且将图像内容复制到网格上。

扭曲仅为针对何处读取较小尺寸的图像内容的一个实例操作。然而,可存在例如进一步模糊、滤波、掺合等待在较小尺寸的图像内容上执行的其它类型的后处理操作(例如,比如在非VR/AR应用中或可能在VR/AR应用中)。后处理着色器可执行上文对于此类后处理操作所描述的实例操作。以此方式,尽管相对于扭曲操作描述上述实例技术,但实例技术不限于此,且可用于其中存储较小尺寸的图像内容相比于完全尺寸的图像内容是有益的其它图像处理操作。

此外,在以上实例技术中,纹理电路82被描述为以完全像素分辨率存储图像内容。然而,实例技术不限于此。作为一个实例,基于待在不同部分处应用的中央凹形,即使在扭曲之后,分区遍次电路62和渲染遍次电路72也可执行中央凹形以减小需要存储在帧缓冲器80中的数据量,借此减小存储器带宽。作为另一实例,纹理电路82可在不调整图像内容的尺寸的情况下执行扭曲。在这两个实例中,另一处理电路(例如,显示处理器16)可被配置成在显示之前对较小尺寸的图像内容执行尺寸调整操作。

图6是示出产生图像内容的实例方法的流程图。在图6中示出的实例中,GPU 12(例如,控制器46)可接收指示图像的不同部分的图像分辨率的信息(84)。此信息指示不同部分的图像分辨率可能已由服务器、CPU 6上执行的应用38或由控制器46产生。指示图像分辨率的信息可指示所述部分需要图像分辨率的什么分数。如所描述,不同分辨率的此类改变允许促进电力节省的中央凹形渲染。

控制器46可确定(例如,基于来自应用38的信息)待显示图像的第一部分将包含具有第一分辨率的图像内容(86)。第一分辨率可小于图像的一或多个其它部分的第二分辨率。作为一实例,第一部分的图像分辨率可以是1/16,但对于第二部分可以是1/4。

GPU 12可基于第一分辨率中的图像内容的图像分辨率以小于第一部分的尺寸的尺寸渲染第一部分的图像内容,以产生与第一部分相关联的较小尺寸的图像内容(88)。作为一实例,返回参看图4A,对于部分54A,图像分辨率可为1/8。相应地,GPU 12可将部分54A的图像内容渲染到部分54A的尺寸的1/8尺寸以产生与部分54A相关联的较小尺寸的图像内容。

GPU 12可将较小尺寸的图像内容存储在系统存储器10中(90)。在一些实例中,GPU12可将较小尺寸的图像内容存储在系统存储器10中,而不进行图像内容的任何尺寸调整。这允许GPU 12发射比GPU 12首先调整图像内容的尺寸的情况少的图像内容。

处理电路(例如,显示处理器18或GPU 12)可从系统存储器10检索较小尺寸的图像内容(92)。处理电路可调整用于检视的较小尺寸的图像内容的尺寸使得图像内容中不存在空白点(94)。如上文所描述,GPU 12可利用纹理映射技术来进行尺寸调整。并且,在一些实例中,GPU 12或显示处理器18可利用上取样电路来调整图像内容的尺寸。

图7是示出实例中央凹形区域的概念图。如上文所描述,中央凹形信息(例如,用于尺寸调整的比例因数)可存储在系统存储器10中以用于尺寸调整。对于下文关于图7所描述的操作,一种执行等式的方式是通过使用面向应用的应用编程接口(API),其用于输入用于限定中央凹形信息的例如坐标等变量。

如所示出,圆的中心表示其中不存在中央凹形的部分,且所应用的中央凹形的量在移动远离中心的图像的部分中增加。作为一个实例,用以确定中央凹形的等式(例如,用于中央凹形模型的等式)可以是#max_pixel_scale=

max(1,(px-fx)

下文描述可潜在地通过实施本公开中所描述的实例技术来实现的一些结果。并非始终需要实现此类结果。

对于特定测试数据,有少近似超过30%的数据待解析(例如,37%或44%)(从本地存储器14到系统存储器10)。还存在从系统存储器10读取的用于扭曲的数据的近似超过30%的减少。

本公开中所描述的技术可至少部分实施于硬件、软件、固件或其任何组合中。例如,所描述技术的各种方面可在一或多个处理器中实施,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效集成或离散逻辑电路,以及此类组件的任何组合。术语“处理器”或“处理电路”可一般指代前述逻辑电路中的任一个(单独或结合其它逻辑电路),或例如执行处理的离散硬件等任何其它等效电路。

此类硬件、软件和固件可实施于同一装置内或单独装置内以支持本公开中所描述的各种操作和功能。另外,所描述的单元、模块或组件中的任一个可一起或单独作为离散但可互操作逻辑装置而实施。将不同特征描绘为模块或单元意在强调不同功能方面,并且未必暗示此些模块或单元必须由单独硬件或软件组件实现。实际上,与一或多个模块或单元相关联的功能性可由单独硬件、固件和/或软件组件执行,或集成到共同或单独硬件或软件组件内。

本公开中所描述的技术也可存储、体现或编码于计算机可读介质,例如存储指令的计算机可读存储介质中。嵌入或编码于计算机可读介质中的指令可致使一或多个处理器执行本文中所描述的技术(例如,当由所述一或多个处理器执行所述指令时)。计算机可读存储介质可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储(PROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、卡盒、磁性介质、光学介质或其它有形计算机可读存储介质。

已描述各种方面和实例。然而,可在不脱离所附权利要求书的范围的情况下对本公开的结构或技术作出修改。

相关技术
  • 一种用于蠕动泵的带有缓释区的凹形压块
  • 用于中央凹形渲染的存储
  • 用于渲染凹形效果的系统、方法和非暂时性存储介质
技术分类

06120116494154