Split EGL_CHROMIUM_sync_control into EGL_ANGLE_sync_control_rate

eglGetMscRateCHROMIUM was added to EGL_CHROMIUM_sync_control based
on the original extension GLX_OML_sync_control. However, this new
function is not universally implemented. This CL moves it to a new
extension, EGL_ANGLE_sync_control_rate, and renames it to
eglGetMscRateANGLE.

Bug: chromium:1064078
Change-Id: Ia2a29c6776b2b2bf2b98e58ee83b5f141ed01301
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118154
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
This commit is contained in:
Jonah Ryan-Davis
2020-03-24 17:23:19 -04:00
committed by Commit Bot
parent 91ea27aee4
commit 4b94d7bb4f
26 changed files with 216 additions and 83 deletions

View File

@@ -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.

View File

@@ -16,7 +16,7 @@ Status
Version
Version 3, 2020-01-23
Version 2, 2015-05-05
Based on GLX_OML_sync_control Revision 6.0
@@ -70,12 +70,6 @@ New Procedures and Functions
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 @@ Additions to the EGL 1.3 Specification
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 @@ New Implementation Dependent State
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

View File

@@ -217,22 +217,28 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCVALUESCHROMIUMPROC) (EGLDisplay dp
EGLuint64KHR *ust,
EGLuint64KHR *msc,
EGLuint64KHR *sbc);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATECHROMIUMPROC) (EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR *ust,
EGLuint64KHR *msc,
EGLuint64KHR *sbc);
EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateCHROMIUM(EGLDisplay dpy,
#endif
#endif /* EGL_CHROMIUM_sync_control */
#ifndef EGL_ANGLE_sync_control_rate
#define EGL_ANGLE_sync_control_rate 1
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator);
#endif
#endif /* EGL_CHROMIUM_sync_control */
#endif /* EGL_ANGLE_sync_control_rate */
#ifndef EGL_ANGLE_power_preference
#define EGL_ANGLE_power_preference 1

View File

@@ -2,7 +2,7 @@
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"63f18dc9b7183ead4ddd3dfd1571973a",
"854e99785af19f8f4eea4f73005a0451",
"scripts/generate_loader.py":
"792c41d7ae93a4518f0c73e45626d19b",
"scripts/gl.xml":
@@ -10,17 +10,17 @@
"scripts/gl_angle_ext.xml":
"079cc4829de7ce638faf7bbf66e141ad",
"scripts/registry_xml.py":
"439dd95a9f118a64e8745f97963efa4a",
"4048ca8f1e61cd86df75e5a1778461ea",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libEGL/egl_loader_autogen.cpp":
"6de27557530d1dff3780d83745c0a0fd",
"64cb617726751808af6a64607cba39eb",
"src/libEGL/egl_loader_autogen.h":
"2fca11a29bb6e5cadb25d4862360ddd8",
"e79b89b5f1f704383c96dbc99124efff",
"util/egl_loader_autogen.cpp":
"780b317fbd6ac03e300a7ee0122ab3cf",
"44c9d17a658aec04dfa7b57fca5386a0",
"util/egl_loader_autogen.h":
"55b54071e61b3e7beab28178dc20fd28",
"e0ae6f29162d13d8d825fc9cd58baf94",
"util/gles_loader_autogen.cpp":
"b73fa86312a71c76f6a8402548d21204",
"util/gles_loader_autogen.h":

View File

@@ -2,7 +2,7 @@
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"63f18dc9b7183ead4ddd3dfd1571973a",
"854e99785af19f8f4eea4f73005a0451",
"scripts/entry_point_packed_gl_enums.json":
"63f508a08611e75810daedb297dca0e9",
"scripts/generate_entry_points.py":
@@ -12,7 +12,7 @@
"scripts/gl_angle_ext.xml":
"079cc4829de7ce638faf7bbf66e141ad",
"scripts/registry_xml.py":
"439dd95a9f118a64e8745f97963efa4a",
"4048ca8f1e61cd86df75e5a1778461ea",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libANGLE/Context_gl_1_0_autogen.h":
@@ -256,9 +256,9 @@
"src/libGLESv2/libGLESv2_autogen.cpp":
"1689a88c5bf376da1f0433db242ede7d",
"src/libGLESv2/libGLESv2_autogen.def":
"5f1eb763e31f9080eb2dfb1883260833",
"e14cf59be44bd99efbeb44dcb3598f5f",
"src/libGLESv2/libGLESv2_no_capture_autogen.def":
"28c8a5ee0d3d67815c1a7ff7c2d495ca",
"abbb5458eb7a505705a2ab6093cdd9a6",
"src/libGLESv2/libGLESv2_with_capture_autogen.def":
"dd0c7c54fd5da8af0dc85f2f1e3212ed"
"39540b6e5499ab74e3222cab8c9d843d"
}

View File

@@ -6,7 +6,7 @@
"scripts/gl_angle_ext.xml":
"079cc4829de7ce638faf7bbf66e141ad",
"scripts/registry_xml.py":
"439dd95a9f118a64e8745f97963efa4a",
"4048ca8f1e61cd86df75e5a1778461ea",
"src/libANGLE/gl_enum_utils_autogen.cpp":
"cfc52f413272c061ee4a037876792726",
"src/libANGLE/gl_enum_utils_autogen.h":

View File

@@ -2,7 +2,7 @@
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"63f18dc9b7183ead4ddd3dfd1571973a",
"854e99785af19f8f4eea4f73005a0451",
"scripts/gen_proc_table.py":
"24dbcc78fd3f000f58ca98237ccc0da4",
"scripts/gl.xml":
@@ -10,11 +10,11 @@
"scripts/gl_angle_ext.xml":
"079cc4829de7ce638faf7bbf66e141ad",
"scripts/registry_xml.py":
"439dd95a9f118a64e8745f97963efa4a",
"4048ca8f1e61cd86df75e5a1778461ea",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libGL/proc_table_wgl_autogen.cpp":
"03c05f20c57c1de822b0ddaf6d4f9607",
"src/libGLESv2/proc_table_egl_autogen.cpp":
"a51c859c721dcd1b53a01a60520fad56"
"0154d2734e6d89520d3697890df2164e"
}

View File

@@ -34,7 +34,7 @@
<param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
</command>
<command>
<proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateCHROMIUM</name></proto>
<proto><ptype>EGLBoolean</ptype> <name>eglGetMscRateANGLE</name></proto>
<param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
<param><ptype>EGLSurface</ptype> <name>surface</name></param>
<param><ptype>EGLint</ptype> *<name>numerator</name></param>
@@ -118,7 +118,11 @@
<extension name="EGL_CHROMIUM_sync_control" supported="egl">
<require>
<command name="eglGetSyncValuesCHROMIUM"/>
<command name="eglGetMscRateCHROMIUM"/>
</require>
</extension>
<extension name="EGL_ANGLE_sync_control_rate" supported="egl">
<require>
<command name="eglGetMscRateANGLE"/>
</require>
</extension>
<extension name="EGL_ANGLE_program_cache_control" supported="egl">

View File

@@ -129,6 +129,7 @@ supported_egl_extensions = [
"EGL_ANGLE_swap_with_frame_token",
"EGL_ANGLE_window_fixed_size",
"EGL_CHROMIUM_sync_control",
"EGL_ANGLE_sync_control_rate",
"EGL_EXT_create_context_robustness",
"EGL_EXT_device_query",
"EGL_EXT_pixel_format_float",

View File

@@ -1348,6 +1348,7 @@ std::vector<std::string> DisplayExtensions::getStrings() const
InsertExtensionString("EGL_ANGLE_create_context_webgl_compatibility", createContextWebGLCompatibility, &extensionStrings);
InsertExtensionString("EGL_CHROMIUM_create_context_bind_generates_resource", createContextBindGeneratesResource, &extensionStrings);
InsertExtensionString("EGL_CHROMIUM_sync_control", syncControlCHROMIUM, &extensionStrings);
InsertExtensionString("EGL_ANGLE_sync_control_rate", syncControlRateANGLE, &extensionStrings);
InsertExtensionString("EGL_KHR_swap_buffers_with_damage", swapBuffersWithDamage, &extensionStrings);
InsertExtensionString("EGL_EXT_pixel_format_float", pixelFormatFloat, &extensionStrings);
InsertExtensionString("EGL_KHR_surfaceless_context", surfacelessContext, &extensionStrings);

View File

@@ -950,6 +950,9 @@ struct DisplayExtensions
// EGL_CHROMIUM_sync_control
bool syncControlCHROMIUM = false;
// EGL_ANGLE_sync_control_rate
bool syncControlRateANGLE = false;
// EGL_KHR_swap_buffers_with_damage
bool swapBuffersWithDamage = false;

View File

@@ -830,7 +830,9 @@ void DisplayGLX::generateExtensions(egl::DisplayExtensions *outExtensions) const
outExtensions->surfacelessContext = true;
outExtensions->syncControlCHROMIUM = mGLX.hasExtension("GLX_OML_sync_control");
const bool hasSyncControlOML = mGLX.hasExtension("GLX_OML_sync_control");
outExtensions->syncControlCHROMIUM = hasSyncControlOML;
outExtensions->syncControlRateANGLE = hasSyncControlOML;
DisplayGL::generateExtensions(outExtensions);
}

View File

@@ -3147,12 +3147,26 @@ Error ValidateSyncControlCHROMIUM(const Display *display, const Surface *eglSurf
return NoError();
}
Error ValidateGetMscRateCHROMIUM(const Display *display,
const Surface *eglSurface,
const EGLint *numerator,
const EGLint *denominator)
Error ValidateSyncControlRateANGLE(const Display *display, const Surface *eglSurface)
{
ANGLE_TRY(ValidateSyncControlCHROMIUM(display, eglSurface));
ANGLE_TRY(ValidateDisplay(display));
ANGLE_TRY(ValidateSurface(display, eglSurface));
const DisplayExtensions &displayExtensions = display->getExtensions();
if (!displayExtensions.syncControlRateANGLE)
{
return EglBadAccess() << "syncControlRateANGLE extension not active";
}
return NoError();
}
Error ValidateGetMscRateANGLE(const Display *display,
const Surface *eglSurface,
const EGLint *numerator,
const EGLint *denominator)
{
ANGLE_TRY(ValidateSyncControlRateANGLE(display, eglSurface));
if (numerator == nullptr)
{

View File

@@ -174,10 +174,10 @@ Error ValidateStreamPostD3DTextureANGLE(const Display *display,
void *texture,
const AttributeMap &attribs);
Error ValidateGetMscRateCHROMIUM(const Display *display,
const Surface *surface,
const EGLint *numerator,
const EGLint *denominator);
Error ValidateGetMscRateANGLE(const Display *display,
const Surface *surface,
const EGLint *numerator,
const EGLint *denominator);
Error ValidateGetSyncValuesCHROMIUM(const Display *display,
const Surface *surface,
const EGLuint64KHR *ust,

View File

@@ -75,7 +75,7 @@ PFNEGLQUERYSURFACEPOINTERANGLEPROC EGL_QuerySurfacePointerANGLE;
PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC EGL_CreateStreamProducerD3DTextureANGLE;
PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE;
PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC EGL_SwapBuffersWithFrameTokenANGLE;
PFNEGLGETMSCRATECHROMIUMPROC EGL_GetMscRateCHROMIUM;
PFNEGLGETMSCRATEANGLEPROC EGL_GetMscRateANGLE;
PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM;
PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT;
PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT;
@@ -210,8 +210,8 @@ void LoadEGL_EGL(LoadProc loadProc)
loadProc("EGL_StreamPostD3DTextureANGLE"));
EGL_SwapBuffersWithFrameTokenANGLE = reinterpret_cast<PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC>(
loadProc("EGL_SwapBuffersWithFrameTokenANGLE"));
EGL_GetMscRateCHROMIUM =
reinterpret_cast<PFNEGLGETMSCRATECHROMIUMPROC>(loadProc("EGL_GetMscRateCHROMIUM"));
EGL_GetMscRateANGLE =
reinterpret_cast<PFNEGLGETMSCRATEANGLEPROC>(loadProc("EGL_GetMscRateANGLE"));
EGL_GetSyncValuesCHROMIUM =
reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("EGL_GetSyncValuesCHROMIUM"));
EGL_QueryDeviceAttribEXT =

View File

@@ -83,7 +83,7 @@ ANGLE_NO_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
EGL_CreateStreamProducerD3DTextureANGLE;
ANGLE_NO_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC EGL_StreamPostD3DTextureANGLE;
ANGLE_NO_EXPORT extern PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC EGL_SwapBuffersWithFrameTokenANGLE;
ANGLE_NO_EXPORT extern PFNEGLGETMSCRATECHROMIUMPROC EGL_GetMscRateCHROMIUM;
ANGLE_NO_EXPORT extern PFNEGLGETMSCRATEANGLEPROC EGL_GetMscRateANGLE;
ANGLE_NO_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC EGL_GetSyncValuesCHROMIUM;
ANGLE_NO_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC EGL_QueryDeviceAttribEXT;
ANGLE_NO_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC EGL_QueryDeviceStringEXT;

View File

@@ -572,13 +572,13 @@ EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
return EGL_GetSyncValuesCHROMIUM(dpy, surface, ust, msc, sbc);
}
EGLBoolean EGLAPIENTRY eglGetMscRateCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator)
EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator)
{
EnsureEGLLoaded();
return EGL_GetMscRateCHROMIUM(dpy, surface, numerator, denominator);
return EGL_GetMscRateANGLE(dpy, surface, numerator, denominator);
}
EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR(EGLDisplay dpy,

View File

@@ -74,7 +74,7 @@ EXPORTS
eglQueryStringiANGLE @80
eglGetNativeClientBufferANDROID @81
eglDupNativeFenceFDANDROID @82
eglGetMscRateCHROMIUM @83
eglGetMscRateANGLE @83
; 1.5 entry points
eglCreateSync @38

View File

@@ -1020,10 +1020,10 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_WaitSyncKHR(EGLDisplay dpy, EGLSync sync
return EGL_TRUE;
}
EGLBoolean EGLAPIENTRY EGL_GetMscRateCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator)
EGLBoolean EGLAPIENTRY EGL_GetMscRateANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator)
{
ANGLE_SCOPED_GLOBAL_LOCK();
FUNC_EVENT("EGLDisplay dpy = 0x%016" PRIxPTR ", EGLSurface surface = 0x%016" PRIxPTR
@@ -1036,10 +1036,10 @@ EGLBoolean EGLAPIENTRY EGL_GetMscRateCHROMIUM(EGLDisplay dpy,
egl::Display *display = static_cast<egl::Display *>(dpy);
Surface *eglSurface = static_cast<Surface *>(surface);
Error error = ValidateGetMscRateCHROMIUM(display, eglSurface, numerator, denominator);
Error error = ValidateGetMscRateANGLE(display, eglSurface, numerator, denominator);
if (error.isError())
{
thread->setError(error, GetDebug(), "eglGetMscRateCHROMIUM",
thread->setError(error, GetDebug(), "eglGetMscRateANGLE",
GetSurfaceIfValid(display, eglSurface));
return EGL_FALSE;
}
@@ -1047,7 +1047,7 @@ EGLBoolean EGLAPIENTRY EGL_GetMscRateCHROMIUM(EGLDisplay dpy,
error = eglSurface->getMscRate(numerator, denominator);
if (error.isError())
{
thread->setError(error, GetDebug(), "eglGetMscRateCHROMIUM",
thread->setError(error, GetDebug(), "eglGetMscRateANGLE",
GetSurfaceIfValid(display, eglSurface));
return EGL_FALSE;
}

View File

@@ -134,10 +134,12 @@ ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetSyncValuesCHROMIUM(EGLDisplay dpy,
EGLuint64KHR *ust,
EGLuint64KHR *msc,
EGLuint64KHR *sbc);
ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetMscRateCHROMIUM(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator);
// EGL_ANGLE_sync_control_rate
ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_GetMscRateANGLE(EGLDisplay dpy,
EGLSurface surface,
EGLint *numerator,
EGLint *denominator);
// EGL_KHR_swap_buffers_with_damage
ANGLE_EXPORT EGLBoolean EGLAPIENTRY EGL_SwapBuffersWithDamageKHR(EGLDisplay dpy,

View File

@@ -1672,8 +1672,10 @@ EXPORTS
; EGL_ANGLE_swap_with_frame_token
EGL_SwapBuffersWithFrameTokenANGLE
; EGL_ANGLE_sync_control_rate
EGL_GetMscRateANGLE
; EGL_CHROMIUM_sync_control
EGL_GetMscRateCHROMIUM
EGL_GetSyncValuesCHROMIUM
; EGL_EXT_device_query

View File

@@ -1672,8 +1672,10 @@ EXPORTS
; EGL_ANGLE_swap_with_frame_token
EGL_SwapBuffersWithFrameTokenANGLE
; EGL_ANGLE_sync_control_rate
EGL_GetMscRateANGLE
; EGL_CHROMIUM_sync_control
EGL_GetMscRateCHROMIUM
EGL_GetSyncValuesCHROMIUM
; EGL_EXT_device_query

View File

@@ -1672,8 +1672,10 @@ EXPORTS
; EGL_ANGLE_swap_with_frame_token
EGL_SwapBuffersWithFrameTokenANGLE
; EGL_ANGLE_sync_control_rate
EGL_GetMscRateANGLE
; EGL_CHROMIUM_sync_control
EGL_GetMscRateCHROMIUM
EGL_GetSyncValuesCHROMIUM
; EGL_EXT_device_query

View File

@@ -71,7 +71,7 @@ ProcEntry g_procTable[] = {
{"eglGetError", P(EGL_GetError)},
{"eglGetFrameTimestampSupportedANDROID", P(EGL_GetFrameTimestampSupportedANDROID)},
{"eglGetFrameTimestampsANDROID", P(EGL_GetFrameTimestampsANDROID)},
{"eglGetMscRateCHROMIUM", P(EGL_GetMscRateCHROMIUM)},
{"eglGetMscRateANGLE", P(EGL_GetMscRateANGLE)},
{"eglGetNativeClientBufferANDROID", P(EGL_GetNativeClientBufferANDROID)},
{"eglGetNextFrameIdANDROID", P(EGL_GetNextFrameIdANDROID)},
{"eglGetPlatformDisplay", P(EGL_GetPlatformDisplay)},

View File

@@ -77,7 +77,7 @@ ANGLE_UTIL_EXPORT PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
ANGLE_UTIL_EXPORT PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC eglSwapBuffersWithFrameTokenANGLE;
ANGLE_UTIL_EXPORT PFNEGLGETMSCRATECHROMIUMPROC eglGetMscRateCHROMIUM;
ANGLE_UTIL_EXPORT PFNEGLGETMSCRATEANGLEPROC eglGetMscRateANGLE;
ANGLE_UTIL_EXPORT PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;
@@ -214,8 +214,8 @@ void LoadEGL(LoadProc loadProc)
loadProc("eglStreamPostD3DTextureANGLE"));
eglSwapBuffersWithFrameTokenANGLE = reinterpret_cast<PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC>(
loadProc("eglSwapBuffersWithFrameTokenANGLE"));
eglGetMscRateCHROMIUM =
reinterpret_cast<PFNEGLGETMSCRATECHROMIUMPROC>(loadProc("eglGetMscRateCHROMIUM"));
eglGetMscRateANGLE =
reinterpret_cast<PFNEGLGETMSCRATEANGLEPROC>(loadProc("eglGetMscRateANGLE"));
eglGetSyncValuesCHROMIUM =
reinterpret_cast<PFNEGLGETSYNCVALUESCHROMIUMPROC>(loadProc("eglGetSyncValuesCHROMIUM"));
eglQueryDeviceAttribEXT =

View File

@@ -84,7 +84,7 @@ ANGLE_UTIL_EXPORT extern PFNEGLCREATESTREAMPRODUCERD3DTEXTUREANGLEPROC
eglCreateStreamProducerD3DTextureANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLSTREAMPOSTD3DTEXTUREANGLEPROC eglStreamPostD3DTextureANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLSWAPBUFFERSWITHFRAMETOKENANGLEPROC eglSwapBuffersWithFrameTokenANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLGETMSCRATECHROMIUMPROC eglGetMscRateCHROMIUM;
ANGLE_UTIL_EXPORT extern PFNEGLGETMSCRATEANGLEPROC eglGetMscRateANGLE;
ANGLE_UTIL_EXPORT extern PFNEGLGETSYNCVALUESCHROMIUMPROC eglGetSyncValuesCHROMIUM;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICEATTRIBEXTPROC eglQueryDeviceAttribEXT;
ANGLE_UTIL_EXPORT extern PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT;