PowerVR的底层级别GLSL优化

作者:Lukasz Furmaniak

PowerVR SDK&Tools 2017 R2版本已经发布,现在是时候来看一下新版本所包含的新内容了。在这篇文章中,我们将仔细分析《PowerVR Low-Level GLSL Optimisation》这篇文档,它能够让我们充分了解PowerVR Rogue体系结构的每一项性能。

GLSL是OpenGL Shading Language的缩写,可以翻译为OpenGL着色语言,该语言是一种高级语言,通常与“上层”(高级)操作相关联,但它也可以进行一些底层的优化,很多时候这会被开发人员所忽略。

在PowerVR Rogue架构中,着色器的性能通常取决于执行一次着色所需的周期数。该架构提供了多种选项,用于配置如何通过流水线的方式在单个周期内执行USC ALU的多条指令,当然这还要取决于其硬件配置。例如,在一个周期内可以执行两条F16 SOP指令,也可以执行F32到F16的转换或者move / output / pack等指令。

或者,你可以在一个周期内执行FP32 Multiply-Add(MAD)指令以及FP32 / INT32 MAD / UNPACK指令,一个test(条件句)指令以及move/output/pack指令。为了更好利用USC核,数学表达式应该以MAD格式书写。

PowerVR的底层级别GLSL优化

优化PowerVR Rogue体系结构的另一个技巧就是利用修饰符,在某些特定的情况下,像abs(),neg()和clamp(...,0.0,1.0)这样的修饰符是闲置的。当用于操作的输入时,编译器会将abs()和neg()转换为闲置修饰符。另一方面,当用于操作的输出时,clamp(…, 0.0, 1.0)将会被转换成闲置修饰符。

得益于这些优化,您的应用程序不仅可以使用较少的功耗来运行,而且可以降低对硬件的要求。想了解更多的方法来优化您的应用程序吗?请下载PowerVR Low Level GLSL Optimisation(PowerVR 底层GLSL优化手册),并找到更多的方法来利用PowerVR Rogue体系结构!

原文链接: https://www.imgtec.com/blog/low-level-glsl-optimisation-for-powervr/

声明:本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利

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