我最近刚得到了Galaxy7.0.0的S7升级版,发现了一些奇怪的东西。
以前工作的ScriptIntrinsicBlur现在产生了部分透明的结果。无论是在SupportLibrary版本上还是在本地版本上。
我追踪到它依赖于模糊半径,一般来说,半径越大,结果就越不透明。
所以我在一张完全不透明的图片上对半径从0到25像素进行了扫描测试。
安卓仿真程序x86 API 24:
blurRad: 0.025 alpha: 254
...
blurRad: 25.0 alpha: 254因此,这为所有半径都创造了一些透明度,但并不明显。
Galaxy S7,API 24,Build: NRD90M.G930FXXU1DQAO:
blurRad: 0.025 alpha: 10
...
blurRad: 0.25 alpha: 110
...
blurRad: 1.0 alpha: 241为了完整起见,我使用API 24在arm64仿真器上运行了测试,它为所有半径生成完全不透明的结果。
结果与模糊位图的大小和内容无关(当然,只要源alpha是255 )。
另外,我注意到ScriptIntrinsicBlur比以前慢了8-10倍。即使在HTC上,我也可以用800 API模糊400x400px图像,而Galaxy S7 (API 24)只能达到90-100fps。
所以问题是:有人能复制这个吗?有解决办法吗?
发布于 2017-02-03 00:36:25
在我看来,GPU RenderScript驱动程序在S7上有问题。
您能否尝试使用以下命令:
adb shell setprop debug.rs.default-CPU-driver 1然后杀死你的应用程序并重新启动它。如果行为变得正常,我们确定GPU驱动程序有问题,至少对于某些输入图像是错误的。
如果是这样的话,就可以绕过GPU驱动程序,只有在代码找到API24 S7之后才能这样做:
CREATE_FLAG_LOW_LATENCY标志创建上下文。RenderScript.create(ctx, RenderScript.ContextType.NORMAL, CREATE_FLAG_LOW_LATENCY)RenderScript.forceCompat();之前调用RenderScript.create(ctx)发布于 2017-02-13 04:00:54
在Galaxy S7的驱动程序中有一个bug。这会影响带有马里GPU的S7手机。那些与Adreno GPU是不受影响的。将有最新情况。
https://stackoverflow.com/questions/41976829
复制相似问题