PowerVR的底层级别GLSL优化

电子说

1.2w人已加入

描述

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分