首页> 中国专利> 使用通过自适应着色的纹理查找的带宽缩减

使用通过自适应着色的纹理查找的带宽缩减

摘要

一种用于向图形处理单元(GPU)提供实体纹理贴图的示例方法包括将可渲染内容的瓦块划分成多个分区。该方法还包括确定该多个分区中的一组分区是纯色的。该方法进一步包括生成指示该多个分区中的该组分区是纯色的实体纹理贴图。该方法还包括向GPU提供对实体纹理贴图的访问。

著录项

  • 公开/公告号CN106575442A

    专利类型发明专利

  • 公开/公告日2017-04-19

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN201580043364.0

  • 发明设计人 Y·王;S·W·惠;S·朝;

    申请日2015-07-13

  • 分类号G06T11/00;G06T11/40;G06T15/00;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人唐杰敏

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 01:53:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-04

    授权

    授权

  • 2017-05-17

    实质审查的生效 IPC(主分类):G06T11/00 申请日:20150713

    实质审查的生效

  • 2017-04-19

    公开

    公开

说明书

发明人:Y·王、S·W·惠、和S·朝

相关申请的交叉引用

本申请要求于2014年8月15日提交的来自美国临时专利申请号62/037,785的优先权的权益,本申请还要求于2015年2月23日提交的美国专利申请序列号14/628,935的申请日的优先权,上述两篇申请的全部内容通过援引而纳入于此。

公开领域

本公开一般涉及图形处理系统,并且尤其涉及在图形处理系统中渲染纹理。

背景

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

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

简要概述

本公开涉及提供指示瓦块的纯色(solid color)分区的纹理贴图。提供了用于向GPU提供该纹理贴图的方法、系统、和技术。

根据一实施例,一种用于向图形处理单元(GPU)提供实体纹理贴图(solid texture map)的方法包括将可渲染内容的瓦块划分成多个分区。该方法还包括确定该多个分区中的一组分区是纯色的。该方法进一步包括生成指示该多个分区中的该组分区是纯色的实体纹理贴图。该方法还包括向GPU提供对实体纹理贴图的访问。

根据另一实施例,一种用于向GPU提供实体纹理贴图的系统包括在计算设备上执行的瓦块生成器。该瓦块生成器将可渲染内容的瓦块划分成多个分区并且确定该多个分区中的一组分区是纯色的。该系统还包括实体纹理贴图生成器,该实体纹理贴图生成器生成指示该多个分区中的该组分区是纯色的,并且向GPU提供对该实体纹理贴图的访问。

根据另一实施例,一种计算机可读介质上存储有计算机可执行指令,所述指令用于执行以下操作,包括:将可渲染内容的瓦块划分成多个分区;确定该多个分区中的一组分区是纯色的;生成指示该多个分区中的该组分区是纯色的实体纹理贴图;以及向GPU提供对该实体纹理贴图的访问。

根据另一实施例,一种用于向图形处理单元(GPU)提供实体纹理贴图的装备包括:用于将可渲染内容的瓦块划分成多个分区的装置;用于确定该多个分区中的一组分区是纯色的装置;用于生成指示该多个分区中的该组分区是纯色的实体纹理贴图的装置;以及用于向GPU提供对该实体纹理贴图的访问的装置。

附图简要说明

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

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

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

图3是解说根据一些实施例的被划分成多个分区的可渲染内容的框图。

图4是根据一些实施例的用于向GPU提供纹理贴图的过程流程图。

图5是根据一些实施例的被划分成多个分区的示例瓦块。

图6是根据一些实施例的用于向GPU提供纹理贴图的方法的简化流程图。

详细描述

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

渲染可涉及将对应于图形场景中的3D对象的3D图形原语转换成2D经栅格化的图像数据的过程。计算设备可使用包括3D图形渲染流水线的图形处理单元(GPU)来加速图形原语的渲染。具体而言,3D图形渲染流水线可包括配置成渲染3D图形原语的处理级。处理级可包括可编程的处理级以及固定功能处理级。可编程的处理级可被配置成执行因用户而异的程序,该程序可被编译并且加载到GPU上。固定功能处理级可被硬连线以执行可以是可配置的一个或多个功能。

在计算机图形中,纹理映射是将图像施加到原语的表面上的过程。纹理映射增强计算机生成的图像的真实性并且已经变成图形流水线的重要和关键部分。例如,以素色来渲染房屋的墙壁可提供暗淡且不是很现实的房屋图像的外观。为了增强场景和图形,砖图案纹理可被施加于房屋的墙壁。

GPU可包括顶点着色器(其在向图形卡发送的每一个顶点上操作)和片段着色器或像素着色器(其在要被栅格化的每一个像素上操作)。GPU还可包括其他类型的着色器(例如,几何形状着色器)。片段着色器计算像素的将被存储在帧缓冲器中的最终输出色彩。片段着色器可使用输入变量来给片段着色或使片段纹理化。

纹理贴图可以指色彩数据的矩形阵列。纹理存储器中的像素可被称为纹理元素(texel)。纹理存储器可以指存储纹理数据的存储器。纹理贴图可通过使用纹理坐标来映射至任何表面。在一示例中,纹理贴图是具有宽度和高度的二维图像(例如,照片)。在另一示例中,纹理贴图是具有任意宽度和一个纹理元素的高度的一维纹理。在另一示例中,纹理贴图是具有宽度、高度、和深度的三维纹理。

高质量、高速度的纹理映射通常被限定于成本高昂的硬件系统。例如,纹理映射系统的设计者所面对的障碍是对纹理存储器的高存储器带宽的要求。由于每秒对纹理存储器进行大量访问,因而高带宽通常是必要的。GPU可包括着色器(例如,片段或像素着色器),其通过执行针对纹理坐标的纹理查找来计算片段或像素的色彩。纹理查找在存储器带宽、性能、以及功率的意义上通常是昂贵的硬件操作。

对于一个单色的过量纹理查找的成本是巨大的,因为它们消耗大量存储器带宽以及功率并且使性能降级。可能期望降低该成本。其他人已经使用纹理压缩来解决类似问题。纹理压缩减小了被传输至GPU存储器的纹理的大小,但是未解决昂贵的针对纯色分区的纹理查找问题。另外,纹理压缩的编码和解码较慢且要求额外的硬件改变。

在渲染内容中,大部分的纹理可能在纯色中。本公开提供了使用纯色区域的查找图来减少用于纹理着色的存储器带宽的技术。另外,本公开可优化图形指令的编码和解码而无需额外的硬件支持。

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

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

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

在CPU 106上执行的软件应用可包括一个或多个图形渲染指令,其指令GPU 112使得将图形数据渲染至显示器118。在一些示例中,软件指令可遵循图形应用编程接口(API),诸如举例而言,开放图形库(OpenGL.RTM)API、开放图形库嵌入式系统(OpenGL.ES)、API、Direct3D API、X3D API、RenderMan API、WebGL API、或其他任何公共或专有标准图形API。为了处理图形渲染指令,CPU 106可向GPU 112发出一个或多个图形渲染命令以使GPU 114执行对图形数据的渲染中的一些或全部。在一些示例中,要被渲染的图形数据可包括图形原语(例如,点、线条、三角形、四边形、三角形条等)的列表。

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

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

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

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

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

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

CPU 106和/或GPU 112可将经渲染的图像数据存储在系统存储器110内所分配的帧缓冲器中。在CPU 106上执行的软件应用可将图像数据(例如,纹理元素色彩、宽度、高度、和色彩深度)存储在存储器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)总线。还可以使用其他类型的总线结构和协议。

在一些示例中,本公开中描述的技术可以在图1中所解说的计算设备102中的任何组件(包括例如CPU 106、GPU 112、以及系统存储器110)中实现。

图2是根据一些实施例的更详细地解说图1中的计算设备102的CPU 106、GPU 112、以及存储器110的框图。如图2中所示,CPU 106通信地耦合至GPU 112和存储器110,以及GPU 112通信地耦合至CPU 106和存储器110。

CPU 106被配置成执行软件应用,诸如浏览器224、图形API 226、GPU驱动程序228、以及操作系统230。浏览器228可包括使得图形图像被显示的一个或多个指令和/或使得在GPU 112上执行非图形任务(例如,通用计算任务)的一个或多个指令。尽管浏览器224可被描述为发出指令,但是应当理解,计算设备102中可执行的且处理和/或显示图形数据的任何软件应用可被用于发出这些指令。

浏览器224可向图形API 226发出指令,图形API 226可将从浏览器224接收到的指令转换成可由GPU驱动程序228使用的格式。存储器110可存储一个或多个命令240。命令240可被存储在一个或多个命令缓冲器(例如,环形缓冲器)中且包括一个或多个状态命令和/或一个或多个绘制调用命令。状态命令可指令GPU 112改变GPU 112中的一个或多个状态变量,诸如举例而言,绘制色彩。绘制调用命令可指令GPU 112渲染由存储在存储器110中的一群一个或多个顶点定义(例如,在顶点缓冲器中定义)的几何形状,或者将纹理的内容绘制到显示器118上。

GPU驱动程序228经由图形API 226从浏览器224接收指令,并且控制GPU 112的操作以服务这些指令。例如,GPU驱动程序228可编制一个或多个命令240,将命令240放置到存储器110中,并且指令GPU 112执行命令240。在一些示例中,GPU驱动程序228可经由操作系统230(例如,经由一个或多个系统调用)来将命令240放置到存储器110中以及与GPU 112进行通信。

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

处理单元234可包括一个或多个处理单元,其各自可以是可编程的处理单元或固定功能处理单元。可编程的处理单元可包括例如配置成执行从CPU 106下载到GPU 112上的一个或多个着色器程序的可编程着色器单元。在一些示例中,着色器程序可以是以高级着色语言(诸如举例而言,OpenGL着色语言(GLSL)、高级着色语言(HLSL)、用于图形的C(Cg)着色语言等)来编写的程序的经编译版本。

在一些示例中,可编程的着色器单元可包括配置成以并行方式操作的多个处理单元(例如,SIMD流水线)。可编程着色器单元可具有存储着色器程序指令的程序存储器和执行状态寄存器(例如,指示程序存储器中正在被执行的当前指令或要被获取的下一指令的程序计数器寄存器)。处理单元234中的可编程着色器单元可包括例如顶点着色器单元、像素着色器单元、几何形状着色器单元、外壳着色器单元、域着色器单元、计算着色器单元、和/或统一着色器单元。

一个或多个处理单元234可形成3D图形渲染流水线,其可包括配置成执行着色器程序的一个或多个着色器单元。像素着色器是在GPU 112上执行的程序。图2中,处理单元234可包括片段着色器或像素着色器237,其计算并且设置由显示在显示器118上的纹理对象(例如,纹理图像)覆盖的像素的色彩。这一过程可被称为栅格化,其是从屏幕空间中的2D顶点(每一个顶点具有z值(深度值)、以及与每一个顶点相关联的各种着色信息)到屏幕上的像素的转换。像素着色器237包括像素着色器237A和像素着色器237B,并且像素着色器237是针对每一个像素片段来执行的且将经内插的顶点属性用作输入以计算色彩。尽管像素着色器237A和像素着色器237B被解说为在像素着色器237中,但应当理解,它们可以是流水线中的分开组件。像素着色器可以简单到像是返回一恒定色彩一样。绘制在显示器118上的每一个像素片段是由像素着色器237来操作的。术语“片段”和“像素”可在本公开中互换地使用。

显示器118可显示瓦块纹理贴图242的内容。在一示例中,纹理图像可具有用于从像素的瓦块纹理贴图242中查找正确色彩的纹理坐标(u,v)。GPU 112中的像素着色器237可将纹理渲染到显示在显示器118上的对象上,并且使用纹理坐标来在绑定的纹理贴图中查找像素的色彩。在一示例中,像素着色器237通过对当前纹理坐标执行纹理查找来执行每个像素的着色计算。相应地,为了查找每一个像素的色彩,像素着色器237可访问存储在存储器110中的瓦块纹理贴图242,这可能要求到纹理存储器的高存储器带宽。

本公开提供了通过使用可渲染内容的纯色区域的查找图来减少用于纹理着色的存储器带宽的技术。图3是解说根据一些实施例的被划分成多个分区的可渲染内容的框图。浏览器224可将网页300的可渲染内容划分成一个或多个层。尽管网页被描述为可渲染内容,但这不非旨在限定并且可渲染/经渲染的内容可以是页面(其与诸如因特网之类的网络相关联或者不相关联)上的任何文本、图像、或图形。

在图3中,网页300被划分成层302和304。网页300可具有指示浏览器224是否将该网页划分成诸层以及划分成多少层的元素或性质。在一示例中,网页300包含对应于层302的透明部分和对应于层304的动画部分(例如,从显示器118的一侧移动到另一侧的对象)。在此示例中,网页300的动画部分在与网页300的透明部分不同的层处被渲染。网页300可包括可能交叠或可能不交叠的多个层。

对于这些层中的一者或多者而言,浏览器224可将相应的层划分成多个瓦块。例如,浏览器224可将层302划分成包括瓦块306A的多个瓦块306。层302被划分成五列和四行总共20个瓦块的瓦块306。浏览器224可将每一个瓦块划分成多个分区308。该多个分区可以是水平或垂直分区(例如,对于具有垂直布局方向的特定语言而言),并且每个分区相对于彼此可以是不相等或相等大小的。每个分区的高度或宽度可被微调。

浏览器224可将瓦块306A划分成多个分区308,其包括16个分区,即分区308A-308P。多个分区308中的一些分区是纯色的而一些不是纯色的。浏览器224生成指示瓦块中的哪个(些)分区是纯色的实体纹理贴图。在一示例中,浏览器224扫描每个像素以生成实体纹理贴图,以及基于阈值来确定自适应地使用哪个着色器(例如,像素着色器237A或像素着色器237B)。像素着色器237A可以是使用实体纹理贴图来在显示器118上渲染像素的“经修改的”像素着色器,而像素着色器237B可以是使用瓦块纹理贴图来在显示器118上渲染像素的“未经修改的”像素着色器。为了效率,可能期望浏览器224同步扫描每个像素以生成实体纹理贴图以及确定使用哪个着色器,以便仅扫描每一个像素一次。如果在第一时间区间期间浏览器224扫描每一个像素以生成实体纹理贴图,而在第二时间区间期间基于阈值来确定自适应地使用哪个着色器,则在该第一时间区间的至少一部分与该第二时间区间的至少一部分交叠的情况下,浏览器224可被认为同时地执行这两个动作。另外,在浏览器224确信瓦块不能够达到该阈值时,浏览器224可以丢弃实体纹理贴图,因为未经修改的着色器可能有必要使用这一信息。浏览器224可向GPU 112提供对实体纹理贴图的访问。浏览器224可将实体纹理贴图存储到可由GPU 112访问的纹理缓冲器中。

在一些实施例中,如果条件得到满足,则浏览器224向GPU 112提供对实体纹理贴图的访问,并且GPU 112可使用该实体纹理贴图来执行经优化的纹理查找操作。相反,如果该条件未得到满足,则浏览器224不向GPU 112提供对实体纹理贴图的访问,并且GPU 112执行普通的纹理查找操作(例如,使用瓦块纹理贴图242来查找像素的纹理)。在一示例中,如果相应的瓦块具有阈值百分比的为纯色的分区,则条件得到满足。在另一示例中,如果相应的瓦块具有阈值数目的为纯色的分区,则条件得到满足。

图4是根据一些实施例的用于向GPU 112提供纹理贴图的过程流程图400。浏览器224可通过使用实体纹理贴图402而不是瓦块纹理贴图242来优化纹理查找的成本。可能期望使用实体纹理贴图402来查找纹理,因为它通常比瓦块纹理贴图242小得多。相应地,计算、存储、以及传输实体纹理贴图402的额外成本可被限制,从而导致与使用瓦块纹理贴图242相比,较少的存储器被访问以及四处移动。

浏览器224包括瓦块生成器410和实体纹理贴图生成器412。在一些实施例中,瓦块生成器410基于要被渲染的内容来生成实体纹理贴图402并且将实体纹理贴图402存储到纹理存储器中以供由GPU 112检索。在一示例中,浏览器224将实体纹理贴图402存储到可由CPU 106访问的存储器中,并且随后将实体纹理贴图402发送到可由GPU 112访问的存储器中。在另一示例中,浏览器224将实体纹理贴图402存储到可由CPU 106访问的存储器中,并且随后使得实体纹理贴图402对GPU 112也是可访问的。

纹理存储器可以是从存储器110分配的。瓦块生成器410确定多个分区308中的一组一个或多个分区是否为纯色的。对于每个瓦块而言,实体纹理贴图生成器412可生成指示该瓦块中的一个或多个分区是否为纯色的实体纹理贴图。在图3中,分区308E-308H和308M是纯色(例如,白色),而多个分区308中的剩余分区(例如,308A-308D、308I-308L、以及308N-308P)不是纯色。

实体纹理贴图402可以是针对瓦块中的每一个分区包括一个条目的小纹理贴图。例如,对于瓦块306A而言,实体纹理贴图生成器412可生成包括16个值的实体纹理贴图,其中每个值指示多个分区308中的特定分区是否为纯色。第一值可对应于分区308A而最后的值可对应于分区308P,其中其他分区按次序落入其间。在一示例中,实体纹理贴图402包括“FFFFTTTTFFFFTFFF”,其中“F”指示分区不是纯色,而“T”指示分区是纯色。应当理解,不同的值可指示分区是纯色。在其他示例中,“F”值或“0”值可指示分区是纯色。浏览器224向GPU 112提供对实体纹理贴图402的访问。浏览器224可将实体纹理贴图402存储在存储器110中以供由GPU 112检索。

另外,对于每一个是纯色的分区而言,实体纹理贴图402还可指示相应分区的色彩。在此类示例中,如果分区不是纯色,则“色彩”值可以被留白。在瓦块中的分区是不同的纯色时,指示分区是否为纯色及其纯色(在适用的情况下)的实体纹理贴图可能是有利的。

在其他示例中,瓦块生成器410确定瓦块306A是否具有主色彩。主色彩是瓦块中的多数纯色。瓦块生成器410可扫描每个分区并且针对作为纯色的分区确定瓦块的主色彩。在一些实施例中,实体纹理贴图生成器412生成实体纹理贴图402,其中实体纹理贴图402包括主色彩。主色彩可作为统一标准来传递至像素着色器237。

实体纹理贴图生成器412可在跟踪纯色分区的实体纹理贴图402中提供标记。例如,如果分区是与主色彩相同的纯色,则实体纹理贴图生成器412可在实体纹理贴图中指示该分区是纯色的。例如,在图3中,瓦块306A的主色彩是白色,并且实体纹理贴图402可包括“FFFFTTTTFFFFTFFF”和“白色”。另外,如果分区不是主色彩,则实体纹理贴图生成器412可将该分区指示为不是纯色。

如果浏览器224向像素着色器237发送包括主色彩的实体纹理贴图,则像素着色器237A可通过首先检查实体纹理贴图402(其跟踪纯色分区),并且随后确定该像素是否应当使用该主色彩来计算每个像素的色彩。如果像素不使用主色彩,则像素着色器237B可执行普通纹理查找操作(例如,使用瓦块纹理贴图242来查找像素的纹理)。

在一些实施例中,如果分区不是纯色,则实体纹理贴图生成器412在实体纹理贴图401中指示这一情况。另外,如果分区是与主色彩不同的纯色,则实体纹理贴图生成器412可将该分区指示为不是纯色。

图5是根据一些实施例的被划分成多个分区(其中至少两个纯色分区是不同色彩)的示例瓦块。在图5中,分区308E-308H和308M是纯白色,而分区308N是纯黑色。实体纹理贴图402可包括“FFFFTTTTFFFFTFFF”和“白色”,其中实体纹理贴图402指示分区308N不是纯色,即使它是纯黑色。相应地,在像素着色器237A读取这一实体纹理贴图时,像素着色器237A将色彩“白色”用于分区308E-308H和308M,而像素着色器237B使用瓦块纹理贴图242来执行对其他分区的纹理的查找。在此示例中,像素着色器237B使用瓦块纹理贴图242来取回对应于分区308N的像素的黑纯色。另外,像素着色器237A使用实体纹理贴图402来查找分区308A-308D、308I-308L、以及308N-308P的纹理。

包括主色彩的实体纹理贴图可提供带宽和功耗的缩减。具体而言,与针对是主色彩的每个分区在实体纹理贴图中包括主色彩不同,该主色彩仅被包括一次。在此示例中,对应于“T”值的所有分区是主色彩。另外,对于具有大量纯色分区的瓦块,可以改进帧速率性能。然而,在具有少量纯分区或没有纯分区的瓦块上,在像素着色器237中进行额外工作的开销可能减慢性能且消耗更多功率。在这些瓦块上,普通纹理查找可能倾向于工作得更好。因此,基于每个纹理的纯色分区的阈值百分比或阈值数目来对像素着色器237A或像素着色器237B进行自适应选择可能是有帮助的。在一示例中,如果达到阈值,则像素着色器237A使用实体纹理贴图402并且像素着色器237B使用瓦块纹理贴图242。在此示例中,像素着色器237可包括“经修改的”像素着色器(例如,像素着色器237A),其使用实体纹理贴图402来在显示器118上渲染像素。另外,如果未达到阈值,则像素着色器237可使用“未经修改的”像素着色器(例如,像素着色器237B),其使用瓦块纹理贴图242来在显示器118上渲染像素。

像素着色器237可使用瓦块纹理贴图242或实体纹理贴图402来查找纹理。在一些实施例中,像素着色器237确定要在显示器118上渲染的特定像素是否映射至具有纯色的分区。响应于确定特定像素映射至为纯色的分区,像素着色器237A可被自适应地选择并且可使用实体纹理贴图402来查找纹理。响应于确定特定像素映射至不是纯色的分区,像素着色器237B可被自适应地选择并且可使用存储在存储器110中的瓦块纹理贴图242来查找纹理。

在一些实施例中,可提供像素着色器237,该像素着色器237能够访问对应于一瓦块的实体纹理贴图402并且确定该瓦块是否具有阈值百分比的为纯色的分区。响应于确定相应的瓦块具有阈值百分比的为纯色的分区,像素着色器237A可使用实体纹理贴图402来执行纹理查找。在一示例中,像素着色器237A基于瓦块的非纯分区的xy坐标来逐像素地检索色彩。对于纯分区,像素着色器237A可仅使用实体纹理贴图402来执行查找,因为其具有色彩信息。另外,像素着色器237B可基于瓦块的其余部分的xy坐标来逐像素地检索色彩。

相反,响应于确定相应的瓦块不具有阈值百分比的为纯色的分区,像素着色器237B可使用瓦块纹理贴图242来执行纹理查找。在一示例中,像素着色器237B仅使用存储在纹理存储器中的瓦块纹理贴图242来执行所有分区的纹理查找。

像素着色器237提供存储2D图像的输出438。在一示例中,输出438是从存储器110分配的帧缓冲器。片段可被丢弃或传递至帧缓冲器,而最后的图像可被传递至绘制缓冲器并且显示给用户或替换地被存储至屏幕外的缓冲器(诸如存储为纹理数据)以供稍后使用。

如以上所讨论并在此进一步强调的,图1-5仅仅是示例,其不应当不恰当地限制权利要求的范围。例如,本公开中描述的技术可以在图2中示出的任何组件中实现,这些组件包括例如图形API 226、GPU驱动程序228、命令引擎232以及处理单元234。例如,用于渲染纹理或纹理映射的技术可以在命令引擎232和/或由处理单元234实现的图形流水线中实现。

图6是根据一些实施例的用于向GPU提供纹理贴图的方法600的简化流程图。方法600并不旨在进行限制并且可以用于其他应用中。

方法600包括框610-640。在框610中,可渲染内容的瓦块被划分成多个分区。在一示例中,瓦块生成器410将可渲染内容的瓦块306A划分成多个分区308。在框620中,确定该多个分区中的一组分区是纯色的。在一示例中,瓦块生成器410确定多个分区308中的分区308E-308H和308M是纯色的。在框630中,生成指示该多个分区中的该组分区是纯色的实体纹理贴图。在一示例中,实体纹理贴图生成器412生成指示该多个分区中的该组分区是纯色的实体纹理贴图402。在框640中,向GPU提供对实体纹理贴图的访问。在一示例中,实体纹理贴图生成器412向GPU 112提供对实体纹理贴图402的访问。

在一些实施例中,可针对可渲染内容的任何数目的层或瓦块的任何出现次数执行框610-640。也要理解,附加的过程可以在以上所讨论的框610-640之前、期间或之后执行。也要理解,本文中所描述的方法600的一个或多个框可以被按期望省略、组合或以不同的次序执行。

本领域技术人员将进一步领会,结合本文所公开的实施例来描述的各种解说性逻辑框、配置、模块、电路、和步骤可实现为电子硬件、计算机软件或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、块、配置、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本公开的范围。

结合本文所公开的实施例描述的方法的各个框或动作可直接用硬件、由处理器执行的软件模块或两者的组合来实现。软件模块(例如,浏览器224、瓦块生成器410、或实体纹理贴图生成器412)可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、可编程只读存储器(PROM)、可擦式可编程只读存储器(EPROM)、电可擦式可编程只读存储器(EEPROM)、寄存器、硬盘、可移动盘、压缩盘只读存储器(CD-ROM)或本领域中所知的任何其他形式的存储介质中。软件模块可以在一个或多个处理器上执行。示例性存储介质被耦合至处理器,以使得处理器能从/向该存储介质读取/写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算设备或用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在计算设备或用户终端中。

提供前面对所公开的实施例的描述是为了使任何本领域技术人员皆能制作或使用所公开的实施例。对这些实施例的各种修改对于本领域技术人员而言将是显而易见的,并且本文所定义的原理可被应用于其他实施例而不会脱离本公开的范围。因此,本公开并非旨在被限定于本文示出的实施例,而是应被授予与如由所附权利要求定义的原理和新颖性特征一致的最广的可能范围。因此,本公开仅由权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号