Android ndk OpenGL создание защищенного контекста - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь создать защищенный контекст, используя 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), что приведет к перезагрузке телефона.

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

Согласно документам khronos: 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 все работает нормально, ошибок нет, но устройство будет постоянно зависать после небольшого использования.

1 Ответ

0 голосов
/ 15 февраля 2019

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

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

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

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

...