Android ndk OpenGL создание защищенного контекста

1

Я пытаюсь создать защищенный контекст, используя OpenGL на Android.

Я основываю свой код на: https://github.com/googlesamples/android-ndk

Использование родной деятельности в качестве моей базы.

Я изменил параметры EGL на следующее:

EGLint context_attribs[] = {
        EGL_CONTEXT_CLIENT_VERSION, 3,
        0x32C0, EGL_TRUE,
        EGL_NONE,
};
EGLint surface_attribs[] = {
        0x32C0, EGL_TRUE,
        EGL_NONE,
};

И кажется, что на большинстве устройств все работает, но некоторые устройства ведут себя странно (телефон выходит из строя или вообще не отображается, даже если утверждают, что поддерживают защищенный контекст). Хорошим примером является издание S9 qualcomm, которое работает нормально до тех пор, пока на экране не появится что-либо (оверлей, скольжение панели навигации или скольжение боковой панели Samsung), что приведет к перезагрузке телефона.

Могу ли я что-то упустить при настройке защищенных контекстов?

Согласно документам Хроноса: https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_protected_content.txt

0x32c0 - правильный номер для защищенного контента.

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

Я поменял 0x32c0 на EGL_PROTECTED_CONTENT_EXT и проверил расширения, и EGL_EXT_protected_content действительно существует. Есть два устройства, с которыми я работаю, которые имеют проблемы именно с этим (Samsung Galaxy s9+ Qualcomm и Samsung Galaxy Tab S2). S2 утверждает, что поддерживает защищенный контекст, но затем после его использования я получаю EGL_BAD_ALLOC. На S9 все работает нормально, ошибок нет, но устройство постоянно рушится после небольшого использования.

Теги:
android-ndk
opengl-es
egl

1 ответ

1

Почему вы используете 0x32C0 вместо имени токена: EGL_PROTECTED_CONTENT_EXT?

Вы запросили, что строка расширения "EGL_EXT_protected_content" находится в поддерживаемых расширениях? это должно быть первым делом, которое вы делаете.

Вы пытаетесь сделать какие-либо действия, которые не разрешены? сбой может привести.

Проверьте свои ошибки от eglCreateSurface и eglCreateContext. EGL_BAD_ATTRIBUTE будет указывать, что не поддерживается.

  • 0
    Спасибо что нашли время ответить. Я обновлю свой вопрос с информацией
  • 0
    Эта проблема была решена с помощью Samsung путем обновления ОС с Android 8 до Android 9. Однако это остается проблемой на других устройствах. Похоже, это проблема с реализацией samsung qualcomm.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню