Skip to content
  • Lina Versace's avatar
    egl/android: Change order of EGLConfig generation (v2) · 83c15002
    Lina Versace authored and Andres Gomez's avatar Andres Gomez committed
    
    
    Many Android apps (such as Google's official NDK GLES2 example app), and
    even portions the core framework code (such as SystemServiceManager in
    Nougat), incorrectly choose their EGLConfig.  They neglect to match the
    EGLConfig's EGL_NATIVE_VISUAL_ID against the window's native format, and
    instead choose the first EGLConfig whose channel sizes match those of
    the native window format while ignoring the channel *ordering*.
    
    We can detect such buggy clients in logcat when they call
    eglCreateSurface, by detecting the mismatch between the EGLConfig's
    format and the window's format.
    
    As a workaround, this patch changes the order of EGLConfig generation
    such that all EGLConfigs for HAL pixel format i precede those for HAL
    pixel format i+1. In my (chadversary) testing on Android Nougat, this
    was good enough to pacify the buggy clients.
    
    v2: Rebase to make patch cherry-pickable to stable.
    
    Cc: mesa-stable@lists.freedesktop.org
    Cc: Tomasz Figa <tfiga@chromium.org>
    Cc: Rob Herring <robh@kernel.org>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    (cherry picked from commit 5e884353)
    83c15002