OpenGL ES против OpenCL против RenderScript для обработки изображений Android - PullRequest
9 голосов
/ 13 мая 2019

Мне нужно создать приложение для обработки изображений для Android.Производительность является основным требованием, и я хочу использовать gpu compute.Я хочу знать, какую из 3 библиотек лучше всего использовать.

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

Я не уверен, насколько хорошо поддерживается OpenCL на Android

В RenderScript отсутствует документация, и я думаю, что она медленнее, чем в других библиотеках.

1 Ответ

1 голос
/ 22 мая 2019

Для приложения обработки изображений самая тяжелая часть - обработка (преобразование / манипулирование) пикселей изображений в памяти, а не рендеринг изображений на экраны / буферы.

Конечно, этот вид обработки является общим и требует универсального API для вычислений.

Таким образом, мы можем исключить OpenGL ES. Он поддерживает шейдеры, но OpenGL ES Shading Language очень ограничен и определенно не подходит для общей обработки.

RenderScript, согласно this :

RenderScript не использует ядра GPU или DSP. Это распространенное заблуждение, поддерживаемое намеренно неопределенной документацией Google. У RenderScript раньше был интерфейс с OpenGL ES, но это устарело и никогда не использовалось для чего-то большего, чем анимированные обои. RenderScript будет использовать несколько ядер ЦП, если таковые имеются, но я подозреваю, что RenderScript будет заменен OpenCL.

Я работаю в крупной компании, занимающейся видеоиграми, у нас нет планов использовать RenderScript. Мы считаем Vulkan лучшим выбором. Я предлагаю вам также выбрать Vulkan, но проблема в том, что количество Android-устройств, поддерживающих Vulkan, сейчас довольно мало.

Поэтому, чтобы ответить на ваш вопрос, перейдите с OpenCL. Хотя OpenCL не является частью платформы Android, многие производители предоставляют драйверы или даже SDK для поддержки OpenCL на Android. По крайней мере, это лучше, чем Vulkan по количеству поддерживаемых устройств.

...