Как отладить ошибки EGL_BAD_CONFIG? - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть код, для которого мне нужно включить Anti Aliasing (полный проект src здесь ). Ожидаемый результат на данный момент - красный экран.

Вот мой GLSurfaceView код просмотра (src здесь на Github):

class AAEnabledGLSurfaceView(context: Context, attrs: AttributeSet) : GLSurfaceView(context, attrs) {
    private val renderer = MRenderer()

    init {
        setEGLContextClientVersion(2)
        setEGLConfigChooser(MultiSampleConfigChooser())
        setRenderer(renderer)
        holder.setFormat(PixelFormat.TRANSLUCENT)
        setZOrderOnTop(true)
        renderMode = GLSurfaceView.RENDERMODE_WHEN_DIRTY
    }
}

Я использую следующую EGLCOnfigChooser реализацию (src здесь на Github):

private class MultiSampleConfigChooser : GLSurfaceView.EGLConfigChooser {

    override fun chooseConfig(egl: EGL10, display: EGLDisplay): EGLConfig {

        val value = intArrayOf(0)
        val returnedConfigs = arrayOfNulls<EGLConfig>(16)

        var minimalSpecs = intArrayOf(
            EGL10.EGL_RED_SIZE,
            8,
            EGL10.EGL_GREEN_SIZE,
            8,
            EGL10.EGL_BLUE_SIZE,
            8,
            EGL10.EGL_ALPHA_SIZE,
            8,
            EGL10.EGL_SAMPLE_BUFFERS,
            1,
            EGL10.EGL_SAMPLES,
            2,
            EGL10.EGL_NONE
        )

        if (!egl.eglChooseConfig(display, minimalSpecs, returnedConfigs, returnedConfigs.size, value)) {
            throw IllegalArgumentException("No config found")
        }

        val configCount = value[0]
        Log.d(TAG, "$configCount configs found")

        return returnedConfigs[0]!!
    }
}

Код отлично работает на Nexus 5 , но на Asus P027 при запуске проекта я получаю следующее исключение:

2018-11-07 15:17:35.600 26630-26646/com.whatnow.wtf E/AndroidRuntime: FATAL EXCEPTION: GLThread 5223
    Process: com.whatnow.wtf, PID: 26630
    java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG
        at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1205)
        at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1196)
        at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1046)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1416)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253)

... что довольно бесполезно, так как не говорит мне, какая часть моего конфига была плохой. Кто-нибудь знает, что не так с кодом или, что еще лучше, как мне отладить эти вещи? Больше ничего не вижу в логах.

...