123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604 |
- From 5cddfb828ddd82fc741549d5ee44cd9b94bd97f5 Mon Sep 17 00:00:00 2001
- From: Jonah Ryan-Davis <jonahr@google.com>
- Date: Mon, 30 Mar 2020 17:13:54 +0000
- Subject: [PATCH] Use EGL_ANGLE_sync_control_rate for eglGetMscRate call
- eglGetMscRateCHROMIUM is not universally supported, so we will
- switch to using the ANGLE version of the extension instead.
- Bug: chromium:1064078
- Change-Id: Ic57e2e55230df1d1c2c584e1cbf54331330a0b87
- Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2120453
- Reviewed-by: Zhenyao Mo <zmo@chromium.org>
- Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
- Cr-Commit-Position: refs/heads/master@{#754518}
- ---
- diff --git a/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt b/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
- new file mode 100644
- index 0000000..2056ae8
- --- /dev/null
- +++ b/gpu/GLES2/extensions/ANGLE/EGL_ANGLE_sync_control_rate.txt
- @@ -0,0 +1,110 @@
- +Name
- +
- + ANGLE_sync_control_rate
- +
- +Name Strings
- +
- + EGL_ANGLE_sync_control_rate
- +
- +Contact
- +
- + Jonah Ryan-Davis, Google (jonahr 'at' google.com)
- +
- +Status
- +
- + Draft.
- +
- +Version
- +
- + Version 1, 2020-03-24
- +
- + Based on GLX_OML_sync_control Revision 6.0
- +
- +Number
- +
- + ???
- +
- +Dependencies
- +
- + The extension is written against the EGL 1.2 Specification, although it
- + should work on other versions of these specifications. This extension
- + also requires an operating system which supports CLOCK_MONOTONIC.
- +
- +Overview
- +
- + This extension provides counters which let applications know about the
- + timing of the last vertical retrace. By looking at the system clock, as
- + well as the refresh rate of the monitor, this should enable applications
- + to predict the position of future retraces so as to schedule an optimal
- + workload.
- +
- + This extension incorporates the use of three counters that provide
- + the necessary synchronization. The Unadjusted System Time (or UST)
- + is the 64-bit CLOCK_MONOTONIC clock; in particular this lets the
- + application schedule future vertical retraces by querying this clock.
- + The graphics Media Stream Counter (or graphics MSC) is a counter
- + that is unique to the graphics subsystem and increments for each
- + vertical retrace that occurs. The Swap Buffer Counter (SBC) is an
- + attribute of an EGLSurface and is incremented each time a swap
- + buffer action is performed on the associated surface.
- +
- + The use of these three counters allows the application to
- + synchronize graphics rendering to vertical retraces and/or swap
- + buffer actions. For example, by querying the synchronization values for
- + a given surface, the application can accurately predict the timing for
- + the next vertical retraces and schedule rendering accordingly.
- +
- +Issues
- +
- + None.
- +
- +IP Status
- +
- + No known issues.
- +
- +New Procedures and Functions
- +
- + Bool eglGetMscRateANGLE(EGLDisplay* dpy,
- + EGLSurface surface,
- + int32_t* numerator,
- + int32_t* denominator)
- +
- +New Tokens
- +
- + None
- +
- +Additions to the EGL 1.3 Specification
- +
- + The graphics MSC value is incremented once for each screen refresh.
- + For a non-interlaced display, this means that the graphics MSC value
- + is incremented for each frame. For an interlaced display, it means
- + that it will be incremented for each field. For a multi-monitor
- + system, the monitor used to determine MSC is the one where the surface
- + is located. If the surface spans multiple monitors, the monitor used
- + to determine MSC is the one with the biggest coverage in pixels.
- +
- + eglGetMscRateANGLE returns the rate at which the MSC will be incremented
- + for the display associated with <hdc>. The rate is expressed in Hertz
- + as <numerator> / <denominator>. If the MSC rate in Hertz is an
- + integer, then <denominator> will be 1 and <numerator> will be
- + the MSC rate.
- +
- + The function eglGetMscRateANGLE will return TRUE if the function
- + completed successfully, FALSE otherwise.
- +
- + Each time eglSwapBuffer succeeds, the SBC will be increased within a
- + finite time period.
- +
- +Errors
- +
- + The function eglGetMscRateANGLE will return FALSE if there is no
- + current EGLContext.
- +
- +New Implementation Dependent State
- +
- + None
- +
- +Revision History
- +
- + Version 1, 2020-03-24 (Jonah Ryan-Davis)
- + - Initial draft, based on GLX_OML_sync_control revision 6.0.
- diff --git a/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
- index 14f4e56..f699f61 100644
- --- a/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
- +++ b/gpu/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_sync_control.txt
- @@ -16,7 +16,7 @@
-
- Version
-
- - Version 3, 2020-01-23
- + Version 2, 2015-05-05
-
- Based on GLX_OML_sync_control Revision 6.0
-
- @@ -70,12 +70,6 @@
- int64_t* msc,
- int64_t* sbc)
-
- - Bool eglGetMscRateCHROMIUM(EGLDisplay* dpy,
- - EGLSurface surface,
- - int32_t* numerator,
- - int32_t* denominator)
- -
- -
- New Tokens
-
- None
- @@ -112,22 +106,16 @@
- is located. If the surface spans multiple monitors, the monitor used
- to determine MSC is the one with the biggest coverage in pixels.
-
- - eglGetMscRateCHROMIUM returns the rate at which the MSC will be incremented
- - for the display associated with <hdc>. The rate is expressed in Hertz
- - as <numerator> / <denominator>. If the MSC rate in Hertz is an
- - integer, then <denominator> will be 1 and <numerator> will be
- - the MSC rate.
- -
- - The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
- - return TRUE if the function completed successfully, FALSE otherwise.
- + The function eglGetSyncValuesCHROMIUM will return TRUE if the function
- + completed successfully, FALSE otherwise.
-
- Each time eglSwapBuffer succeeds, the SBC will be increased within a
- finite time period.
-
- Errors
-
- - The functions eglGetSyncValuesCHROMIUM, and eglGetMscRateCHROMIUM will
- - return FALSE if there is no current EGLContext.
- + The function eglGetSyncValuesCHROMIUM will return FALSE if there is no
- + current EGLContext.
-
-
- New State
- @@ -144,10 +132,6 @@
-
- Revision History
-
- - Version 3, 2020-01-23 (Jonah Ryan-Davis)
- - - Add the function eglGetMscRateCHROMIUM based on glXGetMscRateOML from
- - GLX_OML_sync_control revision 6.0.
- -
- Version 2, 2015-05-05 (Chad Versace)
- - Rename to EGL_CHROMIUM_sync_control from EGL_CHROMIUM_get_sync_values.
- EGL_CHROMIUM_sync_control is the de facto extension name because all
- diff --git a/ui/gl/EGL/eglextchromium.h b/ui/gl/EGL/eglextchromium.h
- index e66d34a..22e3cf0 100644
- --- a/ui/gl/EGL/eglextchromium.h
- +++ b/ui/gl/EGL/eglextchromium.h
- @@ -22,21 +22,26 @@
- EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(
- EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
- EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
- -EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateCHROMIUM(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator);
- #endif /* EGL_EGLEXT_PROTOTYPES */
- typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCVALUESCHROMIUMPROC)
- (EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
- EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
- -typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETMSCRATECHROMIUMPROC)(
- - EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator);
- -#endif
- -#endif
- +#endif /* EGL_CHROMIUM_sync_control */
- +
- +#ifndef EGL_ANGLE_sync_control_rate
- +#define EGL_ANGLE_sync_control_rate 1
- +#ifdef EGL_EGLEXT_PROTOTYPES
- +EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator);
- +#endif /* EGL_EGLEXT_PROTOTYPES */
- +typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC)(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator);
- +#endif /* EGL_ANGLE_sync_control_rate */
- +#endif /* KHRONOS_SUPPORT_INT64 */
-
- #ifdef __cplusplus
- }
- diff --git a/ui/gl/egl_bindings_autogen_mock.cc b/ui/gl/egl_bindings_autogen_mock.cc
- index f6562ad..d4d3a04 100644
- --- a/ui/gl/egl_bindings_autogen_mock.cc
- +++ b/ui/gl/egl_bindings_autogen_mock.cc
- @@ -299,12 +299,12 @@
- }
-
- EGLBoolean GL_BINDING_CALL
- -MockEGLInterface::Mock_eglGetMscRateCHROMIUM(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) {
- - MakeEglMockFunctionUnique("eglGetMscRateCHROMIUM");
- - return interface_->GetMscRateCHROMIUM(dpy, surface, numerator, denominator);
- +MockEGLInterface::Mock_eglGetMscRateANGLE(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) {
- + MakeEglMockFunctionUnique("eglGetMscRateANGLE");
- + return interface_->GetMscRateANGLE(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer GL_BINDING_CALL
- @@ -706,8 +706,8 @@
- if (strcmp(name, "eglGetFrameTimestampsANDROID") == 0)
- return reinterpret_cast<GLFunctionPointerType>(
- Mock_eglGetFrameTimestampsANDROID);
- - if (strcmp(name, "eglGetMscRateCHROMIUM") == 0)
- - return reinterpret_cast<GLFunctionPointerType>(Mock_eglGetMscRateCHROMIUM);
- + if (strcmp(name, "eglGetMscRateANGLE") == 0)
- + return reinterpret_cast<GLFunctionPointerType>(Mock_eglGetMscRateANGLE);
- if (strcmp(name, "eglGetNativeClientBufferANDROID") == 0)
- return reinterpret_cast<GLFunctionPointerType>(
- Mock_eglGetNativeClientBufferANDROID);
- diff --git a/ui/gl/egl_bindings_autogen_mock.h b/ui/gl/egl_bindings_autogen_mock.h
- index 06f1117..4b7eb01 100644
- --- a/ui/gl/egl_bindings_autogen_mock.h
- +++ b/ui/gl/egl_bindings_autogen_mock.h
- @@ -131,11 +131,10 @@
- EGLint numTimestamps,
- EGLint* timestamps,
- EGLnsecsANDROID* values);
- -static EGLBoolean GL_BINDING_CALL
- -Mock_eglGetMscRateCHROMIUM(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator);
- +static EGLBoolean GL_BINDING_CALL Mock_eglGetMscRateANGLE(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator);
- static EGLClientBuffer GL_BINDING_CALL Mock_eglGetNativeClientBufferANDROID(
- const struct AHardwareBuffer* ahardwarebuffer);
- static EGLBoolean GL_BINDING_CALL
- diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
- index 6a89047..01da79a 100755
- --- a/ui/gl/generate_bindings.py
- +++ b/ui/gl/generate_bindings.py
- @@ -2452,9 +2452,9 @@
- ] }],
- 'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint timestamp', },
- { 'return_type': 'EGLBoolean',
- - 'versions': [{ 'name': 'eglGetMscRateCHROMIUM',
- + 'versions': [{ 'name': 'eglGetMscRateANGLE',
- 'extensions': [
- - 'EGL_CHROMIUM_sync_control'
- + 'EGL_ANGLE_sync_control_rate'
- ] }],
- 'arguments':
- 'EGLDisplay dpy, EGLSurface surface, '
- diff --git a/ui/gl/gl_bindings_api_autogen_egl.h b/ui/gl/gl_bindings_api_autogen_egl.h
- index 8628d7c..30b0ba80 100644
- --- a/ui/gl/gl_bindings_api_autogen_egl.h
- +++ b/ui/gl/gl_bindings_api_autogen_egl.h
- @@ -111,10 +111,10 @@
- EGLBoolean eglGetFrameTimestampSupportedANDROIDFn(EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp) override;
- -EGLBoolean eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) override;
- +EGLBoolean eglGetMscRateANGLEFn(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) override;
- EGLClientBuffer eglGetNativeClientBufferANDROIDFn(
- const struct AHardwareBuffer* ahardwarebuffer) override;
- EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
- diff --git a/ui/gl/gl_bindings_autogen_egl.cc b/ui/gl/gl_bindings_autogen_egl.cc
- index 2f1ed11..18444223 100644
- --- a/ui/gl/gl_bindings_autogen_egl.cc
- +++ b/ui/gl/gl_bindings_autogen_egl.cc
- @@ -187,6 +187,8 @@
- gfx::HasExtension(extensions, "EGL_ANGLE_stream_producer_d3d_texture");
- ext.b_EGL_ANGLE_surface_d3d_texture_2d_share_handle = gfx::HasExtension(
- extensions, "EGL_ANGLE_surface_d3d_texture_2d_share_handle");
- + ext.b_EGL_ANGLE_sync_control_rate =
- + gfx::HasExtension(extensions, "EGL_ANGLE_sync_control_rate");
- ext.b_EGL_CHROMIUM_sync_control =
- gfx::HasExtension(extensions, "EGL_CHROMIUM_sync_control");
- ext.b_EGL_EXT_image_flush_external =
- @@ -278,9 +280,9 @@
- GetGLProcAddress("eglGetFrameTimestampSupportedANDROID"));
- }
-
- - if (ext.b_EGL_CHROMIUM_sync_control) {
- - fn.eglGetMscRateCHROMIUMFn = reinterpret_cast<eglGetMscRateCHROMIUMProc>(
- - GetGLProcAddress("eglGetMscRateCHROMIUM"));
- + if (ext.b_EGL_ANGLE_sync_control_rate) {
- + fn.eglGetMscRateANGLEFn = reinterpret_cast<eglGetMscRateANGLEProc>(
- + GetGLProcAddress("eglGetMscRateANGLE"));
- }
-
- if (ext.b_EGL_ANDROID_get_native_client_buffer) {
- @@ -602,12 +604,11 @@
- timestamp);
- }
-
- -EGLBoolean EGLApiBase::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) {
- - return driver_->fn.eglGetMscRateCHROMIUMFn(dpy, surface, numerator,
- - denominator);
- +EGLBoolean EGLApiBase::eglGetMscRateANGLEFn(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) {
- + return driver_->fn.eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer EGLApiBase::eglGetNativeClientBufferANDROIDFn(
- @@ -1117,13 +1118,12 @@
- timestamp);
- }
-
- -EGLBoolean TraceEGLApi::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) {
- - TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetMscRateCHROMIUM")
- - return egl_api_->eglGetMscRateCHROMIUMFn(dpy, surface, numerator,
- - denominator);
- +EGLBoolean TraceEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) {
- + TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceEGLAPI::eglGetMscRateANGLE")
- + return egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- }
-
- EGLClientBuffer TraceEGLApi::eglGetNativeClientBufferANDROIDFn(
- @@ -1811,16 +1811,16 @@
- return result;
- }
-
- -EGLBoolean LogEGLApi::eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) {
- - GL_SERVICE_LOG("eglGetMscRateCHROMIUM"
- +EGLBoolean LogEGLApi::eglGetMscRateANGLEFn(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) {
- + GL_SERVICE_LOG("eglGetMscRateANGLE"
- << "(" << dpy << ", " << surface << ", "
- << static_cast<const void*>(numerator) << ", "
- << static_cast<const void*>(denominator) << ")");
- EGLBoolean result =
- - egl_api_->eglGetMscRateCHROMIUMFn(dpy, surface, numerator, denominator);
- + egl_api_->eglGetMscRateANGLEFn(dpy, surface, numerator, denominator);
- GL_SERVICE_LOG("GL_RESULT: " << result);
- return result;
- }
- diff --git a/ui/gl/gl_bindings_autogen_egl.h b/ui/gl/gl_bindings_autogen_egl.h
- index 546e2c9..6cafd14 100644
- --- a/ui/gl/gl_bindings_autogen_egl.h
- +++ b/ui/gl/gl_bindings_autogen_egl.h
- @@ -141,7 +141,7 @@
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp);
- -typedef EGLBoolean(GL_BINDING_CALL* eglGetMscRateCHROMIUMProc)(
- +typedef EGLBoolean(GL_BINDING_CALL* eglGetMscRateANGLEProc)(
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint* numerator,
- @@ -296,6 +296,7 @@
- bool b_EGL_ANGLE_query_surface_pointer;
- bool b_EGL_ANGLE_stream_producer_d3d_texture;
- bool b_EGL_ANGLE_surface_d3d_texture_2d_share_handle;
- + bool b_EGL_ANGLE_sync_control_rate;
- bool b_EGL_CHROMIUM_sync_control;
- bool b_EGL_EXT_image_flush_external;
- bool b_EGL_KHR_fence_sync;
- @@ -351,7 +352,7 @@
- eglGetFrameTimestampsANDROIDProc eglGetFrameTimestampsANDROIDFn;
- eglGetFrameTimestampSupportedANDROIDProc
- eglGetFrameTimestampSupportedANDROIDFn;
- - eglGetMscRateCHROMIUMProc eglGetMscRateCHROMIUMFn;
- + eglGetMscRateANGLEProc eglGetMscRateANGLEFn;
- eglGetNativeClientBufferANDROIDProc eglGetNativeClientBufferANDROIDFn;
- eglGetNextFrameIdANDROIDProc eglGetNextFrameIdANDROIDFn;
- eglGetPlatformDisplayProc eglGetPlatformDisplayFn;
- @@ -512,10 +513,10 @@
- EGLDisplay dpy,
- EGLSurface surface,
- EGLint timestamp) = 0;
- - virtual EGLBoolean eglGetMscRateCHROMIUMFn(EGLDisplay dpy,
- - EGLSurface surface,
- - EGLint* numerator,
- - EGLint* denominator) = 0;
- + virtual EGLBoolean eglGetMscRateANGLEFn(EGLDisplay dpy,
- + EGLSurface surface,
- + EGLint* numerator,
- + EGLint* denominator) = 0;
- virtual EGLClientBuffer eglGetNativeClientBufferANDROIDFn(
- const struct AHardwareBuffer* ahardwarebuffer) = 0;
- virtual EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
- @@ -685,8 +686,7 @@
- ::gl::g_current_egl_context->eglGetFrameTimestampsANDROIDFn
- #define eglGetFrameTimestampSupportedANDROID \
- ::gl::g_current_egl_context->eglGetFrameTimestampSupportedANDROIDFn
- -#define eglGetMscRateCHROMIUM \
- - ::gl::g_current_egl_context->eglGetMscRateCHROMIUMFn
- +#define eglGetMscRateANGLE ::gl::g_current_egl_context->eglGetMscRateANGLEFn
- #define eglGetNativeClientBufferANDROID \
- ::gl::g_current_egl_context->eglGetNativeClientBufferANDROIDFn
- #define eglGetNextFrameIdANDROID \
- diff --git a/ui/gl/gl_enums_implementation_autogen.h b/ui/gl/gl_enums_implementation_autogen.h
- index d35439c..1209923b 100644
- --- a/ui/gl/gl_enums_implementation_autogen.h
- +++ b/ui/gl/gl_enums_implementation_autogen.h
- @@ -829,10 +829,6 @@
- "GL_FILL_NV",
- },
- {
- - 0x1D00,
- - "GL_FLAT_CHROMIUM",
- - },
- - {
- 0x1E00,
- "GL_KEEP",
- },
- @@ -877,14 +873,6 @@
- "GL_FONT_NUM_GLYPH_INDICES_BIT_NV",
- },
- {
- - 0x2400,
- - "GL_EYE_LINEAR_CHROMIUM",
- - },
- - {
- - 0x2401,
- - "GL_OBJECT_LINEAR_CHROMIUM",
- - },
- - {
- 0x2600,
- "GL_NEAREST",
- },
- @@ -2053,10 +2041,6 @@
- "GL_MAX_CUBE_MAP_TEXTURE_SIZE",
- },
- {
- - 0x8576,
- - "GL_CONSTANT_CHROMIUM",
- - },
- - {
- 0x8589,
- "GL_SRC1_ALPHA_EXT",
- },
- @@ -4629,10 +4613,6 @@
- "GL_PATH_CLIENT_LENGTH_NV",
- },
- {
- - 0x907a,
- - "GL_PATH_MITER_LIMIT_CHROMIUM",
- - },
- - {
- 0x9080,
- "GL_PATH_FILL_MODE_NV",
- },
- @@ -4653,10 +4633,6 @@
- "GL_PATH_STROKE_MASK_NV",
- },
- {
- - 0x9086,
- - "GL_PATH_STROKE_BOUND_CHROMIUM",
- - },
- - {
- 0x9088,
- "GL_COUNT_UP_NV",
- },
- @@ -4965,14 +4941,6 @@
- "GL_CONTEXT_ROBUST_ACCESS_KHR",
- },
- {
- - 0x90a3,
- - "GL_SQUARE_CHROMIUM",
- - },
- - {
- - 0x90a4,
- - "GL_ROUND_CHROMIUM",
- - },
- - {
- 0x9100,
- "GL_TEXTURE_2D_MULTISAMPLE",
- },
- diff --git a/ui/gl/gl_mock_autogen_egl.h b/ui/gl/gl_mock_autogen_egl.h
- index bcdd2a3..ba2f95f 100644
- --- a/ui/gl/gl_mock_autogen_egl.h
- +++ b/ui/gl/gl_mock_autogen_egl.h
- @@ -121,7 +121,7 @@
- EGLnsecsANDROID* values));
- MOCK_METHOD3(GetFrameTimestampSupportedANDROID,
- EGLBoolean(EGLDisplay dpy, EGLSurface surface, EGLint timestamp));
- -MOCK_METHOD4(GetMscRateCHROMIUM,
- +MOCK_METHOD4(GetMscRateANGLE,
- EGLBoolean(EGLDisplay dpy,
- EGLSurface surface,
- EGLint* numerator,
- diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
- index 72268904..750f3ed 100644
- --- a/ui/gl/gl_surface_egl.cc
- +++ b/ui/gl/gl_surface_egl.cc
- @@ -174,6 +174,7 @@
- bool g_egl_create_context_bind_generates_resource_supported = false;
- bool g_egl_create_context_webgl_compatability_supported = false;
- bool g_egl_sync_control_supported = false;
- +bool g_egl_sync_control_rate_supported = false;
- bool g_egl_window_fixed_size_supported = false;
- bool g_egl_surfaceless_context_supported = false;
- bool g_egl_surface_orientation_supported = false;
- @@ -266,8 +267,12 @@
- }
-
- bool GetMscRate(int32_t* numerator, int32_t* denominator) override {
- + if (!g_egl_sync_control_rate_supported) {
- + return false;
- + }
- +
- - bool result = eglGetMscRateCHROMIUM(g_egl_display, surface_, numerator,
- - denominator) == EGL_TRUE;
- + bool result = eglGetMscRateANGLE(g_egl_display, surface_, numerator,
- + denominator) == EGL_TRUE;
- return result;
- }
-
- @@ -921,6 +920,8 @@
- g_egl_create_context_webgl_compatability_supported =
- HasEGLExtension("EGL_ANGLE_create_context_webgl_compatibility");
- g_egl_sync_control_supported = HasEGLExtension("EGL_CHROMIUM_sync_control");
- + g_egl_sync_control_rate_supported =
- + HasEGLExtension("EGL_ANGLE_sync_control_rate");
- g_egl_window_fixed_size_supported =
- HasEGLExtension("EGL_ANGLE_window_fixed_size");
- g_egl_surface_orientation_supported =
- @@ -1036,6 +1037,7 @@
- g_egl_create_context_bind_generates_resource_supported = false;
- g_egl_create_context_webgl_compatability_supported = false;
- g_egl_sync_control_supported = false;
- + g_egl_sync_control_rate_supported = false;
- g_egl_window_fixed_size_supported = false;
- g_egl_surface_orientation_supported = false;
- g_egl_surfaceless_context_supported = false;
|