diff options
author | Peiyong Lin <lpy@google.com> | 2020-09-26 13:52:10 -0700 |
---|---|---|
committer | Peiyong Lin <lpy@google.com> | 2020-09-26 13:56:09 -0700 |
commit | 2f707e699b4f080e9360dbf79edc039c8a4f6d4f (patch) | |
tree | 418cce5d61269ce11ce824bb464b4fe61e4cf711 /opengl | |
parent | 487496c44f1d5f987c8ecf930c787947e0366f20 (diff) |
Plumb ANGLE EGL features for debugging.
Bug: b/169156341
Test: use adb shell command to verify
Change-Id: Id488508d4858c4604108952fef512fa5086a2aa6
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/include/EGL/eglext_angle.h | 20 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_display.cpp | 10 |
2 files changed, 30 insertions, 0 deletions
diff --git a/opengl/include/EGL/eglext_angle.h b/opengl/include/EGL/eglext_angle.h index 1f1bcb3950..e753e0d60f 100644 --- a/opengl/include/EGL/eglext_angle.h +++ b/opengl/include/EGL/eglext_angle.h @@ -186,6 +186,26 @@ EGLAPI EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limi #define EGL_EXTENSIONS_ENABLED_ANGLE 0x345F #endif /* EGL_ANGLE_create_context_extensions_enabled */ +#ifndef EGL_ANGLE_feature_control +#define EGL_ANGLE_feature_control 1 +#define EGL_FEATURE_NAME_ANGLE 0x3460 +#define EGL_FEATURE_CATEGORY_ANGLE 0x3461 +#define EGL_FEATURE_DESCRIPTION_ANGLE 0x3462 +#define EGL_FEATURE_BUG_ANGLE 0x3463 +#define EGL_FEATURE_STATUS_ANGLE 0x3464 +#define EGL_FEATURE_COUNT_ANGLE 0x3465 +#define EGL_FEATURE_OVERRIDES_ENABLED_ANGLE 0x3466 +#define EGL_FEATURE_OVERRIDES_DISABLED_ANGLE 0x3467 +#define EGL_FEATURE_CONDITION_ANGLE 0x3468 +#define EGL_FEATURE_ALL_DISABLED_ANGLE 0x3469 +typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGIANGLEPROC) (EGLDisplay dpy, EGLint name, EGLint index); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBANGLEPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +#ifdef EGL_EGLEXT_PROTOTYPES +EGLAPI const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy, EGLint attribute, EGLAttrib *value); +#endif +#endif /* EGL_ANGLE_feature_control */ + // clang-format on #endif // INCLUDE_EGL_EGLEXT_ANGLE_ diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index a288c21f31..0b755aadca 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -143,6 +143,16 @@ static EGLDisplay getPlatformDisplayAngle(EGLNativeDisplayType display, egl_conn attrs.push_back(attr[1]); } } + const auto& eglFeatures = GraphicsEnv::getInstance().getAngleEglFeatures(); + std::vector<const char*> features; + if (eglFeatures.size() > 0) { + for (const std::string& eglFeature : eglFeatures) { + features.push_back(eglFeature.c_str()); + } + features.push_back(0); + attrs.push_back(EGL_FEATURE_OVERRIDES_ENABLED_ANGLE); + attrs.push_back(reinterpret_cast<EGLAttrib>(features.data())); + } attrs.push_back(EGL_PLATFORM_ANGLE_TYPE_ANGLE); attrs.push_back(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE); |