可编程渲染管线中有哪些功能是由硬件电路实现的?

2 replies [最后一篇]
ellaIMG
ellaIMG 的头像
Offline
Joined: 2015-11-14

1.除了统一着色器外,管线中的其他功能是由硬件电路实现的,还是由驱动编程实现的?
2.看过其他的资料,现在的GPU主要由流处理单元+光栅单元+纹理单元组成。那像裁剪,图元组装,混合这些功能都是由流处理单元编程实现的么?
3.纹理单元的作用是什么? (猜测:压缩纹理的解码,纹理线性插值?)

PowerVR

4.PowerVR中一个pipeline的执行流程是怎么样的?
是1个pipeline执行渲染管线中的一个子任务,如顶点着色或像素着色,多个pipe并发。
还是1个pipeline本身就完成了一整个渲染管线?

PowerVR

ellaIMG
ellaIMG 的头像
Offline
Joined: 2015-11-14
可编程渲染管线中有哪些功能是由硬件电路实现的?

网友 Xinzhao 回复该帖子

图形渲染管线是提供给软件开发者和硬件设计者之间的一个抽象。事实上,没有哪个部分必须用硬件电路实现。这个管线只是说明了graphic pipeline各个阶段的功能,然而并没有规定哪些东西必须由硬件电路实现。具体到硬件电路究竟实现了哪些部分,这个就应该参考各个具体型号的GPU了。不过总的来说,一般情况下,对于比较复杂的部分,会使用驱动模拟。对于功能相对简单,同时是瓶颈,并行量大的部分,则会采用硬件电路实现。

裁剪、图元混合等,也是要看GPU而定的。有些架构比较激进的,全部采用Unified结构,没有为这些Fix Function部分提供硬件电路,那么就只能在shader里边模拟了。而有一些相对传统的,仍然会有FF的硬件。不过总的趋势肯定是大一统的,将来只有Unified Shader组成的阵列,到那个时候,GPU就是新的计算核心,graphic只是它的一个功能而已。

纹理单元的作用就是实现纹理解压,例如BC1-BC7,ASTC等。这些纹理格式的特点是压缩很难做的很好,但是解压起来可是又快又容易。纹理单元的主要功能就是负责解压的。至于你说的纹理线性插值,其实就是纹理解压的一部分,你可以看看BC1-BC7和ASTC的规范就清楚了。

ellaIMG
ellaIMG 的头像
Offline
Joined: 2015-11-14
可编程渲染管线中有哪些功能是由硬件电路实现的?

网友 空明流转 回复该帖子

1. 软件和硬件并没有那么泾渭分明。如果类比做代码,硬件就相当于将一些函数什么的都展开成语句执行;软件就相当于把可以共用的ALU/FPU/其他逻辑电路硬件封装成“函数”,这些“函数”被控制电路所共享,然后由指令去指挥控制电路调用那些“电路”。所以“硬件”和“软件”的区别之一,就是复用程度。软件的复用更细(比如到指令一级),而硬件的复用要更大一些(功能级别的)。因为GPU也是要靠Micro Code和Data才能工作的,所以整个GPU就相当于是个大的、执行GPU Micro Code的CPU。当然,因为有流水线的存在,所以电路相当于是用面积来换吞吐量(速度),可以获得比一般软件更高的速度。

2. 个人设备上的GPU几乎已经没有非Unified的架构了,包括Mobile GPU。

3.逻辑上纹理单元一般包括 纹理存储(Cache或Buffer)、纹理寻址、地址计算、编解码、过滤 等一系列功能。可以认为 tex2d(x, y) 这条指令整个都是由纹理单元完成的。当然实际芯片中,纹理采样的每一个步骤,比如ddx/ddy的求解、纹理压缩格式的编解码器、双线/三线/各向异性过滤,都可能会随着设计的变化而变化,可以选择在纹理单元内实现、可以选择纹理单元外的独立单元、甚至可以选择软件实现。

--电子创新网--
粤ICP备12070055号