用于流送虚拟纹理的引擎的制作方法
【专利说明】用于流送虚拟纹理的引擎
[0001] 置量
[0002] 纹理映射是一种用于将细节、表面纹理或色彩添加到计算机生成的图像(CGI)的 方法。纹理映射被应用(映射)到形状或多边形的表面。这一过程类似于向纯白的盒子应 用有图案的纸。
[0003] 虚拟纹理化指的是其中可用于进行纹理存储的物理存储池少于潜在地可用于产 生CGI的总纹理量的纹理化方法。在使用虚拟纹理来进行渲染时,一般仅虚拟纹理的部分 或其较低细节版本变得可供活动纹理池用于渲染。
[0004] 概沭
[0005] 引擎解压缩属于在处理器可读存储器中存储的虚拟纹理的纹理数据,从而使经解 压缩纹理数据可以用来更新用以渲染CGI的大纹理图像的所选择的子图像。更新的子图像 可以在较大纹理图像中的任意位置处。处理器执行应用以给引擎提供控制信息。控制信 息可以包括解码源地址处的经压缩纹理数据以及向用于渲染CGI的纹理缓冲器中的所选 择的子图像目的地址提供经解压缩虚拟纹理数据流的命令。在各实施例中,引擎可以解压 缩有损和无损的经压缩纹理数据。例如,所存储的经压缩纹理数据可以是联合图像专家组 (JPEG)经压缩纹理数据或Lempel-Ziv77 (LZ77)经压缩纹理数据。
[0006] 引擎可以包括具有控制器、读/写缓冲器和LZ和/或JPEG解码器的至少一个集 成电路。在一个实施例中,引擎还可以具有LZ和/或JPEG编码器以压缩纹理数据。引擎 可以被包括在具有在片上系统(SoC)内的至少一个处理器和易失性存储器的计算设备中。 在实施例中,至少一个处理器可以是图形处理器和/或中央处理器。
[0007] 该应用可以是视频游戏软件应用并且计算设备可以是视频游戏控制台。在替换的 实施例中,计算设备可以至少被包括在蜂窝电话、移动设备、嵌入式系统、媒体控制台、膝上 型计算机、台式计算机、服务器和/或数据中心中。
[0008] 方法实施例包括操作引擎以解压缩存储在处理器可读存储器上的编码纹理信息。 接收控制信号以发起对经压缩纹理信息的解压缩。经解压缩的纹理信息的开始地址和子矩 形图像的目的地地址也被接收。经压缩纹理信息被解码以提供输出给子矩形图像的纹理信 息。
[0009] 装置实施例包括至少一个渲染处理器,其执行处理器可读指令以使用具有多个纹 理子图像的纹理图像来渲染CGI。至少一个处理器可读存储器存储表示多个子图像中的至 少第一纹理子图像的经压缩数据。引擎接收至少一个命令以解压缩表示纹理子图像的经压 缩数据。引擎随后在至少一个处理器可读存储器中存储表示纹理子图像的经解压缩数据。 至少一个处理器随后在渲染CGI时通过使用多个子图像中的第一纹理子图像来使用表示 纹理的经解压缩数据。在一个实施例中引擎也可以解压缩整个纹理图像。
[0010] 在另一个实施例中,至少一个处理器可读存储器包括当被执行时使至少一个处理 器执行用于解压缩经压缩纹理数据方法的指令。分配针对活动纹理池的存储器空间。作出 对要渲染的子图像区域和细节等级的确定。至少一个命令被传输至引擎以将经压缩的纹理 数据解压缩成子图像的纹理数据。
[0011] 提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概 念。本
【发明内容】
并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于 帮助确定所要求保护的主题的作用域。
[0012] 附图简沐
[0013]图1是具有用于解压缩经压缩纹理的引擎的计算设备的示例性硬件体系结构的 高级框图。
[0014] 图2是示例性压缩/解压缩引擎的高级框图。
[0015] 图3示出将存储在源存储器中的经压缩纹理映射到不同大小的纹理子图像。
[0016] 图4是解压缩表示纹理的经压缩数据及向可由图像处理器访问来进行渲染的文 本缓冲器提供表示纹理的经解压缩数据的流程图。
[0017] 图5A-B是操作用于流送经解压缩纹理的引擎的流程图。
[0018] 图6是示例性游戏和媒体系统的立体图。
[0019]图7是游戏和媒体系统的各组件的示例性功能框图。
[0020] 详细描沐
[0021] 为了促成对极大图像(诸如CGI)的任意选择部分进行更新,引擎解压缩经压缩纹 理数据并将经解压缩的纹理数据写入存储器中的子图像地址。纹理数据可以是JPEG和/或 LZ压缩纹理数据,其本身可以或者被块编码或者未被编码并且可以包括颜色值或深度值或 存储为二维阵列的其他类型的值。引擎接受命令流形式的控制信息以解压缩经压缩的纹理 数据。引擎随后解压缩选择的经压缩纹理并将经解压缩的纹理数据写到纹理缓冲器。硬件 (诸如图形处理器单元(GPU))连同应用(诸如视频游戏)以及其他渲染软件将经解压缩的 纹理数据渲染在CGI的所选部分处。该引擎还可以压缩纹理数据并将其存储在存储器中的 所选地址处。
[0022] 图1是具有用于流送经解压缩纹理的引擎的计算设备100的示例性硬件体系结构 的高级框图。在一个实施例中,计算设备100包括压缩/解压缩引擎(引擎)105、存储器 102和(诸)处理器核,该(诸)处理器核可包括通过信号路径106通信的CPU103和/或 GPU104。1Q5存储器102包括用于存储应用107 (诸如视频游戏)、经压缩的纹理108和纹 理缓冲器1〇9(或活动的纹理池)中的经解压缩的纹理109a/b的处理器可读存储器。在一 个实施例中,GPU104响应于应用107、经压缩的纹理108、引擎105和纹理缓冲器109使用 预定的虚拟纹理渲染至少一个CGI给显示器。
[0023] 渲染是通过执行软件程序中的处理器可读指令从3D模型(或可以被统称为场景 文件的诸模型)生成CGI的过程。场景文件一般包括严格定义的语言或数据结构的对象; 场景文件一般将包括几何、视点、纹理、照明和阴影信息作为对虚拟场景的描述。场景文件 中包含的数据随后被传给渲染软件程序以被处理,并被输出给用来显示至少一个CGI的数 字图像或光栅图形图像文件。
[0024] 存储器102中的纹理缓冲器109存储活动的纹理池,诸如经解压缩的纹理109a/b。 在一个实施例中,纹理池包括某一预定数目的纹理数据的物理子分配块或页(例如,64K字 节)。例如,具有每纹元(texel)4字节的256x256子纹理将正好消耗四个64KB页。诸如 GPU104的硬件将全部纹理的每一虚拟页标记为或者a)无效或者b)有效且经由页面映射 方法被映射到活动纹理池中任意放置的物理页面。在诸实施例中有效性映射可以被存储在 存储器102中并且可以被GPU104访问。
[0025]GPU-般是能够辅助处理器(诸如CPU)执行复杂渲染计算的集成电路。由GPU执 行的渲染软件程序求解渲染等式,该渲染等式使CGI在虚拟照明下看起来相对真实且可预 测。在一个实施例中,至少一个渲染程序包括存储在存储器102中并由GPU104执行的处 理器可读指令。
[0026] 在一个实施例中,计算设备100被包括在视频游戏和/或媒体控制台中,并且应用 107是视频游戏软件应用,该视频游戏软件应用包括当被至少一个处理器执行时将视频游 戏提供到用户的显示器的处理器可读指令。在替换的实施例中,计算设备100至少可以被 包括在蜂窝电话、移动设备、嵌入式系统、媒体控制台、膝上型计算机、台式计算机、服务器 和/或数据中心中。
[0027] 在一个实施例中,计算设备100包括如图1中所示的片上系统(SoC又称为 SOCUOUSoC是将计算设备或其他电子系统的各组件集成到单个芯片或半导体基板的集成 电路1C。在一个实施例中,SoC101包括引擎105、存储器102和CPU103、GPU104和信号 路径106。在替换的实施例中,CPU103和GPU104可以被单个处理器核替换。替换地,其 他处理器核可以被包括在SoC101中。在替换的实施例中,不使用SoC。
[0028] 如本领域普通技术人员将理解的,其他电子组件也可以被包括在SoC101中。SoC 101可以包括数字的、模拟的、混合信号的和/或射频电路在单个半导体基板上。SoC101 可以包括振荡器、锁相环、计数器-计时器、实时计时器、加电复位发电机、外部接口(例如, 通用串行总线(USB)、IEEE1394接口(火线)、以太网、通用异步接收机/发射机(USART) 和串行外围总线(SPI))、模拟接口、电压调节器和/或电源管理电路。
[0029] 在替换的实施例中,SoC101可以被系统级封装(SiP)或层叠封装(PoP)替换。在 SiP中,多个芯片或半导体基板被安置在单个封装中。在SiP实施例中,(诸)处理器核将 可以在一个半导体基板上,而存储器102将可以在第二半导体基板上,二者都被安置在单 个封装中。在一个实施例中,第一半导体基板通过线结合耦合至第二半导体基板。
[0030] 在PoP实施例中,(诸)处理器核将可以在布置在第一封装中的一个半导体基板 上,而存储器102将可以在布置在第二不同封装中的第二半导体基板上。第一封装和第二 封装随后将通过标准接口被堆叠以在各封装(具体而言在各半导体基板)间路由信号。经 堆叠的封装随后可被耦合到印刷电路板。在一个实施例中,存储器102被定位在(诸)处 理器核的顶上。
[0031] 在各实施例中,(诸)处理器核包括执行(或读出)处理器(或机器)可读指令 (诸如存储在存储器102中的应用107)的至少一个处理器。(诸)处理器