xamarin нет аппаратного ускорения при развертывании на устройстве - PullRequest
0 голосов
/ 20 мая 2018

Я сейчас разрабатываю приложение для форм xamarin, и у меня есть некоторые проблемы с аппаратным ускорением.

В частности, в эмуляторе Android работает аппаратное ускорение, т.е.

System.Numerics.Vector.IsHardwareAccelerated

возвращает true.

На устройстве, однако, он возвращает false, и, таким образом, такие библиотеки, как ImageSharp, работают очень медленно.

Я уже проверил настройки сборки, и везде проверяется «Оптимизировать код».Также я добавил HardwareAccelerated = true в MainActivity.cs в проекте Android, но это ничего не меняет.

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ:

Эмуляторработает на уровне API 25 (Android 7.1), в эмуляторе он работает с отладочной конфигурацией.

Устройство работает на Android 8.1, API уровня 27, и только выпускает сборку там вообще.

РЕДАКТИРОВАТЬ:

Согласно @SushiHangover нет поддержки аппаратного ускорения для System.Numerics.Vector для вооруженных платформ, реализованных в Mono.Также см. Здесь: https://github.com/SixLabors/ImageSharp/issues/94

Приветствия, Йоханнес

1 Ответ

0 голосов
/ 20 мая 2018

Я сделал быстрое сканирование файлов Mono mini-XXX.c, а mini-arm.c и mini-arm64.c не реализуют никаких версий SIMD.

Поскольку встроенная поддержка отсутствует, Mono JIT'er не будет отображатьсяФункции SIMD (NEON) на поддерживаемых устройствах ARM.

Примечание. Только mini-amd64.c & mini-x86.c имеют встроенную поддержку JIT для SIMD (SSE) в Mono Runtime / JIT.

Примечание: Согласно одной из старых заметок о выпуске Mono, AOT через LLVM должен обеспечивать поддержку SIMD на любой поддерживаемой платформе ... (Я не проверял это)

Обновление: я протестировал llvm, и сгенерированный libaot-System.Numerics.Vectors.dll.so на платформах ARM не ускоряется аппаратно

...