【问题标题】:xamarin no hardware acceleration when deployin to devicexamarin 部署到设备时没有硬件加速
【发布时间】:2018-09-27 21:34:41
【问题描述】:

我现在正在开发一个 xamarin 表单应用程序,但我在硬件加速方面遇到了一些问题。

具体来说,在android模拟器中,硬件加速是有效的,即

System.Numerics.Vector.IsHardwareAccelerated

返回真。

然而,在设备上,它返回 false,因此像 ImageSharp 这样的库非常慢。

我已经检查了构建设置,并且到处都检查了“优化代码”。我还在android项目的MainActivity.cs中添加了HardwareAccelerated = true,但这并没有改变任何东西。

有人可以帮忙吗?

编辑:

模拟器在 api 级别 25 (android 7.1) 上运行,在模拟器中它使用调试配置。

该设备运行的是 android 8.1,api 级别 27,并且根本只发布构建工作。

编辑:

根据@SushiHangover 的说法,对于在 Mono 中实现的 arm 平台,System.Numerics.Vector 没有硬件加速支持。 另外,请参见此处:https://github.com/SixLabors/ImageSharp/issues/94

干杯,约翰内斯

【问题讨论】:

    标签: c# android xamarin xamarin.forms hardware-acceleration


    【解决方案1】:

    我快速扫描了 Mono 的 mini-XXX.c 文件,mini-arm.cmini-arm64.c 没有实现任何 SIMD 版本。

    由于没有内在支持,Mono JIT'er 不会在支持的 ARM 设备上映射 SIMD (NEON) 函数。

    注意:只有 mini-amd64.cmini-x86.c 在 Mono Runtime/JIT 中对 SIMD (SSE) 具有 JIT 内在支持。

    注意:根据旧的 Mono 发行说明之一,通过 LLVM 进行 AOT 应该在任何受支持的平台上为您提供 SIMD 支持...(我还没有测试过)

    更新:我测试了llvm,在ARM平台上生成的libaot-System.Numerics.Vectors.dll.so没有硬件加速

    【讨论】:

    • 这意味着我无法在 arm64 上为 System.Numerics.Vector 获得任何硬件加速?那么,你知道没有硬件加速就足够快的图片库吗?在 ImageSharp 中不加速调整图像大小大约需要 10 秒
    • @jaidmin 我没有检查 AOT/LLVM 代码是否对 SIMD/NEON 有任何特殊作用,但你可以试一试(你的 APK 会很大,但你会有快速的代码: -/ )根据旧的发行说明之一,通过 LLVM 进行 AOT 应该在任何受支持的平台上为您提供 SIMD 支持......(我没有测试过)
    • @jaidmin 在几个涉及具有近实时/交互式响应的大量图像编辑的 Android 项目(Java 和 Xamarin/C#)中,我们使用原生 C/C++ NDK 代码(与大多数主流安卓应用)
    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多