FlexRender™(混合延迟和直接渲染模式)
QTI作为Adreno 3x,4x和5x的一部分推出了其新的FlexRender解决方案。 FlexRender是指GPU在间接渲染(合并或延迟渲染)和直接渲染到帧缓冲区之间切换的能力。直接渲染和延迟渲染模式均具有优势。 Adreno 3x,4x和5xGPU旨在通过以动态方式在两种模式之间切换来最大化性能。 GPU通过分析给定渲染目标的渲染并自动选择模式来工作。
基于图块的渲染
为了优化低功耗和内存带宽受限设备的渲染,Adreno GPU使用基于图块的渲染架构。这种渲染机制将场景帧缓冲区分成较小的矩形区域进行渲染。区域大小是自动确定的,因此可以使用GPU上的本地低延迟内存(称为GMEM)而不是使用带宽受限的总线到系统内存来最佳地呈现它们。
Adreno GPU的延迟模式渲染机制使用基于图块的渲染和实现,使用分箱方法创建在每个图块中处理的图元的分箱。
Adreno GPU将一帧划分为多个bin,并一次渲染一个。在渲染期间,它使用片上高性能GMEM(图形内存)来避免进入系统内存的成本。
在下图中,您将看到在图形基元上执行的两次遍历(合并和渲染)。在此示例中,将在帧缓冲区中渲染3个三角形。在(可见流)中可以看到将一个三角形装箱的装箱通过标记。此流存储到系统内存。
在“渲染通道”中,对于要渲染的每个图块,通过读取可见性流仅处理可见图元。通过将GMEM用作本地颜色和z缓冲区,可以渲染图元。磁贴的渲染完成后,GMEM颜色内容将发送回(已解析)到系统内存。对所有垃圾箱重复此过程。
应当注意,Vulkan的Renderpass功能非常有利于诸如Adreno之类的平铺架构,因为可以在GMEM中完成许多渲染过程,并且可以最大程度地减少昂贵的解析操作。
着色器支持
统一着色器架构
所有Adreno GPU均支持统一着色器模型,该模型允许在所有着色器类型(顶点和片段着色器)中使用一致的指令集。 用硬件来讲,AdrenoGPU具有支持片段和顶点着色器的计算单元,例如ALU。
Adreno 4x使用共享资源架构,该架构允许顶点着色器,像素着色器或片段着色器以及通用处理共享相同的ALU和获取资源。 着色器处理是在统一的着色器体系结构中完成的,如下图所示。
上图显示了顶点和像素以四个为一组的形式作为矢量或线程进行处理。当线程停滞时,可以重新分配着色器ALU。
在统一着色器体系结构中,顶点着色器和片段着色器没有单独的硬件,如下图所示。 这样可以提高像素和顶点负载平衡的灵活性。