技术领域
下面的描述涉及纹理处理设备和方法。
背景技术:
图形处理单元(GPU)包括纹理处理器,以在三维(3D)图形渲染处理的像素着色处理期间减少计算量并且提高渲染速度。
纹理处理器执行产生进行纹理化所需的纹理的处理。纹理化是将预备图像添加到3D空间中形成的对象中的处理,并且是用于减少所执行计算的量的3D图形渲染中包括的操作中的一个操作。该预备图像被称为纹理。纹理可被压缩并且被预先存储在纹理处理器的外部存储器中。
纹理处理器在从外部存储器接收到通过以预定块为单位压缩构成纹理的纹理元素而得到的压缩后的纹理元素块并且处理压缩后的纹理元素块时,发送着色器核所需的纹理。
技术实现要素:
提供本发明内容来以简化的形式介绍下面在具体实施方式中进一步描述的对构思的选择。本发明内容不意在标识所要求保护的主题的关键特征或必要特征,也不意在用来帮助确定所要求保护的主题的范围。
根据一个总体方面,一种纹理处理器包括:纹理高速缓冲存储器,被配置为存储纹理;控制器,被配置为确定与被请求纹理对应的纹理地址,并且从纹理高速缓冲存储器读取存储的纹理中的与所述纹理地址对应的纹理;格式转换器,被配置为基于图形处理单元(GPU)需要的纹理精确度,将读取的纹理的格式转换成另一种格式;纹理过滤器,被配置为使用格式被转换成所述另一种格式的纹理来执行纹理过滤。
格式转换器可被配置为基于GPU需要的纹理精确度来确定读取的纹理的输出格式,并且以确定的输出格式来输出读取的纹理。
格式转换器可被配置为基于纹理过滤模式和GPU中使用的应用程序接口(API)的类型中的至少一个来确定GPU需要的纹理精确度,并且基于确定纹理精确度的结果来确定是否将要转换读取的纹理的格式。
格式转换器可被配置为当纹理过滤模式不是需要保持读取的纹理的格式的预设模式并且API的类型不是需要高精确度的预设类型时,将读取的纹理的格式转换成所述另一种格式。
格式转换器可被配置为通过进一步考虑GPU被请求执行的渲染的级别来确定GPU需要的纹理精确度。
格式转换器可被配置为当纹理过滤模式不是需要保持读取的纹理的格式的预设模式,API的类型不是需要高精确度的预设类型并且GPU被请求执行的渲染的级别小于或等于预定级别时,将读取的纹理的格式转换成所述另一种格式。
可由用户通过与GPU有联系的应用来确定GPU被请求执行的渲染的级别,或者由GPU基于GPU的硬件资源来确定GPU被请求执行的渲染的级别。
纹理过滤器可被配置为通过驱动对应于转换的格式的过滤器来执行纹理过滤。
纹理处理器还可包括:解压缩器,被配置为对读取的纹理进行解压缩。格式转换器可被配置为基于GPU需要的纹理精确度将解压缩的纹理的格式转换成所述另一种格式。
纹理处理器还可包括:解压缩器,被配置为对其格式被转换成所述另一种格式的读取的纹理进行解压缩。纹理过滤器被配置为使用解压缩的纹理来执行纹理过滤。
根据另一个总体方面,一种纹理处理方法包括:确定与被请求纹理对应的纹理地址;从纹理高速缓冲存储器读取与所述纹理地址对应的纹理;基于图形处理单元(GPU)需要的纹理精确度,将读取的纹理的格式转换成另一种格式;使用格式被转换成所述另一种格式的读取的纹理来执行纹理过滤。
转换读取的纹理的格式的步骤可包括:基于GPU需要的纹理精确度来确定读取的纹理的输出格式;以确定的输出格式来输出读取的纹理。
确定纹理的输出格式的步骤可包括:基于纹理过滤模式和GPU中使用的应用程序接口(API)的类型中的至少一个来确定GPU需要的纹理精确度;基于确定纹理精确度的结果来确定是否要转换读取的纹理的格式。
确定是否要转换读取的纹理的格式的步骤可包括:当纹理过滤模式不是需要保持读取的纹理的格式的预设模式并且API的类型不是需要高精确度的预设类型时,将读取的纹理的格式转换成所述另一种格式。
确定纹理精确度的步骤可包括:通过进一步考虑GPU被请求执行的渲染的级别来确定GPU需要的纹理精确度。
确定是否要转换读取的纹理的格式的步骤可包括:当纹理过滤模式不是需要保持读取的纹理的格式的预设模式,API的类型不是需要高精确度的预设类型并且GPU被请求执行的渲染的级别小于或等于预定级别时,将读取的纹理的格式转换成所述另一种格式。
执行纹理过滤的步骤可包括:通过驱动对应于转换的格式的过滤器来执行纹理过滤。
所述纹理处理方法还可包括:对读取的纹理进行解压缩。转换读取的纹理的格式的步骤可包括:基于GPU需要的纹理精确度来转换解压缩的纹理的格式。
所述纹理处理方法还可包括:对格式被转换的读取的纹理进行解压缩。执行纹理过滤的步骤可包括:使用解压缩的纹理来执行纹理过滤。
根据另一个总体方面,一种非暂态计算机可读记录介质包括:能进行操作以致使计算机执行所述纹理处理方法的程序指令。
根据另一个总体方面,一种纹理处理器包括:控制器,被配置为响应于纹理请求从存储的纹理中读取纹理;格式转换器,被配置为基于图形处理单元(GPU)需要的纹理精确度,确定是否要将读取的纹理转换成具有与读取的纹理不同的格式的转换的纹理;纹理过滤器,被配置为使用读取的纹理或转换的纹理来执行纹理过滤。
格式转换器可被配置为基于纹理过滤模式和GPU中使用的应用程序接口(API)的类型中的至少一个来确定GPU需要的纹理精确度。
格式转换器可被配置为当纹理过滤模式不是需要保持读取的纹理的格式的预设模式并且API的类型不是需要高精确度的预设类型时,将读取的纹理的格式转换成另一种格式。
格式转换器可被配置为通过进一步考虑GPU被请求执行的渲染的级别来确定GPU需要的纹理精确度。
格式转换器可被配置为当纹理过滤模式不是需要保持读取的纹理的格式的预设模式,API的类型不是需要高精确度的预设类型并且GPU被请求执行的渲染的级别小于或等于预定级别时,将读取的纹理转换成转换的纹理。
从以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1是根据实施例的图形处理单元(GPU)的框图。
图2是示出由GPU执行的处理三维(3D)图形的处理的示例的示图。
图3是用于说明根据实施例的纹理处理器的结构和操作的框图。
图4是用于说明纹理的格式的示例的示图。
图5是用于说明纹理过滤器的结构和操作的示例的示图。
图6是用于说明根据纹理格式的改变的纹理过滤器的结构和操作的示例的框图。
图7是根据另一实施例的纹理处理器的框图。
图8是根据另一实施例的纹理处理器的框图。
图9是根据实施例的纹理处理方法的流程图。
图10是根据实施例的纹理处理方法中的转换纹理的格式的处理的详细流程图。
图11是根据实施例的纹理处理方法中的转换纹理格式中包括的确定纹理的格式的处理的详细流程图。
图12是根据另一实施例的纹理处理方法中的转换纹理格式中包括的确定纹理的格式的处理的详细流程图。
图13是根据另一实施例的纹理处理方法中的转换纹理格式的处理的详细流程图。
图14是根据另一实施例的纹理处理方法中的转换纹理格式的处理的详细流程图。
贯穿附图和具体实施方式,相同的参考标号表示相同的元件。附图可不必成比例,并且为了清楚、说明和方便起见,可夸大附图中元件的相对尺寸、比例和绘示。
具体实施方式
提供以下详细描述来帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在此描述的方法、设备和/或系统的各种改变、修改及等同物对本领域的普通技术人员而言将是清楚的。在此描述的操作的顺序仅是示例,并不限于在此阐述的顺序,而是除了必需按特定顺序发生的操作之外,可如本领域普通技术人员将清楚的那样改变。此外,为了更加清楚和简明,可省略对本领域的普通技术人员公知的功能和构造的描述。
在此描述的特征可以以不同的形式被实施,而将不解释为受限于在此描述的示例。相反,提供在此描述的示例将使本公开将是彻底和完整的,并将把本公开的完整范围传达给本领域的普通技术人员。
图1是根据实施例的图形处理器或图形处理单元(GPU)100的框图。除了图1中示出的组件之外,GPU 100还可包括其他通用组件。
参照图1,GPU 100包括光栅器110、着色器核120、纹理处理器130、像素处理器140和图块缓冲器150。GPU 100经由总线300与GPU 100外部的存储器200交换数据。
GPU 100采用基于图块的渲染(TBR)方法。换句话讲,为了产生对应于1帧的3D图形,GPU 100处理具有使用光栅器110、着色器核120和像素处理器140将帧划分成的预定大小的图块,并且将处理结果存储在图块缓冲器150中。GPU 100可通过使用均包括光栅器110、着色器核120和像素处理器140的通道并行处理构成帧的所有图块。当处理对应于帧的图块时,GPU 100将存储在图块缓冲器150中的图块的处理结果发送到存储器200的帧缓冲器(未示出)。
光栅器110通过几何转换处理对顶点着色器产生的图元执行光栅化。
着色器核120从光栅器110接收光栅化的图元并且对光栅化的图元执行像素着色。着色器核120对图块(包括通过光栅化产生的图元的片元)执行像素着色,以确定图块的所有像素的颜色。着色器核120使用在像素着色期间使用纹理生成的像素值来产生逼真的3D图形。
着色器核120可包括像素着色器(未示出)。着色器核120还可包括顶点着色器或者可以是顶点着色器和像素着色器集成形成的集成着色器。当着色器核120用作顶点着色器时,着色器核120产生代表对象的图元并且将图元发送到光栅器110。
当着色器核120请求纹理处理器130提供对应于所需像素的像素值时,纹理处理器130向着色器核120提供通过处理预备纹理而生成的像素值。纹理被存储在纹理处理器130的内部空间或外部空间或GPU 100外部的存储器200中。当用于生成通过着色器核120请求的像素值的纹理没有被存储在纹理处理器130的内部空间中时,纹理处理器130接收并且使用存储在纹理处理器130的外部空间或存储器200中的纹理。
像素处理器140通过确定通过对与一个图块上的同一位置对应的像素执行诸如深度测试的处理而最终显示的像素值,以确定对应于这个图块的所有像素值。
图块缓冲器150存储从像素处理器140发送的对应于所述一个图块的所有像素值。当对构成1帧的所有图块完全执行图形处理时,被存储在图块缓冲器150中的处理图块的结果被发送到存储器200的帧缓冲器。
图2是示出由GPU 100执行的处理3D图形的处理的示图。
处理3D图形的处理可主要被划分成三个操作,即,几何转换、光栅化和像素着色,如以下参照图2更详细描述的。图2示出包括操作S11至S18的处理3D图形的处理。
在操作S11中,产生代表包括3D图形中的对象的顶点。
在操作S12中,将顶点着色。顶点着色器通过指明顶点的位置,将操作S11中产生的顶点着色。
在操作S13中,产生图元。术语“图元”包括使用至少一个顶点形成的点、线、多边形等。例如,图元可被表达为通过将顶点相互连接而形成的三角形。
在操作S14中,将图元光栅化。图元的光栅化指将图元中的每个图元划分成片元。片元是用于对图元执行图形处理的基本单位。由于图元只包含关于顶点的信息,因此在将图元光栅化期间产生顶点之间的片元,以对3D图形执行图形处理。
在操作S15中,将像素着色。通过将图元光栅化而产生的构成图元的片元可以是构成图块的像素。在本公开所属的技术领域中,在一些情况下,术语“片元”和“像素”可彼此互换地使用。例如,像素着色器还可被称为片元着色器。通常,构成图元的图形处理的基本单位可被称为片元,在像素着色之后的图形处理的基本单位可被称为像素。在进行像素着色中,确定像素的颜色。
在操作S16中,执行纹理化,以确定像素颜色。纹理化是使用作为预先预备的图像的纹理来确定像素颜色的处理。当计算并且确定像素颜色以表达真实世界的各种颜色和图案时,计算图形处理所需的数据的量和图形处理时间增加。因此,使用预备纹理来确定像素颜色。例如,可通过以下步骤来确定像素颜色:将对象表面的颜色以作为额外二维(2D)图像的纹理的形式存储,根据屏幕上的对象的位置、大小等增大/减小存储的纹理的大小或者使用具有各种分辨率的纹理来共混纹理元素值。
更具体地讲,在进行像素着色期间,为了更快速地处理3D图形,使用利用预备纹理而生成的像素值。在这种情况下,为了适应性地控制对象的大小,可预先准备具有不同分辨率的纹理并且可用这些纹理的组合来生成像素值。在这种情况下,具有不同分辨率的预备纹理被称为细化贴图。例如,为了生成具有预先准备的两个细化贴图的分辨率之间的中间分辨率的对象的像素值,可从这两个细化贴图中提取对应于对象的位置的纹理元素值,然后进行过滤。
在操作S17中,执行测试和混合。通过对与一个图块上的同一位置对应的像素执行诸如深度测试的处理来确定最终要显示的像素值,从而确定对应于这个图块的像素值。通过混合通过以上处理产生的图块来产生对应于一帧的3D图形。
在操作S18中,通过执行操作S11至S17而产生的帧被存储在帧缓冲器中,并且在显示装置(未示出)上显示存储在帧缓冲器中的帧。
图3是用于说明根据示例性实施例的纹理处理器130的结构和操作的框图。
参照图3,纹理处理器130位于着色器核120和存储器200之间,并且包括控制器131、纹理高速缓冲存储器133、格式转换器135和纹理过滤器137。纹理处理器130处理着色器核120请求的纹理并且将处理后的纹理发送到着色器核120。纹理处理器130通过接收与着色器核120要处理的像素对应的纹理的坐标,来从着色器核120接收提供纹理的请求。纹理处理器130从存储器200接收没有存储在纹理高速缓冲存储器133中的纹理。
控制器131执行控制纹理处理单元130所需的算术运算。控制器131控制纹理高速缓冲存储器133、格式转换器135和纹理过滤器137,以控制纹理处理器130的整体操作。
控制器131确定与请求纹理处理器130提供的纹理对应的纹理地址。换句话讲,控制器131将从着色器核120接收的纹理的坐标转换成纹理高速缓冲存储器133中的地址,对应于坐标的纹理被存储在纹理高速缓冲存储器133中。控制器131从纹理高速缓冲存储器133读取对应于纹理地址的纹理。
纹理高速缓冲存储器133存储纹理。更具体地讲,纹理高速缓冲存储器133存储从存储器200接收的一些纹理,以最小化由于纹理处理器130和存储器200之间的数据交换而导致的图形处理的延迟。纹理高速缓冲存储器133可以是与纹理处理器130分开安装的模块。例如,纹理高速缓冲存储器133可被实施为位于纹理处理器130和存储器200之间的单独模块。
格式转换器135基于图1的GPU 100所需的纹理的精确度,转换从纹理高速缓冲存储器133读取的纹理的格式。首先,以下将参照图4描述纹理的格式。
图4是用于说明纹理的格式的示图。纹理可具有各种类型的格式。例如,纹理可基本上具有诸如整数RGBA 8位格式、整数RGBA 16位格式、整数RGBA 32位格式、浮点RGBA 16位格式或浮点RGBA 32位格式或它们的组合。
如图4中所示,存储在纹理高速缓冲存储器133中的纹理可具有各种类型的格式。例如,在整数RGBA 8位格式中,R、G、B和A通道均具有8位整数。在浮点RGBA 32位格式中,R、G、B和A通道均具有32位浮点值。在浮点RGBA 32位格式的情况下,相比于当使用整数RGBA 8位格式时,可用更高的精度执行图形处理,但功耗会高并且执行图形处理会花费大量的时间。因此,GPU 100的性能(例如,GPU 100执行的渲染的质量或速度)会受纹理格式的影响。如以下将详细描述的,纹理的格式与纹理处理单元130的纹理过滤器137的操作密切相关。
返回参照图3,格式转换器135基于GPU 100所需的纹理的精确度来确定纹理的格式。
格式转换器135可基于纹理过滤模式和GPU 100中使用的应用程序界面(API)的类型,确定GPU 100所需的纹理的精确度。另外,格式转换器135可基于纹理过滤模式、GPU 100中使用的API的类型和GPU 100被请求执行的渲染的级别中的至少一个,确定GPU 100所需的纹理的精确度。可从自着色器核120接收的纹理请求命令或从纹理处理器130中包括的图形状态(G-状态)存储器(未示出)中提取的图形状态信息,得到诸如纹理过滤模式、GPU 100中使用的API的类型和GPU 100被请求执行的渲染的级别的信息。格式转换器135基于CPU 100所需的纹理的精确度的确定结果,确定是否要转换纹理的格式。
例如,当纹理过滤模式不是需要保持纹理格式的预设模式并且API的类型不是需要高精确度的API的预设类型时,格式转换器135确定要转换纹理的格式。如果进一步考虑GPU 100被请求执行的渲染的级别,则当纹理过滤模式不是需要保持纹理格式的预设模式,API的类型不是需要高精确度的API的预设类型并且GPU 100被请求执行的渲染的级别小于或等于预定级别时,格式转换器135确定要转换纹理的格式。
在这种情况下,点过滤模式可被预设为需要保持纹理的格式的纹理过滤模式。开放GL/GL或异构系统架构(HSA)可被预设为需要高精确度的一种API。
由用户通过与GPU 100有联系的应用来确定GPU 100被请求执行的渲染的级别。例如,当用户使用包括GPU 100的终端(未示出)时,用户可通过使用安装在终端中的应用来控制渲染的级别。用户可根据他或她的喜好来设置特定渲染质量级别或者根据所使用的应用的类型来不同地设置渲染的级别,然后请求GPU 100以用户设置的渲染级别执行渲染。另外,可由GPU 100基于其硬件资源来确定GPU 100被请求执行的渲染的级别。例如,如果硬件资源或剩余电池电力不足以处理大量线程,则GPU 100会将GPU 100被请求执行的渲染的级别降至预定级别或更低。
相反,当纹理过滤模式是需要保持纹理格式的模式(例如,点过滤模式)时,格式转换器135可确定要保持纹理的格式。另外,当GPU 100中使用的API是需要高精确度的API(例如,开放GL/CL或HSA)时,格式转换器135可确定要保持纹理的格式。即使纹理过滤模式不是需要保持纹理格式的预设模式并且API的类型不是需要高精确度的API的预设类型,当需要GPU 100执行的渲染的级别超过预定级别时,格式转换器135也可确定要保持纹理的格式。
格式转换器135以格式转换器135确定的纹理格式来输出从纹理高速缓冲存储器133读取的纹理。
纹理过滤器137使用纹理中包括的纹理元素值来执行纹理过滤。过滤纹理元素值指通过混合纹理元素值来得到对应于像素的颜色值。例如,可通过计算包括由纹理处理单元130接收的纹理的坐标的纹理空间的区域中包括的纹理元素值的平均值,来得到请求的纹理。通过由纹理过滤器137执行纹理过滤而得到的值被发送到着色器核120。由纹理过滤器137执行的纹理过滤模式可以是各种模式(例如,点过滤、双线性过滤、三线性过滤等)中的任意一种。
点过滤是以下模式:当确定将添加到待渲染的对象的纹理时,基于纹理的坐标,得到四个相邻纹理元素并且输出四个相邻纹理元素之中最近的纹理元素。双线性过滤是以下模式:当确定将添加到待渲染的对象的纹理时,基于纹理的坐标来得到四个相邻纹理元素并且对四个相邻纹理元素之间的每两个纹理元素进行插值;再次对每两个纹理元素的插值结果进行插值;输出最终的插值结果和每两个纹理元素的插值结果。三线性过滤是以下模式:基于纹理的坐标,通过使用从两个细化贴图中的每个细化贴图中选择的四个纹理元素,对这两个细化贴图中的每个细化贴图执行双线性过滤;对通过分别对这两个细化贴图执行双线性过滤而得到的值再次执行双线性过滤;输出对这些值执行双线性过滤的结果。
纹理过滤器137根据从格式转换器135输出的纹理格式来执行纹理过滤。当通过格式转换器135转换纹理格式时,纹理过滤器137使用其格式被转换的纹理来执行纹理过滤。在这种情况下,如以下将详细参照图5和图6描述的,纹理过滤器137通过驱动对应于格式被转换成的格式的过滤器来执行纹理过滤。
图5是用于说明纹理过滤器137的结构和操作的示图。如以上参照图4所述,纹理可基本上具有诸如整数RGBA 8位格式、整数RGBA 16位格式、整数RGBA 32位格式、浮点RGBA 16位格式或浮点RGBA 32位格式或它们的组合。
在纹理过滤器137中,为了对具有各种这些格式的纹理执行纹理过滤,可针对颜色分量中的每个颜色分量包括分别对应于这些格式的过滤器。
图5示出执行双线性过滤的纹理过滤模式和针对颜色分量中的每个颜色分量包括分别对应于各种纹理格式的过滤器。例如,在整数RGBA 8位格式的情况下,包括四个8位整数双线性过滤器。在浮点RGBA 16位格式的情况下,包括四个16位浮点双线性过滤器。另外,在双线性过滤的情况下,与颜色分量中的每个颜色分量对应的过滤器包括三个插值器。
图6是用于说明在纹理格式改变的情况下纹理过滤器137的结构和操作的框图。纹理过滤器137通过驱动与从格式转换器135输出的纹理的格式对应的过滤器来执行纹理过滤。当通过格式转换器135转换纹理的格式时,纹理过滤器137通过驱动与纹理被转换成的格式对应的过滤器来执行纹理过滤。当具有高精确度的纹理格式被转换成具有比纹理格式的高精确度低的精确度的纹理格式时,纹理过滤器137通过驱动与具有更低的精确度的格式对应的过滤器来执行纹理过滤。
例如,当纹理从整数RGBA 32位格式转换成整数RGBA 16位格式时,纹理过滤器137通过驱动与整数RGBA 16位格式对应的过滤器来执行纹理过滤。类似地,当纹理从浮点RGBA 32位格式转换成浮点RGBA 16位格式时,纹理过滤器137通过驱动与浮点RGBA 16位格式对应的过滤器来执行纹理过滤。结果,相比于在不转换纹理格式的情况下执行纹理过滤时,纹理过滤器137以更低的功耗执行纹理过滤并且使用更少的硬件资源。
如果当纹理格式是整数RGBA 32位格式和浮点RGBA 32位格式时格式转换器135被设置成分别将纹理格式转换成整数RGBA 16位格式和浮点RGBA 16位格式,则可从纹理过滤器137中去除与整数RGBA 32位格式和浮点RGBA 32位格式对应的过滤器,从而减少纹理处理器130中纹理过滤器137所占的面积。
图7是根据另一实施例的纹理处理器230的框图。
参照图7,纹理处理器230包括控制器131、纹理高速缓冲存储器133、解压缩器134、格式转换器135和纹理过滤器137。图7的纹理处理器230与图3的纹理处理器130的不同之处在于,纹理高速缓冲存储器133的输出被输入到解压缩器134并且解压缩器134的输出被输入到格式转换器135。将不再描述与图3的实施例的特征相同的图7的实施例的特征。
在处理3D图形期间压缩、存储并且发送纹理,以满足硬件资源和通信环境的要求。通常,以纹理元素的预定块(即,纹理元素块)为单位对构成纹理的纹理元素执行压缩。根据多个纹理压缩标准,确定待压缩的纹理元素块的代表值,计算将添加到代表纹理元素值的代表值的权重,并且存储代表值和权重。
当接收到从纹理高速缓冲存储器133读取的压缩纹理时,解压缩器134对压缩纹理进行解压缩。由于可以以预定块单元为单位压缩构成纹理的纹理元素,因此解压缩器134可接收压缩纹理元素块。解压缩器134可从压缩纹理元素块中提取用于压缩纹理元素块的压缩参数,并且基于压缩参数,执行插值以生成纹理元素值。通过以上处理,产生解压缩的纹理。解压缩器134将解压缩的纹理发送到格式转换器135。
格式转换器135基于GPU 100所需的纹理的精确度来转换解压缩的纹理的格式。
图8是根据另一实施例的纹理处理器330的框图。
参照图8,纹理处理器330包括控制器131、纹理高速缓冲存储器133、格式转换器135、解压缩器136和纹理过滤器137。图8的纹理处理器330与图3的纹理处理器130和图7的纹理处理器230的不同之处在于,纹理高速缓冲存储器133的输出被输入到格式转换器135,格式转换器135的输出被输入到解压缩器136,并且解压缩器136的输出被输入到纹理过滤器137。将不再描述与以上描述的图3的纹理处理器130和图7的纹理处理器230的部分相同的图8的纹理处理器330的部分。
当接收到从格式转换器135输出的纹理时,解压缩器136对纹理进行解压缩。当纹理的格式被格式转换器135转换时,解压缩器136接收格式被转换的纹理的压缩纹理元素块。解压缩器136对格式被转换的纹理进行解压缩。解压缩器136将解压缩的纹理发送到纹理过滤器137。
纹理过滤器137使用解压缩的纹理来执行纹理过滤。
当格式转换器135位于纹理高速缓冲存储器133的输出端并且将转换纹理的格式时,响应于从控制器131提供纹理的请求,可实现与当从纹理高速缓冲存储器133输出格式被转换的纹理时的效果相同的效果。
纹理高速缓冲存储器133可被实施为在空间上与纹理处理器330分开的独立模块。特别地,当格式转换器135位于纹理高速缓冲存储器133的输出端并且纹理高速缓冲存储器133和格式转换器135位于纹理处理器330和存储器200之间时,因为格式转换器135转换了纹理格式,所以纹理处理器330和纹理高速缓冲存储器133之间的通信量减小。
例如,当控制器131请求纹理高速缓冲存储器133提供具有整数RGBA32位格式的纹理时,位于纹理高速缓冲存储器133的输出端的格式转换器135将纹理格式转换成整数RGBA 16位格式并且输出纹理,从而纹理处理器330的其他组件和纹理高速缓冲存储器133之间的通信量减小。
图9是根据实施例的纹理处理方法的流程图。
在操作S910中,纹理处理器130/230/330确定对应于被请求纹理的纹理地址。
在操作S920中,纹理处理器130/230/330从纹理高速缓冲存储器133读取对应于纹理地址的纹理。
在操作S930中,纹理处理器130/230/330基于GPU 100需要的纹理的精确度来转换读取的纹理的格式,如以下将参照图10详细描述的。
图10是根据实施例的图9的纹理处理方法中的转换纹理的格式的详细流程图。
参照图10,在操作S1010中,纹理处理器130/230/330基于GPU 100需要的纹理的精确度来确定纹理的格式,如以下将参照图11和图12详细描述的。
图11是根据实施例的纹理处理方法中的转换纹理的格式中的确定纹理的格式的详细流程图。
参照图11,在操作S1110中,纹理处理器130/230/330接收关于纹理过滤模式和GPU 100中使用的API的类型的信息。诸如纹理过滤模式和GPU 100中使用的API的类型的信息可从纹理请求命令或从纹理处理器130/230/330中包括的G-状态存储器中提取的图形状态信息得到。
在操作S1120中,纹理处理器130/230/330确定纹理过滤模式是否是需要保持纹理格式的预设模式。在这种情况下,点过滤模式可被预设为需要保持纹理格式的纹理过滤模式。
当纹理过滤模式不是需要保持纹理格式的预设模式时,纹理处理器130/230/330执行操作S1130。当纹理过滤模式是需要保持纹理格式的预设模式时,纹理处理器130/230/330执行操作S1140。
在操作S1130中,纹理处理器130/230/330确定GPU 100中使用的API的类型是否是需要高精确度的API的预设类型。在这种情况下,开放GL/CL、HAS等可被预设为需要高精确度的API的类型。当GPU 100中使用的API的类型是需要高精确度纹理的API的预设类型时,纹理处理器130/230/330执行操作S1140。当GPU 100中使用的API的类型不是需要高精确度纹理的API的预设类型时,纹理处理器130/230/330执行操作S1150。
在操作S1140中,由于纹理过滤模式是需要保持纹理格式的预设模式或者GPU 100中使用的API的类型是需要高精确度纹理的API的预设类型,因此纹理处理器130/230/330确定要保持纹理格式。
在操作S1150中,由于纹理过滤模式不是需要保持纹理格式的预设模式并且GPU 100中使用的API的类型不是需要高精确度纹理的API的预设类型,因此纹理处理器130/230/330确定要转换纹理格式。
图12是根据另一实施例的纹理处理方法中的转换纹理的格式中包括的确定纹理的格式的处理的详细流程图。
在操作S1210中,纹理处理器130/230/330接收关于纹理过滤模式、GPU 100中使用的API的类型和GPU 100需要执行的渲染的级别的信息。诸如纹理过滤模式、GPU 100中使用的API的类型和GPU 100需要执行的渲染的级别的信息从纹理请求命令或从纹理处理器130/230/330中包括的G-状态存储器中提取的图形状态信息得到。
在操作S1220中,纹理处理器130/230/330确定纹理过滤模式是否是需要保持纹理格式的预设模式。在这种情况下,点过滤模式可被预设为需要保持纹理格式的纹理过滤模式。当纹理过滤模式不是需要保持纹理格式的预设模式时,纹理处理器130/230/330执行操作S1230。当纹理过滤模式是需要保持纹理格式的预设模式时,纹理处理器130/230/330执行操作S1250。
在操作S1230中,纹理处理器130/230/330确定GPU 100中使用的API的类型是否是需要高精确度的API的预设类型。在这种情况下,开放GL/CL、HAS等可被预设为需要高精确度的API的类型。当GPU 100中使用的API的类型是需要高精确度纹理的API的预设类型时,纹理处理器130/230/330执行操作S1250。当GPU 100中使用的API的类型不是需要高精确度纹理的API的预设类型时,纹理处理器130/230/330执行操作S1240。
在操作S1240中,纹理处理器130/230/330确定GPU需要执行的渲染的级别是否小于或等于预定别。在这种情况下,由用户通过与GPU 100有联系的应用来确定GPU 100需要执行的渲染的级别,或者由GPU 100基于GPU 100的硬件资源来确定GPU 100需要执行的渲染的级别。
在操作S1250中,由于纹理过滤模式是需要保持纹理格式的预设模式或者GPU 100中使用的API的类型是需要高精确度纹理的API的预设类型,因此纹理处理器130/230/330确定要保持纹理格式。当GPU 100需要执行的渲染的级别大于预定级别时,纹理处理器130/230/330确定要保持纹理格式。
在操作S1260中,由于纹理过滤模式不是需要保持纹理格式的预设模式,GPU 100中使用的API的类型不是需要高精确度纹理的API的预设类型并且GPU 100需要执行的渲染的级别小于或等于预定级别,因此纹理处理器130/230/330确定要转换纹理格式。
返回参照图10,在操作S1020中,纹理处理器130以操作S1010中确定的纹理的格式来输出从纹理高速缓冲存储器133读取的纹理。
另一方面,可基于在纹理处理器230或330中格式转换器135是位于纹理过滤器137的输入端还是位于纹理高速缓冲存储器133的输出端,根据图13或图14的详细流程图来执行纹理格式的转换。
图13是根据另一实施例的纹理处理方法中的转换纹理格式的详细流程图。更具体地讲,图13示出当格式转换器135位于处于纹理高速缓冲存储器133的输出端的解压缩器134和纹理过滤器137的输入端之间时转换纹理格式的处理。
在操作S1310中,纹理处理230对从纹理高速缓冲存储器133读取的压缩纹理进行解压缩。
在操作S1320中,纹理处理230基于GPU 100需要的纹理的精确度来确定解压缩的纹理的格式。
在操作S1330中,纹理处理230以确定格式来输出解压缩的纹理。
图14是根据另一实施例的纹理处理方法中的转换纹理格式的详细流程图。更具体地讲,图14示出当格式转换器135位于纹理高速缓冲存储器133的输出端并且纹理高速缓冲存储器133和格式转换器135位于纹理处理器330和存储器200之间时转换纹理格式的处理。
在操作S1410中,纹理处理器330基于GPU 100需要的纹理的精确度来确定纹理格式。
在操作S1420中,纹理处理器330以确定格式来输出纹理。因为转换了纹理格式,所以纹理处理器330和纹理高速缓冲存储器133之间的通信量会减小。
在操作S1430中,纹理处理器330对以确定格式输出并且被压缩的纹理进行解压缩。
返回参照图9,在操作S940中,纹理处理器130/230/330使用格式被转换的纹理来执行纹理过滤。如果没有转换纹理格式,则可使用格式被保持的纹理来执行纹理过滤。
执行在此相对于图2和图9至图14描述的操作的图1和图3至图8中示出的设备、单元、模块、装置和其他组件(例如,光栅器110、着色器核120、纹理处理器130、230和330、控制器131、纹理高速缓冲存储器133、解压缩器134和136、格式转换器135、纹理过滤器137、像素处理器140、图块缓冲器150和存储器200)是通过硬件组件实现的。硬件组件的示例包括控制器、传感器、发生器、驱动器和本领域的普通技术人员已知的任何其他电子组件。在一个示例中,硬件组件是用一个或多个处理器或计算机实现的。处理器或计算机是用一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或能够以限定方式响应于并且执行指令以实现期望结果的本领域的普通技术人员已知的任何其他装置或装置的组合)实现的。在一个示例中,处理器或计算机包括,或者连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用),以执行在此相对于图2和图9至图14描述的操作。硬件组件还响应于指令或软件的执行来访问、操纵、处理、创建并且存储数据。为了简便起见,单数术语“处理器”或“计算机”可用于描述在此描述的示例,但在其他示例中,使用多个处理器或计算机,或者处理器或计算机包括多个处理元件、或多种类型的处理元件、或这二者。在一个示例中,硬件组件包括多个处理器,并且在另一个示例中,硬件组件包括处理器和控制器。硬件组件具有不同处理构造中的任一个或多个,这些构造的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多进程、单指令多数据(SIMD)多进程、多指令单数据(MISD)多进程和多指令多数据(MIMD)多进程。
执行在此相对于图1和图3至图8描述的操作的图2和图9至图14中示出的方法是用处理器或计算机执行的,处理器或计算机如上所述执行用于执行在此描述的操作的指令或软件。
用于控制处理器或计算机以实现硬件组件并且执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或其任何组合,用于独立地或一齐地指示或构造处理器或计算机,使其像机器或专用计算机一样操作,执行如上所述的硬件组件和方法所执行的操作。在一个示例中,指令或软件包括由处理器或计算机直接执行的机器代码(诸如,编译器产生的机器代码)。在另一个示例中,指令或软件包括由处理器或计算机使用翻译器执行的较高级代码。本领域的普通技术编程人员可容易地基于附图中示出的框图和流程图和说明书中的对应描述来编写指令或软件,所述描述公开了用于执行如上所述的硬件组件和方法执行的操作的算法。
用于控制处理器或计算机来实现硬件组件并且执行如上所述方法的指令或软件和任何关联的数据、数据文件和数据结构被记录、存储、或固定在一个或多个非暂态计算机可读存储介质的里面或上面。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、闪存存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁-光数据存储装置、光学数据存储装置、硬盘、固态盘和本领域的普通技术人员已知的能够将指令或软件和任何关联的数据、数据文件和数据结构以非暂态方式存储并且将指令或软件和任何关联的数据、数据文件和数据结构提供到处理器或计算机使得处理器或计算机可执行指令的任何装置。在一个示例中,指令或软件和任何关联的数据、数据文件和数据结构遍布于联网计算机系统,使得由处理器或计算机以分布方式存储、访问和执行指令和软件和任何关联的数据、数据文件和数据结构。
虽然本公开包括具体示例,但本领域的普通技术人员将清楚,在不脱离权利要求书及其等同物的精神和范围的情况下,在这些示例中可进行形式和细节上的各种变化。在此描述的示例将被视为只是描述含义的,而不是出于限制目的。对每个示例中的特征或方面的描述将被视为可应用于其他示例中的类似特征或方面。如果所描述技术以不同次序执行,和/或如果所描述系统、构架、装置或电路中的组件以不同方式组合,和/或被其他组件或它们的等同物取代或补充,则可实现合适的结果。因此,本公开的范围不受具体实施方式限定,而是受权利要求书及其等同物限定,并且在权利要求书及其等同物的范围内的所有变形将被理解为被包括在本公开中。