我一直在寻找和尝试几天没有运气的东西。我有一个使用Snapdragon SoC的嵌入式系统。它运行Android 5.0并使用openGL ES 3.0。它不是手机,也没有显示器,但我可以使用Vysor Chrome扩展程序查看和使用Android GUI。
由于它不是手机而是在相当紧凑的物理封装中,我最终会做一些密集的编码/解码,我试图在负载下测试热输出和属性。我正在使用Snapdragon Profiler来监控CPU利用率和温度。
我已经能够成功加载CPU并对热输出有了一个很好的了解。我刚刚制作了一些测试代码,使用标准的Android SDK调用(使用CPU)将一堆位图编码为jpeg。
现在我想看看如果我做一些GPU密集型的东西会发生什么。我的想法是,如果我将GPU用于某些编码工作,那么事情就不会那么热,因为GPU可以更有效地处理某些类型的工作。
我一直在阅读,从我收集的内容中,我可以通过几种方式最终利用GPU。我可以使用一些库,如FFMPEG或Android的MediaCodec使用硬件加速的东西。我也可以使用openCV或RenderScript。
在我走下任何一条路径之前,我想让一些测试代码运行并分析硬件。
这是一种快速,简便的方法吗?我做了一些openGL ES着色器编程,但由于这不是真正的3D图形,我不确定我是否可以使用着色器来测试它。既然它是图形管道的一部分,openGL是否允许我在着色器中做一些GPU密集型的东西?或者,如果我开始在那里做一些沉重的东西,它会丢帧还是崩溃?如果我尝试着色器,我该怎么做才能加载GPU?只需很长一段时间的循环或其他什么?
如果着色器不是加载GPU的最佳方式,那么它是什么?我认为着色器是openGL ES中唯一可编程的部分。使用RenderScript可以在GPU上显式运行操作,还是框架只是自动确定如何运行代码?
最后,我应该探究哪些指标来确定GPU的使用情况?在我的分析器中,我有CPU利用率,但没有GPU利用率。我有以下GPU指标:
答案 0 :(得分:0)
但我可以使用Vysor Chrome扩展程序查看和使用Android GUI。
如果Chrome在平台上使用网络连接,并且不太关心正在渲染的内容,那么https://www.shadertoy.com/是通过WebGL运行一些复杂图形的快捷方式。< / p>
我可以使用一些库,例如FFMPEG或Android的MediaCodec使用硬件加速的东西。我也可以使用openCV或RenderScript。
FFMPEG和MediaCodec将采用硬件加速,但可能不在3D GPU上,而是单独的专用视频编码器/解码器。