Я пытаюсь создать защищенный контекст, используя 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 все работает нормально, ошибок нет, но устройство постоянно рушится после небольшого использования.
Почему вы используете 0x32C0 вместо имени токена: EGL_PROTECTED_CONTENT_EXT?
Вы запросили, что строка расширения "EGL_EXT_protected_content" находится в поддерживаемых расширениях? это должно быть первым делом, которое вы делаете.
Вы пытаетесь сделать какие-либо действия, которые не разрешены? сбой может привести.
Проверьте свои ошибки от eglCreateSurface и eglCreateContext. EGL_BAD_ATTRIBUTE будет указывать, что не поддерживается.