首页> 中国专利> 常驻图描述符

常驻图描述符

摘要

处理器接收访问部分常驻纹理(PRT)资源的一个或多个级别的请求。所述级别表示不同细节级别(LOD)下的纹理并且所述请求包括指示所述纹理中的位置的标准化坐标。所述处理器访问纹理描述符,其包括所述级别中的第一级别的维度以及参考级别和一个或多个第二级别之间的一个或多个偏移,所述一个或多个第二级别与指示常驻在所述PRT资源中的纹素的一个或多个常驻图相关联。所述处理器基于所述偏移将所述标准化坐标转换为所述一个或多个常驻图中的纹素坐标并且响应于所述请求基于所述纹素坐标访问所述一个或多个常驻图以确定由所述标准化坐标指示的纹理数据是否常驻在所述PRT资源中。

著录项

  • 公开/公告号CN113287145A

    专利类型发明专利

  • 公开/公告日2021-08-20

    原文格式PDF

  • 申请/专利权人 超威半导体公司;

    申请/专利号CN202080007743.5

  • 申请日2020-01-17

  • 分类号G06T1/20(20060101);G06T1/60(20060101);G06T15/04(20060101);

  • 代理机构31263 上海胜康律师事务所;

  • 代理人李献忠;张华

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 12:16:29

说明书

背景技术

图形处理单元(GPU)使用由一系列可编程着色器和固定功能硬件块形成的图形流水线来处理三维(3-D)图形。例如,在帧中可见的对象的3-D模型可以由一组三角形、其他多边形或补片表示,所述三角形、其他多边形或贴片在图形流水线中进行处理以产生像素值以便显示给用户。三角形、其他多边形或补片统称为图元。所述过程包括将纹理映射到图元以并入具有比图元的分辨率更高的分辨率的视觉细节。GPU包括专用存储器,其用于存储纹理值,使得纹理值可用于映射到在图形流水线中进行处理的图元。纹理可以存储在磁盘上或当图形流水线需要其时程序化地生成。存储在专用GPU存储器中的纹理数据是通过从磁盘加载纹理或程序化地生成数据来填充的。专用GPU存储器通常是相对较小的存储器,这限制了可以存储在专用GPU存储器中的纹理数据的量。此外,填充纹理数据所需的开销可能是显著的,特别是如果仅使用纹理数据的小子集来渲染最终屏幕图像时。

附图说明

通过参考附图,可以更好地理解本公开,并且本公开的许多特征和优点对本领域技术人员来说变得显而易见。在不同附图中使用相同附图标记来指示类似或相同项。

图1是根据一些实施方案的包括用于创建旨在输出到显示器的视觉图像的图形处理单元(GPU)的处理系统的框图。

图2描绘了根据一些实施方案的能够处理高阶几何图元以按预定分辨率生成三维(3D)场景的光栅化图像的图形流水线。

图3是根据一些实施方案的在部分常驻纹理(PRT)资源的不同级别和标准化坐标空间之间的转换的框图。

图4是根据一些实施方案的在纹素空间中的常驻图和标准化坐标空间之间的转换的框图。

图5是根据一些实施方案的纹理描述符的框图。

图6是根据一些实施方案的在PRT资源和常驻图的级别之间的关系的框图。

图7是根据一些实施方案的生成和存储纹理描述符的方法的流程图。

图8是根据一些实施方案的生成和存储纹理描述符的方法的流程图。

具体实施方式

在一些情况下,纹理信息使用纹理的分层贴图表示存储在GPU处在部分常驻纹理(PRT)资源中。贴图中的每个级别表示一个细节级别(LOD)处的纹理。标准约定是在贴图的更高级别下降低LOD,然而也可以使用反向级别编号。PRT资源的维度(在纹素空间中)在每个连续更高的级别中减少两倍。着色器或应用程序使用标准化纹理坐标来访问PRT资源的贴图的级别。标准化(u,v)纹理坐标从其实际维度(例如,0..dim至1的范围)标准化为0.0至1.0的标准化范围。

通过填充贴图层次结构中的纹素的子集来节省专用GPU存储器中的空间,使得纹理信息不一定常驻在PRT资源的所有贴图级别的所有纹素中。将纹理信息存储在PRT资源中的一个缺点是响应于应用程序对不常驻在专用GPU存储器中的纹素进行采样,纹理硬件返回黑色。通过生成指示填充在PRT资源中的最好的LOD(或最低贴图级别)的常驻图,克服了这个缺点。例如,常驻图中的纹素可以指示PRT资源中的对应纹素常驻在贴图的第3级(以及所有更高的级别/更低的LOD)。常驻图根据常驻图的维度对标准化纹理坐标空间进行均匀划分。例如,2x2的常驻图将标准化(u,v)纹理坐标空间均匀划分为四个纹素,其分别覆盖(u,v)范围(0.0..0.5,0.0..0.5)、(0.5..1.0,0.0..0.5)、(0.0..0.5,0.5..1.0)和(0.5..1.0,0.5..1.0)。因此,取决于PRT资源在贴图的采样级别处的维度,常驻图的单个纹素切出包括在PRT资源的不同贴图级别处的不同数量的纹素的图块。

着色器(或对应的应用程序)使用采样操作对PRT资源进行采样,所述PRT资源包括指示标准化(u,v)纹理坐标空间的采样位置的标准化(u,v)坐标。使用一个或多个贴图级别的PRT资源的维度将标准化坐标转换为纹素坐标。例如,如果请求的贴图级别具有8x8纹素的维度,则通过乘以(8-1)=7将标准化u-坐标转换为纹素坐标,并且通过乘以(8-1)=7将标准化v-坐标转换为纹素坐标。然后,将纹素坐标转换为纹素数据内的地址,并且使用所述地址来提取纹素数据。然而,如上面所讨论的,并非所有纹素都一定常驻在PRT资源的所有级别。为了防止纹理硬件响应于访问非常驻纹素的请求而返回黑色纹素,对常驻图进行采样以识别PRT资源的最好的填充贴图级别。PRT资源的后续采样被钳制于该LOD,使得当应用程序尝试访问在贴图的较低级别/较高LOD下的非常驻纹素时,返回纹素值而不是黑色。在一些情况下,坐标转换包括在标准化纹理坐标空间中生成附加位置的步骤,所述附加位置随后被转换为纹素空间中的纹素位置。在某些情况下,诸如各向异性纹理过滤,生成附加位置和对应的纹素位置需要了解纹素空间中的PRT资源的维度。

对于PRT资源和常驻图而言,必须一致地执行标准化(u,v)坐标至纹素坐标的转换。由于不正确的坐标转换而导致不正确地识别常驻图中的纹素可能会由于在样本位置处存在的错误计算的最低贴图级别/最高LOD而导致PRT缺失。然后,着色器可能尝试访问在较低贴图级别/较高LOD下的非常驻纹素,这可能会由于采样操作返回黑色而导致不想要的视觉伪影。基于常驻图的维度执行在标准化(u,v)坐标和常驻图中的纹素坐标之间的坐标转换。基于PRT资源的所访问的贴图级别的维度执行用于PRT资源的标准化坐标和纹素坐标之间的坐标转换。因此,纹理硬件必须知道常驻图和PRT资源的维度,以确保常驻图中的采样纹素被正确地映射到将在PRT资源采样操作期间被访问的纹素。因此,需要将PRT资源的维度和常驻图的维度传送到纹理硬件,从而确保采样常驻图的过程可以重现采样原始PRT资源的过程。

纹理描述符用于通过将信息编码为位的有限集合来将维度和其他属性传送到纹理硬件。在纹理描述符中传送的属性的示例包括指向纹理的指针、PRT资源的维度、数据编码格式、每个纹素的字节数量、压缩比、压缩类型等。纹理描述符的大小通常与机器的字大小对准,例如,纹理描述符可以包括256位,其与32位字或64位字对准,这取决于机器的类型。修改纹理描述符以除了常驻图的维度之外传送PRT资源的明确维度将需要大幅增加纹理描述符的大小,这将需要显著改变纹理流水线,包括对从着色器至纹理硬件的请求路径以及接收纹理描述符的任何其他硬件的修改。例如,常规纹理描述符表示使用16位的常驻图的一个维度并且纹理通常包括三个维度,总共48位。因此,增加纹理描述符的大小并不是将常驻图的维度传送到纹理硬件的实用方法。

图1至图8公开了通过约束常驻图的维度以对应于部分常驻纹理(PRT)资源的分层表示的级别的维度来减少并入纹理描述符中以指示常驻图维度的信息的量的技术的实施方案。在一些情况下,分层表示是贴图。常驻图维度是基于常驻图的级别和参考级别(诸如PRT资源的最高级别)之间的贴图空间中的距离(或偏移)确定的。纹理描述符包括表示PRT资源的维度、参考级别和常驻图的级别之间的偏移以及指向常驻图的地址的信息。偏移指示在参考级别和常驻图的级别之间的多个级别。在参考级别和常驻图的级别之间的级别的数量指示参考级别和常驻图的级别的维度的比值。在一些实施方案中,分层表示中级别的(u,v)维度各自与分层表示的相邻级别中的对应维度相差两倍。参考级别和常驻图的级别之间的两个级别的偏移因此将指示参考级别和常驻图的级别的(u,v)维度相差四倍。因此,使用参考级别的维度以及由偏移所指示的参考级别与常驻图的级别的维度的比值来确定常驻图的维度。

响应于接收到对PRT资源进行采样的请求,通过使用根据偏移确定的常驻图的维度将请求中的标准化坐标转换为常驻图中的纹素坐标来确定常驻图中的采样位置。因此,在需要了解这两组维度的情况下,可以从了解PRT资源维度和常驻图的偏移而方便地得出PRT资源维度和常驻图维度两者。采样位置的纹素坐标用于访问纹素,并且纹素的值指示常驻于PRT资源的一个或多个对应的纹素中的最低贴图级别/最高细节级别(LOD)。PRT资源中的采样位置是通过基于在纹理描述符中指示的PRT资源的贴图级别的维度将标准化坐标映射到PRT资源中的纹素坐标来确定的。PRT资源中的纹素坐标用于访问PRT资源的贴图级别中的纹素。对PRT资源的纹素的访问被钳制于由常驻图的对应纹素中的值所指示的LOD。在一些实施方案中,偏移信息被并入纹理描述符的先前未使用的位中,使得纹理描述符的大小保持相同。

图1是根据一些实施方案的包括用于创建旨在输出到显示器110的视觉图像的图形处理单元(GPU)105的处理系统100的框图。处理系统100包括存储器115。存储器115的一些实施方案被实现为动态随机存取存储器(DRAM)。然而,存储器115也可使用包括静态随机存取存储器(SRAM)、非易失性RAM等的其他类型的存储器来实现。在所示的实施方案中,GPU105通过总线120与存储器115通信。然而,GPU 105的一些实施方案通过直接连接或经由其他总线、桥、开关、路由器等与存储器115通信。GPU 105可执行存储在存储器115中的指令,并且GPU 105可将诸如所执行指令的结果的信息存储在存储器115中。例如,存储器115可存储将由GPU 105执行的来自程序代码的指令的副本125。GPU 105的一些实施方案包括可以独立地同时或并行执行指令的多个处理器核心(为清楚起见,未示出)。

处理系统100包括用于执行指令的中央处理单元(CPU)130。CPU 130的一些实施方案包括可以独立地同时或并行执行指令的多个处理器核心(为清楚起见,未示出)。CPU 130也连接到总线120,并且因此可以经由总线120与GPU 105和存储器115通信。CPU 130可以执行存储在存储器115中的诸如程序代码135的指令,并且CPU 130可以将诸如所执行指令的结果的信息存储在存储器115中。CPU 130还能够通过向GPU 105发出绘制调用来发起图形处理。绘制调用是由CPU 130生成并传输到GPU 105以指示GPU 105在帧中渲染对象(或对象的一部分)的命令。绘制调用的一些实施方案包括由GPU 105用来渲染对象或其一部分的限定纹理、状态、着色器、渲染对象、缓冲器等的信息。GPU 105渲染对象以产生像素值,所述像素值被提供给显示器110,该显示器110使用像素值来显示表示所渲染对象的图像。

输入/输出(I/O)引擎140处理与显示器110以及处理系统100的其他元件(例如键盘、鼠标、打印机、外部磁盘等)相关联的输入或输出操作。I/O引擎140联接到总线120,使得I/O引擎140能够与GPU 105、存储器115或CPU 130通信。在所示的实施方案中,I/O引擎140被配置为读取存储在外部存储介质145(诸如光盘(CD)、数字视频光盘(DVD)等)上的信息。

外部存储介质145存储表示用于实现诸如视频游戏的应用程序的程序代码的信息。外部存储介质145上的程序代码可以写入存储器115以形成将由GPU 105或CPU 130执行的指令的副本125。外部存储介质145还存储表示用于渲染图像以在显示器110上呈现的纹理的信息。存储在外部存储介质145上的纹理中的部分被写入存储器115,其将该信息存储为纹理信息150。虽然外部存储介质145在图1中被描绘为磁盘,但是外部存储介质145的一些实施方案被实现为服务器(或服务器云),其将信息下载或流式传输至处理系统100,例如,经由至处理系统100的有线或无线通信链路进行。

GPU 105实现了图形流水线(为了清楚起见未在图1中示出),其包括被配置为响应于绘制调用同时处理不同的图元或仓的多个级。GPU 105中的图形流水线的级可以同时处理由应用程序诸如视频游戏生成的不同图元。图元的处理包括将纹理映射到图元,例如,以提供附加细节。GPU 105从存储在存储器115中的纹理信息150或从与GPU 105相关联的本地存储器155访问纹理数据。纹理数据存储在位于存储器115或本地存储器155中的部分常驻纹理(PRT)资源中。PRT资源包括在纹理的分层表示的不同级别中的以不同细节级别(LOD)表示的纹理数据,诸如纹理的贴图表示。在GPU 105请求访问纹理数据之前,纹理数据不一定填充在PRT资源的级别中的所有纹素中。例如,纹理数据可能尚未从外部存储介质145写入存储器115或本地存储器155。又例如,CPU 130可能没有根据程序代码135中的指令程序化地生成纹理数据。

GPU 105(或在GPU 105上执行的着色器或应用程序)在请求从PRT资源访问纹理数据之前、同时或作为其一部分访问常驻图。常驻图中的信息用于确定所请求的纹理数据是否常驻于PRT资源中。如本文所讨论的,PRT资源将纹理数据表示为表示在不同LOD下的纹理的级别的分层集合,例如,作为贴图。因此,PRT资源的不同级别在纹素空间中具有不同维度。常驻图的一些实施方案被约束为具有对应于PRT资源的级别中的一个的维度。例如,常驻图可以表示为2x2的纹素阵列,其对应于还包括表示在较低LOD下的纹理的2x2的纹素阵列的PRT资源的级别。常驻图中的纹素包括指示PRT资源的最低级别(和最高LOD)的信息,其包括由常驻图的对应纹素所包含的常驻纹素。

用于访问PRT资源的来自GPU 105的请求包括指示纹理中的位置的标准化坐标(或与其相关联)。标准化坐标称为(u,v)坐标。GPU 105使用常驻图的维度将请求中的标准化坐标转换为常驻图中的纹素坐标。基于PRT资源的级别的维度,将标准化坐标转换为PRT资源的级别中的纹素坐标。执行转换,使得由常驻图中的纹素坐标指示的纹理位置与由PRT资源的一个或多个级别中的纹素坐标所指示的位置相同。因此,GPU 105能够访问指示(或可以用于得出)常驻图和PRT资源的级别两者的维度的信息。

纹理描述符包括PRT资源的级别中的一个的维度以及在PRT资源中的参考级别和与常驻图相关联的级别之间的偏移。纹理描述符的一些实施方案包括PRT资源的级别中的一个(诸如,具有纹理的最高LOD表示的级别)的维度。然后,基于在级别的维度之间的关系来确定PRT资源的其他级别的维度。例如,如果PRT资源被表示为贴图,PRT资源的连续级别的维度增加或减少两倍。纹理描述符还包括参考级别和与常驻图的维度相匹配的PRT资源的级别之间的偏移。在一些实施方案中,参考级别与确定PRT资源的维度和纹理描述符的级别,例如,具有纹理的最高LOD表示的级别相同。纹理描述符的一些实施方案包括参考级别和常驻图中的不同维度之间的多个偏移。例如,纹理描述符可以包括对应于常驻图的三个单独维度的三个不同的偏移。

GPU 105使用纹理描述符中的信息来使用PRT资源级别的维度将请求的标准化坐标转换为PRT资源的级别中的纹素坐标,以及使用包括在纹理描述符中的偏移将标准化坐标转换为常驻图中的纹素坐标。偏移用于使用参考级别的已知维度来确定常驻图的维度。在一些实施方案中,偏移指示参考级别和常驻图的级别之间的多个级别。随后,基于参考级别的已知维度和由参考级别和常驻图的级别之间的级别数量确定的维度的比值来确定常驻图的维度。处理器基于偏移将标准化坐标转换为常驻图中的纹素坐标,并且响应于请求,基于纹素坐标访问常驻图以确定由标准化坐标指示的纹理数量是否常驻于PRT资源中。

GPU 105使用常驻图中的纹素坐标来识别对应于PRT资源中所请求的访问位置的常驻图中的纹素。常驻图中纹素的值指示由常驻纹素填充的PRT资源的贴图表示中的最低级别/最高LOD。对PRT资源的访问请求被钳制于由常驻图中的纹素的值所指示的级别。例如,请求中指示的最低级别/最高LOD被约束为在与常驻图中的纹素中指示的最低级别/最高LOD相同或更高的级别(相同或更低的LOD)下。以这种方式钳制访问请求确保响应于访问请求而返回的信息是纹理的表示,而不是响应于尝试访问PRT资源中的非常驻纹素而返回的默认黑色纹素。

图2描绘了根据一些实施方案的能够处理高阶几何图元以按预定分辨率生成三维(3D)场景的光栅化图像的图形流水线200。图形流水线200的所示实施方案是根据DX11规范实现的。图形流水线200的其他实施方案根据其他应用程序编程接口(API),诸如Vulkan、Metal、DX12等来实现。图形流水线200在图1所示的GPU 105的一些实施方案中实现。图形流水线200具有对存储资源201,诸如用于实现缓冲器并存储顶点数据、纹理数据等的一个或多个存储器或高速缓存的层次结构。可以使用图1所示的存储器115的一些实施方案来实现存储资源201。

输入汇编器202被配置为从存储资源201访问用于限定表示场景模型的部分的对象的信息。可以在软件中实现的顶点着色器203在逻辑上接收图元的单个顶点作为输入并且输出单个顶点。着色器(诸如顶点着色器203)的一些实施方案实现大规模单指令多数据(SIMD)处理,使得可以同时处理多个顶点。图2所示的图形流水线200实现了统一着色器模型,使得图形流水线200中包括的所有着色器在共享的大规模SIMD计算单元上具有相同的执行平台。因此,使用在本文中称为统一着色器池204的资源的公共集合来实现着色器,包括顶点着色器203。统一着色器池204的一些实施方案使用图1所示的GPU105中的处理器来实现。

外壳着色器205对输入高阶贴片或用于限定输入贴片的控制点进行操作。外壳着色器205输出曲面细分因子和其他贴片数据。任选地,由外壳着色器205生成的图元可以提供给曲面细分器206。曲面细分器206从外壳着色器205接收对象(诸如贴片),并且生成标识对应于输入对象的图元的信息,例如,通过基于由外壳着色器205提供给曲面细分器106的曲面细分因子对输入对象进行曲面细分。曲面细分将较高阶输入图元(诸如,贴片)再分成表示更细细节级别的较低阶输出图元的集合,例如,如由指定通过曲面细分过程产生的图元的粒度的曲面细分因子所指示的。因此,场景模型可以由较少数量个较高阶图元表示(以节省存储器或带宽),并且可以通过对较高阶图元进行曲面细分来添加附加细节。

域着色器207输入域位置和(任选的)其他贴片数据。域着色器207对所提供信息进行操作,并且基于输入域位置和其他信息生成单个顶点以供输出。几何着色器208接收输入图元,并且输出由几何着色器208基于输入图元生成的多达四个图元。一个图元流被提供给光栅化器209,并且多达四个图元流可以合并到存储资源201中的缓冲器。光栅化器209执行着色操作和其他操作,诸如裁剪、视角划分、剪取和视口选择等。像素着色器210输入像素流并且响应于输入像素流而输出零或另一个像素流。输出合并器框211对从像素着色器210接收的像素执行混合、深度、模板或其他操作。

图形流水线200中的一些或所有着色器可以使用存储在存储资源201中的纹理数据来执行纹理映射。例如,像素着色器210可以从存储资源201读取纹理数据并且使用纹理数据来对一个或多个像素进行着色。然后,将着色的像素提供到显示器(诸如图1所示的显示器110)以呈现给用户。在所示的实施方案中,纹理数据存储在PRT资源215中,该PRT资源215以表示在不同LOD下的纹理数据的级别的层次结构存储纹理数据。例如,PRT资源215可以将纹理数据存储为贴图,其包括具有以每个维度两倍的方式从一个级别增加到另一个级别的维度。然而,在其他实施方案中使用其他级别结构,其具有在级别之间的维度的其他比值。并非在PRT资源215的所有级别下的所有纹素都是常驻的,即,包括代表纹理的有效数据。因此在常驻图(RM)220中指出了PRT资源215中的常驻纹素。如本文所讨论的,由着色器,诸如顶点着色器203、外壳着色器205、域着色器207、几何着色器208和像素着色器210提供的标准化坐标被转换为PRT资源215或常驻图220中的纹素坐标。使用纹理描述符(TD)225中的信息执行转换。纹理描述符225中的信息包括PRT资源215的级别的维度、在参考级别和常驻图220的级别之间的偏移、在存储资源201中的常驻图220的地址等。

图3是根据一些实施方案的在PRT资源的不同级别和标准化坐标空间之间的转换300、301的框图。由图1所示的处理系统100和图2所示的图形流水线200的一些实施方案执行转换。PRT资源包括表示在不同LOD下的纹理的级别的层次结构。PRT资源的第一级别305具有由第一级别305中的纹素的数量确定的第一维度310和第二维度315。例如,纹素空间中的维度310、315可以分别是64像素和64像素。PRT资源的第二级别318具有由第二级别318中的纹素的数量确定的第一维度320和第二维度325。例如,维度320、325可以分别是32像素和32像素。

着色器或在着色器上运行的应用程序通常提供请求以使用称为(u,v)坐标的标准化坐标来访问PRT资源。标准化坐标在u=0.0..1.0和v=0.0..1.0的范围内。基于维度310、315,例如,使用以下转换来执行在纹素坐标中的第一级别305和标准化坐标中的第一级别335之间的转换330:

U_纹素=U_标准化*(宽度-1)

V_纹素=V_标准化*(高度-1)

其中宽度是以纹素为单位测量的维度310并且高度是以纹素为单位测量的维度315。基于维度320、325执行在纹素坐标中的第二级别318和标准化坐标中的第二级别345之间的转换340,例如,在上述公式中用维度320替换宽度和用维度325替换高度。

图4是根据一些实施方案的在纹素空间中的常驻图405和标准化坐标空间之间的转换400的框图。由图1所示的处理系统100和图2所示的图形流水线200的一些实施方案执行转换。常驻图405具有由常驻图405中的纹素数量确定的第一维度410和第二维度415。例如,纹素空间中的维度410、415可以分别是2像素和2像素。如本文所讨论的,访问与常驻图405相关联的PRT资源的请求包括标准化坐标,其在u=0.0..1.0和v=0.0..1.0的范围内。基于维度410、415,例如,使用以下转换来执行在纹素坐标中的常驻图405和标准化坐标中的常驻图425之间的转换420:

U_纹素=U_标准化*(宽度-1)

V_纹素=V_标准化*(高度-1)

其中宽度是以纹素为单位测量的维度410并且高度是以纹素为单位测量的维度415。纹理硬件(诸如在图2所示的图形流水线200中实现的处理器)使用常驻图405和在不同级别(例如,图3所示的级别305、318)下的PRT资源的维度来确保在对PRT资源的访问请求中提供的标准化坐标指代在不同级别(例如,图3所示的级别305、318)下的PRT资源和常驻图405中的相同位置。如这里所讨论的,该信息是在纹理描述符中提供的。

图5是根据一些实施方案的纹理描述符500的框图。纹理描述符500表示图2所示的纹理描述符225的一些实施方案。纹理描述符500与使用纹理描述符的机器(诸如图1所示的GPU 105和图2所示的图形流水线200)的字大小对准。例如,纹理描述符500可以包括256位,其取决于机器的类型与32位字或64位字对准。

纹理描述符500包括表示PRT资源的级别的维度的信息505。信息505的一些实施方案使用16位表示PRT资源的级别的一个维度。如果纹理包括三个维度,信息505则使用共48位来表示PRT资源的级别的维度。在一些实施方案中,信息505表示纹理的最低级别/最高LOD表示的维度。

纹理描述符500包括指示与PRT资源相关联的常驻图的地址的信息510。例如,信息510可以指示图2所示的存储资源201中存储的常驻图220的地址。

纹理描述符500包括表示偏移的信息515,该偏移用于得出常驻图,诸如图2所示的常驻图220的维度。偏移用于基于参考级别,诸如PRT资源的最低级别(具有最高LOD)的维度得出常驻图的维度。在一些实施方案中,偏移指示参考级别和常驻图的级别之间的多个级别。在参考级别和常驻图的级别之间的级别的数量指示参考级别和常驻图的级别的维度的比值。因此,常驻图的维度是通过使参考级别的维度缩放或乘以由偏移所指示的比值而确定的。使用偏移表示常驻图的级别减少了纹理描述符500的大小。例如,如果PRT资源被存储为具有八个级别的贴图,则仅使用三位来表示偏移。

图6是根据一些实施方案的在PRT资源和常驻图605的级别之间的关系600的框图。常驻图605具有2个纹素乘以2个纹素的维度。常驻图605的纹素中的值指示PRT资源的最低级别(其对应于最高LOD),其包括映射到常驻图605中的对应纹素的常驻纹素的图块。图6所示的PRT资源的部分包括被赋予级别参考编号0的第一级别610、被赋予级别参考编号1的第二级别615、被赋予级别参考编号2的第三级别620以及被赋予级别参考编号3的第四级别625。级别610、615、620、625是在PRT资源的贴图表示中的级别,并且级别610、615、620、625的维度在后续级别中增加或减少两倍。例如,级别610具有8个纹素乘以8个纹素的维度并且下一个后续级别615具有4个纹素乘以4个纹素的维度。

如本文所讨论的,基于存储在纹理描述符中的信息转换常驻图605的维度确保常驻图605中的纹素的边界正确地映射到级别610、615、620、625中的对应区域。在所示实施方案中,常驻图605具有与PRT资源的级别620相同的维度,例如,2个纹素乘以2个纹素。因此,在用于在级别620下访问PRT资源的请求中的标准化坐标指代在级别620和常驻图605中的相同位置。如本文所讨论的转换维度确保标准化坐标也指代其他级别610、615、625中的相同位置。例如,常驻图605的转换版本630中的纹素对应于级别610中正确的纹素图块,常驻图605的转换版本635中的纹素对应于级别615中正确的纹素图块,并且常驻图605的转换版本640中的纹素对应于级别625中的正确的纹素图块。

级别610、615、620、625中交叉阴影纹素常驻在PRT资源中。在所示的实施方案中,对应于常驻图605的左上角(例如,纹素坐标0,0)的PRT资源中的纹素仅常驻在PRT资源的级别625处。因此,纹素(0,0)的值等于级别参考编号3。对应于常驻图605的右上角(例如,纹素坐标0,1)的PRT资源中的纹素常驻在PRT资源的级别610和更高级别/更低LOD处。因此,纹素(0,1)的值等于级别参考编号0。对应于常驻图605的左下角(例如,纹素坐标1,0)的PRT资源中的纹素常驻在PRT资源的级别615和更高级别/更低LOD处。因此,纹素(1,0)的值等于级别参考编号1。对应于常驻图605的右下角(例如,纹素坐标1,1)的PRT资源中的纹素常驻在PRT资源的级别615和更高级别/更低LOD处。因此,纹素(1,1)的值等于级别参考编号1。

图7是根据一些实施方案的生成和存储纹理描述符的方法700的流程图。方法700在图1所示的GPU 105和图2所示的图形流水线200的一些实施方案中实现。例如,可以使用在GPU 105中实现的驱动程序来生成纹理描述符。方法700用于生成图5所示的纹理描述符500的一些实施方案。纹理描述符包括限定表示在不同LOD下的纹理的PRT资源的级别的层次结构中的级别的维度的信息。纹理描述符还与用于PRT资源的常驻图相关联。

在框705,驱动程序确定用于确定针对常驻图的级别的偏移,其被约束为具有对应于PRT资源的级别中的一个的纹素维度。在一些实施方案中,参考级别是PRT资源的级别的层次结构中的最低级别/最高LOD。参考级别可用于驱动程序,例如,通过将指示参考级别的值存储在一个或多个寄存器、存储器位置、缓冲器等中。

在框710,驱动程序确定常驻图的级别。指示常驻图的级别的信息可用于驱动程序,例如,作为存储在一个或多个寄存器、存储器位置、缓冲器等中的值。

在框715,驱动程序确定在参考级别和常驻图的级别之间的偏移。偏移的一些实施方案指示在参考级别和常驻图的级别之间的多个级别。例如,如果参考级别是纹理的贴图表示的级别0并且常驻图的级别对应于纹理的贴图表示的级别3,偏移的值则为3。

在框720,驱动程序生成纹理描述符,其包括PRT资源的级别的维度以及表示相对于参考级别的常驻图的级别的维度的偏移。表示偏移所需的位数远小于直接表示常驻图的级别的维度所需的位数。例如,如果常驻图的级别的一个维度用16位表示并且纹理包括三个维度,则共需要48位来表示常驻图的级别的维度。与此相反,如果PRT资源的分层表示中的级别数为八,则仅需要三位来表示常驻图的级别的可能偏移。在一些实施方案中,驱动程序包括表示常驻图至纹理描述符的地址的信息,以及包括指向纹理的指针、PRT资源的维度、数据编码格式、每个纹素的字节数、压缩比、压缩类型等的附加信息。

在框725,驱动程序将纹理描述符存储在存储器位置中,访问PRT资源和常驻图的着色器或应用程序可访问该存储器位置。例如,纹理描述符可以存储在图1所示的存储器115或图2所示的存储资源201中。

图8是根据一些实施方案的生成和存储纹理描述符的方法800的流程图。方法800是由纹理硬件,诸如在图1所示的GPU 105的一些实施方案中的电路和图2所示的图形流水线200实现的。

在框805,纹理硬件接收访问PRT资源的一个或多个级别的请求。请求包括标准化坐标(或与其相关联),标准化坐标指示由PRT资源的一个或多个级别所表示的纹理中的位置。

在框810,纹理硬件访问与PRT资源相关联的纹理描述符和对应的常驻图。纹理描述符包括限定PRT资源的级别的维度的信息以及用于确定常驻图的级别的偏移。

在框815,纹理硬件基于偏移确定常驻图的维度。在一些实施方案中,偏移指示在常驻图的级别和参考级别之间的多个级别。级别的数量指示常驻图的维度与参考级别的维度的比值。因此,纹理硬件通过使参考级别的维度缩放(或乘以)由偏移所指示的比值来确定常驻图的维度。在一些实施方案中,针对多个不同的常驻图维度存在单独的偏移(例如,三个偏移),并且纹理硬件通过将单独的偏移应用于参考级别来确定常驻图的维度。

在框820,纹理硬件使用常驻图的维度将源于请求的标准化坐标转换为常驻图中的纹素坐标。在一些实施方案中,如图4所示执行转换。

在框825,纹理硬件使用纹素坐标访问常驻图。例如,纹理硬件基于从请求中的标准化坐标转换而来的纹素坐标来识别常驻图中的纹素。纹素包括指示PRT资源中最低级别/最高LOD的信息,该资源包括表示纹理的常驻纹素。在一些实施方案中,纹素中的信息指示贴图的最低级别,其包括用于由常驻图中的纹素的边界围绕的PRT资源中的纹理的部分的常驻纹素。

在框830,访问请求被钳制于在常驻图的纹素中所指示的PRT资源级别。在一些实施方案中,通过将访问请求约束为仅访问与在常驻图的纹素中所指示的级别相同或更高(在更低的LOD下)的PRT资源的级别来将访问请求钳制于一个级别。然后,将请求提交给PRT资源。钳制所述请求确保所述请求正在访问常驻的PRT资源的一部分,使得PRT资源返回代表在所请求位置处的纹理的信息,而不是返回用于非常驻纹素的默认黑色值。

如本文所述,在一些实施方案中,一种方法包括:在处理器处接收访问部分常驻纹理(PRT)资源的多个级别中的至少一个的请求,其中所述多个级别表示不同细节级别(LOD)下的纹理,其中所述请求包括指示所述纹理中的位置的标准化坐标;在所述处理器处访问纹理描述符,所述纹理描述符包括表示所述多个级别中的第一级别的维度以及参考级别和所述多个级别中的至少一个第二级别之间的至少一个偏移的信息,所述至少一个第二级别与指示常驻在所述PRT资源中的纹素的至少一个常驻图相关联;基于所述至少一个偏移将所述标准化坐标转换为所述至少一个常驻图中的纹素坐标;以及响应于所述请求,在所述处理器处基于所述纹素坐标访问所述至少一个常驻图以确定由所述标准化坐标指示的纹理数据是否常驻在所述PRT资源中。在一个方面,所述第一级别对应于所述多个级别中在所述多个级别中具有最高LOD的一个,并且其中所述参考级别对应于所述第一级别。在另一方面,所述纹理描述符包括表示所述参考级别和与多个常驻图相关联的多个第二级别之间的多个偏移的信息。

在一个方面,所述至少一个偏移指示所述至少一个第二级别和所述参考级别之间的多个级别。在另一方面,将所述标准化坐标转换为所述纹素坐标包括根据基于所述至少一个第二级别和所述参考级别之间的级别数量的所述至少一个常驻图的维度与所述参考级别的维度的比值确定所述至少一个常驻图的维度。在又一方面,将所述标准化坐标转换为所述纹素坐标包括基于所述至少一个常驻图的所述维度将所述标准化坐标转换为所述纹素坐标。在又一方面,所述方法包括:基于所述多个级别中的所述第一级别的所述维度将所述标准化坐标转换为所述PRT资源的所述多个级别中的所述至少一个中的纹素坐标,其中所述至少一个常驻图中的所述纹素坐标指示与所述PRT资源的所述多个级别中的所述至少一个中的所述纹素坐标相同的位置。

在一个方面,所述方法包括:基于所述至少一个常驻图中的所述纹素坐标识别所述至少一个常驻图中的纹素;以及访问指示对应于所述至少一个常驻图中的所述纹素的常驻在所述PRT的图块中的最高LOD的信息。在另一方面,所述方法包括:响应于所述请求,接收具有小于或等于常驻在所述图块中的所述最高LOD的LOD的纹理数据。

在一些实施方案中,一种设备包括:存储器,所述存储器被配置为存储至少一个常驻图和纹理描述符,其中所述至少一个常驻图指示表示纹理的部分常驻纹理(PRT)资源中的纹素是否常驻于所述PRT资源中,并且其中所述纹理描述符包括表示多个级别中的第一级别的维度以及参考级别和所述多个级别中的至少一个第二级别之间的至少一个偏移的信息,所述至少一个第二级别与所述至少一个常驻图相关联;以及处理器,所述处理器被配置为接收访问所述PRT资源的所述多个级别中的至少一个的请求,其中所述请求包括指示所述纹理中的位置的标准化坐标,并且其中所述处理器被配置为基于所述至少一个偏移将所述标准化坐标转换为所述至少一个常驻图中的纹素坐标,并且基于所述纹素坐标访问所述至少一个常驻图以确定由所述标准化坐标指示的纹理数据是否常驻在所述PRT资源中。在一个方面,所述第一级别对应于所述多个级别中在所述多个级别中具有最高LOD的一个,并且其中所述参考级别对应于所述第一级别。在另一方面,所述纹理描述符包括表示所述参考级别和与多个常驻图相关联的多个第二级别之间的多个偏移的信息。

在一个方面,所述至少一个偏移指示所述至少一个第二级别和所述参考级别之间的多个级别。在另一方面,所述处理器被配置为根据基于所述至少一个第二级别和所述参考级别之间的级别数量的所述至少一个常驻图的维度与所述参考级别的维度的比值确定所述至少一个常驻图的所述维度。在又一方面,所述处理器被配置为基于所述至少一个常驻图的所述维度将所述标准化坐标转换为所述纹素坐标。在另一方面,所述处理器被配置为基于所述多个级别中的所述第一级别的所述维度将所述标准化坐标转换为所述PRT资源的所述多个级别中的所述至少一个中的纹素坐标,其中所述至少一个常驻图中的所述纹素坐标指示与所述PRT资源的所述多个级别中的所述至少一个中的所述纹素坐标相同的位置。

在又一方面,所述处理器被配置为基于所述至少一个常驻图中的所述纹素坐标识别所述至少一个常驻图中的纹素并且访问指示对应于所述至少一个常驻图中的所述纹素的常驻在所述PRT的图块中的最高LOD的信息。在另一方面,所述处理器被配置为响应于所述请求,接收具有小于或等于常驻在所述图块中的所述最高LOD的LOD的纹理数据。

在一些实施方案中,一种方法包括:在处理器处生成包括多个第一纹素的至少一个常驻图,所述多个第一纹素包括指示在部分常驻纹理(PRT)资源的多个级别中的第一级别的值,其中所述多个级别表示不同细节级别(LOD)下的纹理,其中所述第一级别指示所述PRT资源的所述多个级别中的哪些级别常驻在与所述处理器相关联的存储器中,并且其中所述至少一个常驻图的维度对应于所述多个级别中的至少一个第二级别的维度;在所述处理器处确定所述至少一个第二级别和所述多个级别中的参考级别之间的偏移;以及从所述处理器向所述存储器存储纹理描述符,所述纹理描述符包括表示所述多个级别中的第三级别的维度和所述至少一个偏移的信息。在一个方面,所述纹理描述符包括表示所述参考级别和与多个常驻图相关联的多个第二级别之间的多个偏移的信息,其中所述至少一个偏移指示所述至少一个第二级别和所述参考级别之间的多个级别,其中所述第三级别对应于所述多个级别中在所述多个级别中具有最高LOD的一个,并且其中所述参考级别对应于所述第三级别。

计算机可读存储介质可以包括在使用期间可由计算机系统访问以将指令和/或数据提供到计算机系统的任何非暂时性存储介质或者非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)或基于微机电系统(MEMS)的存储介质。计算机可读介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可存取存储装置(NAS))。

在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其它方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可以包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储装置、例如闪存存储器的固态存储装置、高速缓存、随机存取存储器(RAM)或其它一个或多个非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以呈现源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其它方式执行的其它指令格式。

应注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分可能是不需要的,并且可以执行一个或多个其它活动,或者可以包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考具体实施方案描述了概念。然而,本领域中的普通技术人员会了解,可在不背离所附权利要求书中所阐述的本公开范围的情况下,做出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。

上文已经参照具体实施方案描述了益处、其它优点以及问题的解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案只是说明性的,因为所公开的主题可以按受益于本文教义的本领域的技术人员显而易知的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所示的构造或设计的细节。因此,明显以上所公开的特定实施方案可更改或修改,并且所有此类变化形式被认为在所公开的主题的范围内。因此,本文所寻求的保护如所附权利要求书中所阐述。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号