使用着色器处理器的实时片上纹理解压缩的制作方法

文档序号:6495596阅读:239来源:国知局
使用着色器处理器的实时片上纹理解压缩的制作方法
【专利摘要】用于在图形处理单元(GPU)内对纹理解压缩或生成纹理的处理单元、方法和介质。纹理以诸如JPEG的可变速率压缩方案进行压缩。压缩纹理从系统存储器被检索并且在不首先被解压缩的情况下被转移至GPU上的本地高速缓冲存储器。表由高速缓冲存储器利用以对压缩纹理内的各个块定位。解压缩着色器处理器接收压缩块并然后执行块的即时解压缩。解压缩块然后照常由GPU的纹理消耗着色器处理器进行处理。
【专利说明】使用着色器处理器的实时片上纹理解压缩
[0001]发明背景发明领域
[0002]本公开大体涉及图形处理,并且具体地涉及纹理解压缩的处理单元、方法和介质。
[0003]相关技术描述
[0004]计算机图形处理系统通常利用执行很大比例的处理的图形处理单元(GPU)来处理大量的数据。GPU是被配置成执行尤其是图形处理任务的复杂集成电路。例如,GPU可能执行终端用户应用诸如视频游戏应用所需要的图形处理任务。GPU可以是分立装置或可以被包括在与诸如中央处理器(CPU)的另一个处理器相同的装置中。
[0005]GPU产生像素,所述像素根据其分量在被称为渲染的过程中的较高层次的描述而构成图像。GPU通常通过使用计算元件来处理像素、纹理和几何数据而利用连续渲染的概念。计算元件可能执行光栅化器、设置引擎、颜色混合器、隐藏面移除以及纹理映射的功能。这些计算元件常常被称为着色器、着色器处理器、着色器阵列、着色器管、着色器管阵列、着色器管线或着色器引擎,“着色器”是在计算机图形中指由图形资源主要用于执行渲染效果的一组软件指令或程序的术语。“着色器”也可以指用来执行软件指令的实际硬件部件或处理器。着色器处理器或程序可以读取或渲染数据以及执行数据的任意类型的处理。装备有统一着色器的GPU也同时支持来自像素、顶点、原语的许多类型的着色器处理以及通用计算处理。
[0006]在产生复杂图形场景中涉及的大部分处理涉及纹理数据。纹理可以是各种类型的数据中的任一种,诸如颜色、透明度、查询表或其它数据。在一些实施方案中,纹理可以是将被绘制到几何形状上的数字化图像以增加视觉细节。在模型被渲染以创建目标图像时,通过使用纹理可以使大量的细节映射到图形模型的表面。纹理映射的目的是在对象的表面上提供逼真外观。纹理可以指定许多性质,所述性质包括颜色、像镜面反射的表面性质或呈法线贴图或凹凸贴图形式的细微的表面细节。纹理也可为图像数据、颜色或透明度数据、粗糙度/平滑度数据、反射率数据等。‘纹素’是纹理元素,同样地,‘像素’是图片元素。术语‘纹素’和‘像素’在该说明书中可交换地使用。
[0007]在3D计算机图形中,对象上的表面细节通常通过使用纹理来添加。例如,砖墙的2D位图图像可以使用纹理映射施加到表示建筑物的3D模型的一组多边形以给予该对象3D渲染使外观由砖制成。提供逼真计算机图形通常需要许多高质量细密的纹理。使用纹理会消耗大量的存储空间和带宽,并且因此,可以对纹理进行压缩以减小存储空间和带宽利用率。
[0008]一般而言,纹理压缩因此已经变成图形硬件尤其是3D图形硬件的被广泛接受的特征。纹理压缩的目的是降低图形系统上的存储成本和带宽成本,同时尽量维持原始纹理的质量。本文中所描述的压缩和解压缩方法可以用来压缩各种类型的纹理信息,包括图像数据、图片数据、透明度信息、平滑度或粗糙度数据或任意其它类似结构的数据。因此,本文中广泛地使用术语纹理来指作为GPU的部分的被压缩或解压缩的数据。[0009]固定速率压缩方案已经在传统上用来压缩纹理,并且与可变速率方案相比可能通常遭受一些缺点。不像固定速率压缩,可变速率压缩更加灵活,并且可以允许根据需要对质量进行调整。例如,可变速率压缩可以被设置以实现无损压缩。在一些情况下,使用可变速率压缩方案可以提供比传统固定速率压缩方案较佳的压缩。当由于高复杂性和实施成本而期望即时(on-the-fly)解压缩时,可变速率压缩方案,诸如联合照片专家组(JPEG),通常不用于纹理压缩。因此,在本领域中存在对使得能够实现可变速率压缩纹理的低成本即时解压缩的方法和机制的需要。
[0010]鉴于以上情况,期望用于执行压缩纹理的实时解压缩的改进的处理单元、方法和介质。
[0011]发明实施方案概要
[0012]构想了用于对纹理数据进行解压缩的处理单元、方法和介质的各种实施方案。在一个实施方案中,多个着色器中的第一着色器可能需要纹理的块来产生由显示装置或在进一步处理中使用的数据。第一着色器可以被配置成计算该块在纹理的未压缩版本内的虚拟地址并且以对该块的请求将该虚拟地址传送至高速缓冲存储器装置。响应于确定该块的未压缩版本不存储在高速缓冲存储器中,多个着色器中的第二着色器可以被启用为解压缩着色器,并且该块的未压缩版本的虚拟地址可以被传递至解压缩着色器。另外,响应于确定该块的未压缩版本不在高速缓冲存储器中,可以为被请求的块分配高速缓冲存储器线。
[0013]第二着色器可以被配置成从高速缓冲存储器接收该块的压缩版本。高速缓冲存储器可以被配置成利用表,该表将纹理的未压缩版本的虚拟地址空间映射到纹理的压缩版本的地址空间。高速缓冲存储器和/或第二着色器可以被配置成根据表确定该块的压缩版本的位置和大小。表也可以包含附加信息,诸如纹理的每块的压缩版本的DC系数的值。
[0014]在从高速缓冲存储器接收该块的压缩版本之后,第二着色器可以被配置成对该块的压缩版本解压缩并然后将该块的解压缩版本写入到高速缓冲存储器。在已经将该块的解压缩版本写入到高速缓冲存储器之后,第一着色器可以被配置成从高速缓冲存储器接收该块的解压缩版本。第一着色器可然后被配置成处理该块的解压缩版本,使得它可以适用于渲染表面进行显示。
[0015]鉴于本文所提出的方法的下列详细描述,这些和其它特征及优势对于本领域的那些技术人员而言将变得明显。
[0016]附图简述
[0017]系统、方法和机制的上述和进一步的优势通过参照下列描述结合附图可以更好地来理解,在附图中:
[0018]图1示出计算机图形系统的一个实施方案。
[0019]图2是根据一个或多个实施方案的GPU的框图。
[0020]图3示出图形处理系统的一个实施方案的框图。
[0021]图4A示出数据高速缓冲存储器的一个实施方案的框图。
[0022]图4B是根据一个或多个实施方案的块映射表。
[0023]图5示出用于8x8纹素块的虚拟地址空间的一个实施方案。
[0024]图6是一部分数据的一个实施方案的框图。
[0025]图7是示出用以对纹理的压缩块解压缩的方法的一个实施方案的通用流程图。[0026]详述
[0027]在下列描述中,阐明了许多特殊细节以提供对本文所提出的方法和机制的彻底理解。然而,本领域的普通技术人员之一应认识到,各实施方案可在没有这些特殊细节的情况下实践。在某些情况下,为避免对本文中所描述的方法造成模糊,未详细地示出熟知的结构、部件、信号、计算机程序指令和技术。应了解,为了简单和图示的清楚,在这些图中示出的元件不一定按比例绘制。例如,元件中的一些的尺寸相对于其它元件可能被夸大。
[0028]该说明书包括对“一个实施方案”或“一实施方案”的引用。短语“在一个实施方案中”或“在一实施方案中”的出现未必指相同的实施方案。特定的特征、结构或特性可以用与本公开一致的任意适当的方式合并。
[0029]术语。下列段落为在本公开(包括所附权利要求)中找到的术语提供定义和/或背景.[0030]“包括”。该术语是开放性的。如在所附权利要求中所使用的,该术语不排除附加结构或步骤。考虑如下叙述的权利要求:“一种包括多个着色器...的GPU。”这样的权利要求不排除GPU包括附加部件(例如,纹理单元、输入/输出电路等)。
[0031]“被配置成”。各种单元、电路、或其它部件可以被描述或声称为“被配置成”执行一项或多项任务。在这样的背景下,“被配置成”用来通过指示单元/电路/部件包括在操作期间执行那些一项或多项任务的结构(例如,电路)来暗示结构。因此,即使当指定的单元/电路/部件当前未在操作时(例如,未通电),单元/电路/部件也能够被说成被配置成执行任务。与“被配置成”语言一起使用的单元/电路/部件包括硬件——例如,电路、可执行以实施操作的存储器存储程序指令等。单元/电路/部件“被配置成”执行一项或多项任务的叙述明确地不旨在对该单元/电路/部件援引35U.S.C.§114第六段。另外,“被配置成”能够包括通用结构(例如,通用电路),所述通用结构由软件和/或固件(例如,FPGA或通用处理器执行软件)操纵以能够执行讨论中的任务的方式操作。“被配置成”还可以包括使制造过程(例如,半导体制作设施)适于制作实施或执行一项或多项任务的装置(例如,集成电路)。
[0032]“第一”、“第二”等。如本文所使用的,这些术语用作在它们后面的名词的标签,并且不暗示任何类型的顺序(例如,空间、时间、逻辑等)。例如,在具有八个处理元件或核心的处理器中,术语“第一”和“第二”处理元件能够用来指八个处理元件中的任意两个。换句话说,“第一”和“第二”处理元件并不限制于逻辑处理元件O和I。
[0033]参照图1,示出计算机图形系统的一个实施方案的框图。计算机图形系统100包括计算系统102和显示装置114。计算系统102包括用于处理图形数据的图形处理单元(GPU) 104。在一些实施方案中,GPU104可能驻留在计算系统102内的显卡上。GPU104可以处理图形数据以便为帧的每个像素生成颜色和亮度值以便显示在显示装置114上。GPU104可以包括一个或多个处理核心和/或着色器阵列以执行像素操纵。
[0034]计算系统102可以包括可以在CPU(未示出)上运行的软件程序应用108、应用程序设计接口(API)IlO以及驱动器112。APIllO可以遵守工业标准规范,诸如OpenGL或DirectX。APIllO可以与驱动器112通信。驱动器112可以将从APIllO接收的标准代码翻译成由GPU104理解的指令的原生格式。GPU104然后可以执行从驱动器112接收的指令。
[0035]纹理可以从计算系统102的系统存储器(未示出)或另一个存储装置被转移至GPU104。在一个实施方案中,纹理可以使用JPEG压缩来压缩。在其它实施方案中,可以使用其它类型的可变速率压缩来压缩纹理。对于该说明书的其余部分,JPEG类型编码的示例将用来描述各实施方案。然而,这仅仅只是出于说明目的,并且其它类型的可变速率压缩也可以与本文所描述的方法和机制一起使用。
[0036]作为图块化处理的部分,驱动器112可以对压缩纹理重定格式。这种重定格式可以使得将JPEG压缩纹理译码成硬件内部JPEG格式成为必需。在其它实施方案中,JPEG压缩纹理可以被译码成其它格式。硬件内部JPEG格式可以包含附加信息以促进解压缩处理。例如,硬件内部JPEG格式可以包括具有关于JPEG压缩纹理的各个块的位置和尺寸的信息的表。该表也可以包括关于JPEG压缩纹理的每个8x8块的DC系数的信息。该表可以进一步包括用以促进压缩纹理的解压缩的Huffman代码、量化表和其它信息。驱动器112可以为由计算系统102利用的压缩纹理中的每一个分配虚拟地址空间。每个虚拟地址空间的大小可能对应于未压缩纹理的大小。
[0037]计算系统102将通常具有图1中未示出的各种其它装置/部件,诸如CPU、总线、存储器、外围装置等。例如,计算系统102可以包括可以耦接到除显示装置114之外的诸如键盘、打印机和鼠标的其它装置的I/O接口。在一些实施方案中,计算系统102可以包括多个GPU。
[0038]在另一个实施方案中,诸如GPU104的处理器可以用软件来定义。软件指令可以存储在计算机可读存储介质中,并且当软件指令在计算装置上被执行时,软件指令可以定义处理器。在进一步的实施方案中,处理器可以包括GPU、CPU、视频处理单元(VPU)、协处理器和/或被配置成处理纹理数据的其它类型的处理器。在各实施方案中,GPU和CPU可以是独立的集成电路装置/包。在各实施方案中,GPU和CPU可以被包括在单一集成电路或包中。
[0039]参照图2,所示为GPU200的一个实施方案的框图。可以利用GPU200来(例如,使用顶点着色器、几何着色器、像素着色器等)执行图形处理相关的任务和一般计算任务(例如,数学算法、物理模拟等)。在示出的示例中,GPU200包括着色器处理器阵列210、命令处理器212、纹理存储器220以及可以被配置成支持直接存储器存取(DMA)的存储器控制器222。应注意,图2中描绘的GPU200的实施方案仅出于说明目的,并且本领域的那些技术人员将领会,许多替代实施方案是可能的。所有这样的替代实施方案是预期的。还应注意,GPU200可以包括图2中未示出的许多其它部件。
[0040]在示出的实施方案中,着色器处理器阵列210包括可并行执行的多个处理单元。命令处理器212可以向着色器处理器阵列210的各个着色器处理器发布命令以及分配处理任务。在一些实施方案中,命令处理器212可以包括分派处理器(未示出),该分派处理器被配置成将接收的工作量划分成线程并且在着色器处理器阵列的处理单元之间分发线程。着色器处理器阵列210可以被配置成执行各种类型的功能,包括处理纹理数据和执行渲染算法以将3维纹理对象转换成2维图像。如上文所指出的,着色器处理器阵列210可以包括多个着色器处理器,并且所述多个着色器处理器可以在顶点和其它纹理数据上使用宽范围的数学运算和逻辑运算来实施算法。
[0041]在一些实施方案中,GPU200可以被配置成利用一个或多个片上和/或片外存储器用于临时存储数据。虽然这样的存储器在本文中可以被称为“高速缓冲存储器”,但是应注意,使用这样的术语不一定要求这样的存储器的任意特定组织、结构或策略。例如,虽然这样的存储器可能利用通常与中央处理单元(CPU)高速缓冲存储器相关联的组织和策略,诸如成组相联组织和替换策略,但是可以利用任意期望的组织和/或存储策略。在各实施方案中,纹理存储器220用于存储纹理数据。在这样的实施方案中,相比纹理数据仅存储在系统存储器226或本地存储器230将可能的情况,纹理存储器220可以提供对某纹理数据诸如被频繁使用的纹理数据的更快访问。系统存储器226可以表示GPU200和中央处理单元(CPU,未示出)都可访问的存储器,而本地存储器可以表示仅可由GPU200直接访问的存储器。在各实施方案中,纹理存储器220可以包括分层布置中的多个等级,如在高速缓冲存储器技术中通常已知的。被包括在纹理高速缓冲存储器系统220中的这样的高速缓冲存储器等级的数量可能从一个实施方案变化到另一个实施方案。纹理存储器220可以使用诸如静态存储器(例如,SRAM)、使用动态存储器(例如,DRAM)的堆栈存储器的各种存储器技术或以其它方式来实施。纹理存储器220也可以包括高速缓冲存储器逻辑。高速缓冲存储器逻辑可以被配置成将数据高速缓冲存储到纹理存储器220以及被配置成实施考虑高速缓冲存储器系统220对系统存储器226的相对等待时间和/或带宽的高速缓冲存储器管理策略。
[0042]GPU200也可以包括存储器控制器222。存储器控制器222可以耦接到系统存储器226和本地存储器230。存储器控制器222可以访问系统存储器226中的数据,诸如压缩纹理228。压缩纹理228可以包括多个纹理,该多个纹理可以用各种可变速率压缩技术中的任一种诸如JPEG来压缩。压缩纹理228,或压缩纹理228内的各个纹理的部分,可以在不首先被解压缩的情况下(经存储器控制器222)转移至GPU200的纹理存储器220和着色器处理器阵列210。主机驱动器240可以经系统存储器226将命令和数据转移到GPU200。可以利用本地存储器230来存储由GPU200使用的顶点数据和其它数据,并且GPU200可以将帧数据写入到本地存储器230。
[0043]现在参照图3,示出图形处理系统的一个实施方案的框图。图形处理系统300可以包括着色器控制器310,并且着色器控制器310可以将特定图形处理任务分配至着色器阵列320内的各个着色器计算单元。着色器控制器310可以在图形处理任务和通用计算任务上执行预处理,并且将这些任务发布给着色器阵列320。着色器控制器310可以识别着色器阵列中的哪个处理元件可用于处理新的工作量,并且着色器控制器310可以将新的工作量发送至着色器阵列320的可用处理元件。着色器控制器310可以记录哪些工作量正由着色器阵列的不同的处理元件处理,使得多个线程能够并行地执行。
[0044]着色器阵列320可以包括纹理消耗着色器321和解压缩着色器322,它们代表可以被包括在着色器阵列320中的任意数量和类型的着色器处理器。在各实施方案中,着色器阵列320可以包括可以被配置成在程序上生成纹理数据的附加着色器处理器。一般来说,程序纹理生成是指在算法上生成纹理的处理。在各实施方案中,纹理的该程序生成动态地而非事先执行。除了其它任务之外,着色器阵列320可以用于纹理映射和为显示装置产生图像数据。作为执行这些操作的部分,纹理消耗着色器321可以向纹理过滤器330发布纹理请求。纹理请求可以针对纹理的一个或多个部分(例如,块、纹素)。纹理过滤器330可以为被请求的纹理生成虚拟地址,并且通过请求向高速缓冲存储器340传送虚拟地址。高速缓冲存储器340可以存储与像素相关联的纹素数据的形式的纹理。纹理中的一些可以被压缩,并且纹理中的一些可以不被压缩。[0045]在从纹理过滤器330接收虚拟地址之后,高速缓冲存储器340可以针对所有已知的虚拟地址范围执行地址校验以确定被请求的纹理是否存储在高速缓冲存储器340中。如果被请求的纹理的未压缩版本存储在高速缓冲存储器340中,则高速缓冲存储器340可以将纹理的未压缩版本返回到纹理过滤器330。如果纹理的未压缩版本未存储在高速缓冲存储器340中,则试图的请求可能导致高速缓冲存储器缺失。响应于高速缓冲存储器缺失,为了对纹理的压缩版本解压缩的目的,可以启用解压缩着色器322。在各实施方案中,着色器阵列320可以从高速缓冲存储器340接收请求,否则,启用解压缩着色器。另外,响应于高速缓冲存储器缺失,纹理消耗着色器321可以将纹理的虚拟地址传递到解压缩着色器322。用于解压缩着色器程序的资源可以被预分配在解压缩着色器322上以减少着色器开始等待时间和简化资源管理。基于被请求的块的虚拟地址,请求可以被路由至着色器阵列320的特定的着色处理器。
[0046]高速缓冲存储器340可能被查询纹理的压缩版本,并且如果纹理的压缩版本存储在高速缓冲存储器340中,则纹理的压缩版本可以返回到解压缩着色器322。如果纹理的压缩版本未存储在高速缓冲存储器340中,则可以从系统存储器或另一个位置检索纹理的压缩版本。解压缩着色器322也可以接收附加表、纹理和/或常量来促进解压缩操作。解压缩着色器322可以对用以对被请求的纹理解压缩所必须的某附加压缩数据解压缩。在JPEG压缩纹理的情况下,纹理可以从原始代码译码成新的编码方案,并且新的编码方案可以设计成使得解压缩更加有效。在解压缩着色器322已经接收纹理的压缩版本并且对其解压缩之后,纹理消耗着色器321可以利用纹理的解压缩版本用于适当的渲染计算。针对多个纹理和/或纹理的部分,该处理可以继续。在另一个实施方案中,所描述的如由纹理过滤器330执行的功能可以由着色器阵列320执行,并且着色器阵列320可以直接耦接到高速缓冲存储器340。
[0047]高速缓冲存储器340可以利用表来确定给定虚拟地址所映射到的存储在高速缓冲存储器340中的纹理的压缩版本的地址。在各实施方案中,表(或其部分)可以存储在高速缓冲存储器340中或其它地方。在一个实施方案中,表可以将虚拟地址映射到纹理的压缩版本的另一个地址。虚拟地址所映射到的地址本身可以是或可不是虚拟地址。所利用的寻址方案的类型的许多选项是可能的并且是预期的。表可以存储纹理的压缩版本的每块的偏移,其中,所述偏移给出从纹理的压缩版本的开始到块的位置。在各实施方案中,表可以促进对一个或多个压缩纹理中块的随机访问。响应于对块的压缩版本的请求,高速缓冲存储器340的高速缓冲存储器逻辑可以确定给定块的地址。高速缓冲存储器逻辑可以使用表来确定期望的块以何种偏移存储在高速缓冲存储器的页面或提取单元内。着色器阵列320的多个着色器也可以使用表来确定纹理的被请求的块的偏移。在各实施方案中,高速缓冲存储器340可以利用具有关于多个纹理的映射信息的多个表。
[0048]在纹理数据已经被处理之后,着色器阵列320可以将图像数据传送至渲染单元350。显示单元350可以分配定义图像帧的每个像素的独特颜色属性的特定数值。数值可以被传递至帧缓冲器360,在该帧缓冲器360处,数据可以被存储以便在适当的时间使用,诸如当它们在显示装置370上被渲染时。
[0049]关于随后的操作,纹理消耗着色器321可以被配置成执行解压缩着色器的功能,并且解压缩着色器322可以被配置成执行纹理消耗着色器的功能。取决于当前操作的要求,着色器阵列320的每个着色器处理器可以被配置成执行各种功能。
[0050]在各实施方案中,可以利用负载平衡来将解压缩任务分配至未充分使用的着色器。另外,一些空间可以被保留在多个计算单元中以允许解压缩着色器在多个计算单元上开始工作。此外,多个解压缩请求可以被装入单指令多数据(SMD)向量。SMD向量可以促进在一个矢量中的多个块的解压缩。在一个实施方案中,16个块可以在一个矢量中被解压缩,且每四个道(lane) —个块。
[0051]在各实施方案中,图形处理系统300可以使得纹理数据的即时程序生成成为可能。一个着色器可以生成即时纹理数据,并且第二着色器可以利用生成的纹理数据用于渲染操作。解压缩着色器可以访问压缩的数据,并且可以利用另一个着色器来对诸如一个或多个表的附加数据解压缩。可以使用各种压缩技术对压缩数据中的一些压缩。在各实施方案中,解压缩着色器可以从高速缓冲存储器请求数据,并且响应于高速缓冲存储器缺失,可以启用另一个着色器来在程序上生成纹理数据。
[0052]现在转向图4A,示出数据高速缓冲存储器的一个实施方案的框图。高速缓冲存储器410可以包含纹理420和430的部分,所述部分代表可以存储在高速缓冲存储器410中的纹理的任意数量的部分。纹理420和430可以是压缩纹理,而存储在高速缓冲存储器410中的多个纹理可以是压缩纹理和未压缩纹理的混合。纹理420可以包括代表纹理420的任意数量块的块422和423。纹理420还可以包括表421,该表421可以将纹理420的虚拟地址空间映射到压缩纹理420的地址空间。纹理430可以类似于纹理420被组织。在另一个实施方案中,表421可以独立于纹理420被存储。
[0053]当纹理消耗着色器从高速缓冲存储器410请求纹理的块,并且该请求导致高速缓冲存储器缺失时,高速缓冲存储器410可以为被请求的块分配高速缓冲存储器线440。高速缓冲存储器410可以将分配的高速缓冲存储器线的地址传送至解压缩着色器。在解压缩着色器已经对对应于被请求的块的压缩块解压缩之后,解压缩着色器可以被配置成将解压缩块写入到高速缓冲存储器线440。或者,解压缩着色器可以将解压缩块写入到高速缓冲存储器410内的各种位置。响应于解压缩着色器将解压缩块写入到高速缓冲存储器线440,纹理消耗着色器可以被配置成从高速缓冲存储器410提取解压缩块。对应的等待时间补偿队列可能需要被延伸以适应起因于压缩块的即时解压缩的更大的等待时间。
[0054]在该块的解压缩版本已经被写入到高速缓冲存储器线440之后,高速缓冲存储器410可以存储该块的压缩版本和该块的解压缩版本。在各实施方案中,高速缓冲存储器410可以执行保留策略,响应于确定两个版本存储在高速缓冲存储器410中,该保留策略丢弃块版本中的一个。在一个实施方案中,该块的解压缩版本可以在它已经由纹理消耗着色器提取之后被丢弃。在另一个实施方案中,该块的压缩版本可以在该块的解压缩版本已经被写入到高速缓冲存储器410之后被丢弃。在进一步的实施方案中,该块的压缩版本和解压缩版本可以被保持在高速缓冲存储器410中持续延长的一段时间。
[0055]响应于对纹理的块的未压缩版本的请求,高速缓冲存储器410可以确定未压缩版本未存储在高速缓冲存储器410中。在各实施方案中,响应于这样的确定,高速缓冲存储器410可以自动地搜求该块的压缩版本。如果该块的压缩版本存储在高速缓冲存储器410中,则高速缓冲存储器410可以告知着色器或其它处理单元,和/或高速缓冲存储器410可以将该块的压缩版本传送至着色器或其它处理单元。[0056]在一些实施方案中,响应于未压缩块的请求上的高速缓冲存储器缺失,可以开始独立的软件线程,并且该线程可以启用解压缩着色器。纹理消耗着色器可以将块的虚拟地址传送至解压缩着色器。在各实施方案中,当着色器完成解压缩任务时,解压缩着色器可以将(一个或多个)未压缩块传送至高速缓冲存储器。在其它实施方案中,当解压缩着色器完成解压缩操作时,解压缩着色器可以将着色器输出传送至纹理消耗着色器。
[0057]现在参照图4B,示出块映射表的一个实施方案的框图。表421可以为(图4A的)纹理420的多个块存储映射信息。在各实施方案中,表421可以以各种方式组织以具有除图4B中所示的内容之外的其它类型的信息。例如,在一个实施方案中,表421可以包括纹理420的每块的DC系数值。
[0058]表421可以将纹理420的虚拟地址空间映射到(图4A的)压缩纹理420的物理地址空间。解压缩着色器(未示出)可以从高速缓冲存储器410提取或以其它方式接收纹理420的一个或多个块,并且解压缩着色器可以根据表421确定压缩块的位置和大小。压缩块的大小可以通过计算两个相邻的块的起始物理地址之间的差来确定。在其它实施方案中,附加数据可以被提供以指示块的大小和/或位置信息。此外,解压缩着色器可以从表421获得附加信息,诸如每块的DC系数值。
[0059]在一些实施方案中,可以根据超级块来组织纹理。超级块可以是一组16个8x8块,是32x32像素总共1024个像素的图块。纹理的索引表可以包括每个超级块的表项目,并且每个表项目可以给出每个超级块的起始地址。在一个实施方案中,该地址可以是纹理内的超级块的位置。在另一个实施方案中,该地址可以是从纹理的起点的偏移。每个项目也可以包括属于超级块的第一个8x8块的4位索引。在一些实施方案中,超级块可能未对准高速缓冲存储器的2千位(Kb)界限。每个项目也可以包括16位掩码。16位掩码可以包括指示该块是否在下一个2Kb字中开始的每块一个位。
[0060]在一些实施方案中,解压缩着色器可以将8x8块的虚拟地址转换成32x32超级块的虚拟地址以计算索引表的项目数量用于查阅目的。解压缩着色器可以查阅索引表中对应于超级块的项目。索引表可以由着色器以与其它纹理类似的方式处理。索引表的项目可以被高速缓冲存储和处理。
[0061]着色器可以从每个索引表项目获得基地址,该基地址可以是虚拟地址。基地址可以是压缩的超级块的第一提取单元。着色器也可以获得包含需要被解压缩的被请求的块的提取单元的偏移。基于块的地址,着色器也可以计算块是被压缩还是未被压缩。某些地址范围可以对应于未压缩块的虚拟地址,并且其它地址范围可以对应于压缩块的物理地址。着色器也许能够区别不同的地址范围。
[0062]现在参照图5,示出8x8块的纹素的虚拟地址空间的一个实施方案的框图。每个纹素可以被映射到虚拟地址空间570内的唯一地址。对于8x8块500的所有的64个纹素,纹素I可以被映射到地址501,纹素2可以被映射到地址502,以此类推。块500可以是压缩纹理内的块,并且虚拟地址空间570可以为压缩纹理的块500分配。除了块500之外,纹理还可以包括多个块。虚拟地址空间570也可以包括纹理中的多个块的每个纹素的唯一地址。
[0063]为了图示的目的,将假设,未压缩的纹素是32位值(4组8位值)。也可以以本文中所描述的方法和机制来利用未压缩的纹素的其它大小。例如,可以以类似的方式处理具有24位值的未压缩的纹素。在各实施方案中,纹理消耗着色器可以为各个纹素生成请求。首先,着色器可以计算纹素的虚拟地址。然后,对于对应于纹素的虚拟地址,可查询高速缓冲存储器。
[0064]现在转向图6,示出压缩的数据的一个实施方案的框图。数据部605可以是压缩的数据的提取单元,并且数据部605的大小可以基于未压缩块的大小。在一个实施方案中,提取单元可以是2Kb的大小。在其它实施方案中,提取单元可以是任意各种尺寸。多个压缩块可以被装入提取单元中。在一个实施方案中,可以被装入提取单元的最大数量的块可以被假设为16。在其它实施方案中,其它数量的块可以被装入提取单元。对于一个类型的高速缓冲存储器访问方案,可以假设,块的数据不越过提取单元的界限。
[0065]块可以是诸如JPEG的压缩格式的最小的可解码单元。对于JPEG,块是8x8像素图块(具有64个像素)。当纹理被压缩时,并且由着色器请求的纹理的块需要被解压缩时,高速缓冲存储器线可以在用于块的高速缓冲存储器中被分配。在一个实施方案中,高速缓冲存储器线大小可以是2Kb以存储整个未压缩块(32位*64=2Kb)。在其它实施方案中,高速缓冲存储器线大小可以是任意各种尺寸。
[0066]如果提取单元包含未压缩块,则仅一个块可以装在提取单元中。对于包含压缩块的提取单元,提取单元也可以包括176位的标题。提取单元可以假设为具有16个块的容量。标题可以包括16个11位的偏移值以指示压缩块在提取单元内的位置。偏移定位块的起始位位置。在其它实施方案中,在标题中可能存在可变数量的偏移指示符。
[0067]如图6中所示,数据部605可以包括标题610和块611-626。块611-626可以是压缩纹理的十六个不同的块。标题610可以包括偏移631-646。每个偏移可以是对应于数据部605内对应块的位置的11位偏移值。在其它实施方案中,可以利用偏移值的其它位大小。偏移631可以表示块611的起始地址,偏移632可以表示块612的起始地址,依此类推。在一些实施方案中,可能存在指示最后一个块的最后一位的附加偏移,以减少从高速缓冲存储器的不必要的提取。
[0068]在一些实施方案中,纹理的压缩8x8块可以被装入提取单元并且越过提取单元界限。示出块使用两个提取单元的对应信息可以存储在索引表中,并且解压缩着色器可以为越过提取单元界限的块生成两个提取指令(fetch)代替一个提取指令。
[0069]现在转向图7,示出用于对纹理的压缩块解压缩的方法的一个实施方案。出于论述的目的,在该实施方案中的步骤以顺序次序示出。应注意的是,在下述方法的各实施方案中,所描述的元件中的一个或多个可以同时执行、以与所示出的不同的次序执行或可以完全省略。根据需要,也可以执行其它附加元件。
[0070]方法700在块705中开始,然后在块710中,作为图像的渲染操作的部分,多个着色器中的第一着色器可以确定对纹理的块的需要。第一着色器可以是纹理消耗着色器。接着,第一着色器可以计算该块的虚拟地址(块715)。第一着色器可以具有纹理的未压缩视图,纹理的未压缩视图对应于纹理的未压缩版本,并且虚拟地址可以对应于被请求的块在未压缩视图内的位置。在块715之后,第一着色器可以从高速缓冲存储器请求该块并且通过请求传送虚拟地址(块720)。接着,高速缓冲存储器可以确定该块的未压缩版本是否存储在高速缓冲存储器中(条件块725)。如果该块的未压缩版本存储在高速缓冲存储器中,则第一着色器可以从高速缓冲存储器接收该块的未压缩版本并且处理该块(块770)。[0071]如果该块的未压缩版本未存储在高速缓冲存储器中,则多个着色器中的第二着色器可以被启用为解压缩着色器(块730)。用于解压缩着色器的资源可以被预分配在一个或多个着色器处理器上以减少着色器开始等待时间和简化资源管理。另外,被请求的块的虚拟地址可以从第一着色器被传递到第二着色器。接着,可以为被请求的块分配高速缓冲存储器线(块735)。然后,高速缓冲存储器可以确定该块的压缩版本是否存储在高速缓冲存储器中(条件块740)。在各实施方案中,高速缓冲存储器可以响应于第二着色器对该块的压缩版本的请求来做出这确定。在其它实施方案中,高速缓冲存储器可以响应于确定该块的未压缩版本未存储在高速缓冲存储器中来自动地做出这确定(条件块725)。
[0072]如果该块的压缩版本存储在高速缓冲存储器中(条件块740),则高速缓冲存储器和/或第二着色器可以根据表确定该块的压缩版本的位置和大小(块750)。如果该块的压缩版本未存储在高速缓冲存储器中(条件块740),则该块的压缩版本可以(例如,从本地或系统存储器)被提取并且存储在高速缓冲存储器中(块745)。从系统存储器提取该块的压缩版本可以使得提取整个压缩纹理或纹理中的一些部分成为必需。高速缓冲存储器可以被配置成利用表,该表将纹理的未压缩版本的虚拟地址空间映射到纹理的压缩版本的地址空间。高速缓冲存储器和/或第二着色器可以根据表确定该块的压缩版本的位置和大小(块750)。表也可以包含附加信息,诸如纹理的每块的压缩版本的DC系数的值。在块750之后,该块的压缩版本可以从高速缓冲存储器被传送至第二着色器(块755)。
[0073]在另一个实施方案中,如果该块的压缩版本不在高速缓冲存储器中(条件块740),则步骤745、750和755可以由替代步骤取代。在替代步骤中,该块的压缩版本可以从系统存储器被提取并且直接提供给第二着色器。这些替代步骤与让第二着色器从高速缓冲存储器接收该块的压缩版本相比可能是更加有效的。在进一步的实施方案中,该块的压缩版本可以从系统存储器被提取并且直接提供给第二着色器,同时也被写入到高速缓冲存储器。
[0074]在第二着色器接收该块的压缩版本之后(块755),第二着色器可以对该块的压缩版本解压缩(块760)。接着,第二着色器可以将该块的解压缩版本写入到高速缓冲存储器(块765)。然后,作为当前图像的渲染操作的部分,第一着色器可以从高速缓冲存储器接收该块的解压缩版本并且处理该块(块770)。在块770之后,该方法可以在块775中结束。对于来自多个纹理的多个块,方法700可以重复。
[0075]虽然特征和元件在示例性实施方案中以特定的组合描述,但是每个特征和元件能够在没有示例性实施方案的其它特征和元件的情况下单独地使用或在有或没有其它特征和元件的情况下以各种组合使用。本发明可以在具有由机器、处理器和/或任意通用计算机执行的机器可读指令的非暂态计算机可读存储介质中切实体现的计算机程序或固件中实施,以便与任意非易失性存储器装置一起使用或由任意非易失性存储器装置使用。计算机可读存储介质可以包含可操作以实现该说明书中所描述的功能、方法和操作的程序指令。适当的处理器包括举例来说通用处理器和专用处理器两者。
[0076]通常,处理器将从只读存储器(ROM)、RAM和/或具有存储的软件或固件的存储装置接收指令和数据。适合于体现计算机程序指令和数据的存储装置包括所有形式的非易失性存储器,所述存储器举例来说包括半导体存储器装置、只读存储器(ROM)、诸如内置硬盘和可移动磁盘的磁性介质、磁光介质以及诸如⑶-ROM盘和数字通用盘(DVD)的光学介质。[0077]上述实施方案可以使用诸如Verilog或VHDL的硬件描述语言(HDL)在软件中设计。HDL设计可以模拟电子系统的行为,并且设计可以被综合并且最终组装到硬件装置中。此外,HDL设计可以存储在计算机产品中并且在硬件制造之前加载到计算机系统中。
[0078]可以由本发明或结合本发明使用的硬件部件、处理器或机器的类型包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)、微处理器或任意集成电路。这样的处理器可以通过使用已处理的硬件描述语言(HDL)指令(这样的指令能够存储在计算机可读介质上)的结果来配置制造过程而制造。这样的处理的结果可以是掩蔽作品,然后这些掩蔽作品在半导体制造过程中被用来制造实施本文中所描述的方法和机制的各方面的处理器。
[0079]软件指令,诸如用来实施图像渲染计算和着色器任务的那些软件指令,可以存储在计算机可读存储介质上。计算机可读存储介质可以包括用于以由机器(例如,计算机)可读的格式(例如,软件、处理应用)存储信息的任意机制。计算机可读存储介质可以包括但不限于磁性或光学介质(例如、磁盘(固定的或可移动的)、磁带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW、或 Blu-Ray)、RAM(例如,同步动态 RAM(SDRAM)、双数据速率(DDR、DDR2、DDR3 等)SDRAM、低功率 DDR(LPDDR2 等)SDRAM、Rambus DRAM (RDRAM)、静态RAM(SRAM))、ROM、经诸如USB接口的外部接口可访问的非易失性存储器(例如,闪存存储器)、微机电系统(MEMS)以及经诸如网络和/或无线链路的通信介质可访问的存储介质。
[0080]虽然已经示出并且描述了方法的一些实施方案,但是对于本领域的那些普通技术人员来说明显的是,可以对如所描述的方法做出多种改变、修改或更改。改变、修改或更改因此应被视为在本文中所描述的方法和机制的范围内。还应强调,上述实施方案仅仅是实施方式的非限制性示例。
【权利要求】
1.一种设备,其包括: 第一着色器;以及 第二着色器 其中,所述第二着色器被配置成对可变速率压缩纹理块解压缩以便由第一着色器使用。
2.如权利要求1所述的设备,其中,所述第二着色器被配置成响应于所述第一着色器对对应于所述可变速率压缩纹理块的纹理块的请求对所述可变速率压缩纹理块解压缩。
3.如权利要求2所述的设备,其中,所述第一着色器对对应于所述可变速率压缩纹理块的所述纹理块的所述请求是对用于所述可变速率压缩纹理块的未压缩版本的存储器的请求。
4.如权利要求3所述的设备,其中,所述第二着色器被配置成还响应于确定所述可变速率压缩纹理块的所述未压缩版本不在所述存储器中而对所述可变速率压缩纹理块解压缩。
5.如权利要求3所述的设备,其中,在对所述可变速率压缩纹理块解压缩之前,所述第二着色器被配置成从所述存储器接收所述可变速率压缩纹理块。
6.根据权利要求1所述的设备,其中,对所述可变速率压缩纹理块解压缩由执行解压缩程序的第二着色器执行。
7.根据权利要求 2所述的设备,其中,所述存储器包括被配置成存储从片外系统存储器检索的数据的片上存储器。
8.如权利要求2所述的设备,其还包括将所述可变速率压缩纹理块的未压缩版本的虚拟地址空间映射到所述可变速率压缩纹理块的地址空间的表。
9.如权利要求8所述的设备,其中,所述第一着色器还被配置成: 在从所述存储器请求所述纹理块之前,计算所述纹理块的所述未压缩版本在对应纹理的未压缩版本内的虚拟地址;以及 将所述纹理块的所述未压缩版本的所述虚拟地址通过所述请求传送至所述存储器。
10.如权利要求7所述的设备,其中,响应于确定所述纹理块的所述未压缩版本不在所述片上存储器中,在用于所述纹理块的所述未压缩版本的所述片上存储器中分配存储。
11.如权利要求1所述的设备,其中,所述多个着色器包括被配置成在程序上生成纹理数据的着色器。
12.一种用于对纹理数据解压缩的方法,所述方法包括: 第一着色器请求纹理块;以及 第二着色器对可变速率压缩纹理块解压缩以便由所述第一着色器使用。
13.如权利要求12所述的方法,其还包括所述第二着色器响应于所述第一着色器从存储器请求所述可变速率纹理块的未压缩版本而对所述可变速率压缩纹理块解压缩。
14.如权利要求13所述的方法,其还包括所述第二着色器还响应于确定所述可变速率压缩纹理块的所述未压缩版本不在所述存储器中而对所述可变速率压缩纹理块解压缩。
15.如权利要求14所述的方法,其中,在对所述可变速率压缩纹理块解压缩之前,所述方法包括所述第二着色器从所述存储器接收所述可变速率压缩纹理块。
16.根据权利要求12所述的方法,其还包括由所述第二着色器使用解压缩程序对所述可变速率压缩纹理块解压缩。
17.根据权利要求13所述的方法,其中,所述存储器包括被配置成存储从片外系统存储器检索的数据的片上存储器。
18.—种包括用以对纹理数据解压缩的程序指令的计算机可读存储介质,其中,当被执行时,所述程序指令可操作以: 使得第一着色器能够请求纹理块;以及 使得第二着色器能够对可变速率压缩纹理块解压缩以便由所述第一着色器使用。
19.如权利要求18中所述的计算机可读存储介质,其中,所述程序指令还可操作以使得所述第二着色器响应于所述第一着色器从存储器请求所述可变速率纹理块的未压缩版本而对所述可变速率压缩纹理块解压缩。
20.如权利要求19中所述的计算机可读存储介质,其中,所述程序指令还可操作以使得所述第二着色器还响应于确定所述可变速率压缩纹理块的所述未压缩版本不在所述存储器中而对所述可变速率压缩纹理块解压缩。
【文档编号】G06T9/00GK103608848SQ201280029522
【公开日】2014年2月26日 申请日期:2012年6月14日 优先权日:2011年6月17日
【发明者】康斯坦丁·尤里查, 约翰·W·布拉泽斯 申请人:超威半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1