Commit 1cf8f231 authored by Brian Anderson's avatar Brian Anderson Committed by Commit Bot

gl: Add bindings for eglGetFrameTimestampsANDROID

Bug: 769415
Test: Trace events that use this extension look good.
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I3f051d4f86894f9029774e73b1327262c514fd53
Reviewed-on: https://chromium-review.googlesource.com/685402
Commit-Queue: Brian Anderson <brianderson@chromium.org>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506954}
parent e97e928d
...@@ -1936,6 +1936,19 @@ EGL_FUNCTIONS = [ ...@@ -1936,6 +1936,19 @@ EGL_FUNCTIONS = [
'GL_CHROMIUM_egl_khr_fence_sync_hack' 'GL_CHROMIUM_egl_khr_fence_sync_hack'
] }], ] }],
'arguments': 'EGLDisplay dpy, EGLSyncKHR sync' }, 'arguments': 'EGLDisplay dpy, EGLSyncKHR sync' },
{ 'return_type': 'EGLBoolean',
'versions': [{ 'name': 'eglGetCompositorTimingANDROID',
'extensions': [
'EGL_ANDROID_get_frame_timestamps'
] }],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, '
'EGLint* names, EGLnsecsANDROID* values', },
{ 'return_type': 'EGLBoolean',
'versions': [{ 'name': 'eglGetCompositorTimingSupportedANDROID',
'extensions': [
'EGL_ANDROID_get_frame_timestamps'
] }],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint timestamp', },
{ 'return_type': 'EGLBoolean', { 'return_type': 'EGLBoolean',
'names': ['eglGetConfigAttrib'], 'names': ['eglGetConfigAttrib'],
'arguments': 'arguments':
...@@ -1959,6 +1972,26 @@ EGL_FUNCTIONS = [ ...@@ -1959,6 +1972,26 @@ EGL_FUNCTIONS = [
{ 'return_type': 'EGLint', { 'return_type': 'EGLint',
'names': ['eglGetError'], 'names': ['eglGetError'],
'arguments': 'void', }, 'arguments': 'void', },
{ 'return_type': 'EGLBoolean',
'versions': [{ 'name': 'eglGetFrameTimestampsANDROID',
'extensions': [
'EGL_ANDROID_get_frame_timestamps'
] }],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, '
'EGLint numTimestamps, EGLint* timestamps, '
'EGLnsecsANDROID* values', },
{ 'return_type': 'EGLBoolean',
'versions': [{ 'name': 'eglGetFrameTimestampSupportedANDROID',
'extensions': [
'EGL_ANDROID_get_frame_timestamps'
] }],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint timestamp', },
{ 'return_type': 'EGLBoolean',
'versions': [{ 'name': 'eglGetNextFrameIdANDROID',
'extensions': [
'EGL_ANDROID_get_frame_timestamps'
] }],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId', },
{ 'return_type': 'EGLDisplay', { 'return_type': 'EGLDisplay',
'known_as': 'eglGetPlatformDisplayEXT', 'known_as': 'eglGetPlatformDisplayEXT',
'versions': [{ 'name': 'eglGetPlatformDisplayEXT', 'versions': [{ 'name': 'eglGetPlatformDisplayEXT',
......
...@@ -64,6 +64,14 @@ EGLBoolean eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) override; ...@@ -64,6 +64,14 @@ EGLBoolean eglDestroyImageKHRFn(EGLDisplay dpy, EGLImageKHR image) override;
EGLBoolean eglDestroyStreamKHRFn(EGLDisplay dpy, EGLStreamKHR stream) override; EGLBoolean eglDestroyStreamKHRFn(EGLDisplay dpy, EGLStreamKHR stream) override;
EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) override; EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy, EGLSurface surface) override;
EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) override; EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) override;
EGLBoolean eglGetCompositorTimingANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values) override;
EGLBoolean eglGetCompositorTimingSupportedANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) override;
EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy, EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -77,6 +85,18 @@ EGLDisplay eglGetCurrentDisplayFn(void) override; ...@@ -77,6 +85,18 @@ EGLDisplay eglGetCurrentDisplayFn(void) override;
EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) override; EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) override;
EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) override; EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) override;
EGLint eglGetErrorFn(void) override; EGLint eglGetErrorFn(void) override;
EGLBoolean eglGetFrameTimestampsANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values) override;
EGLBoolean eglGetFrameTimestampSupportedANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) override;
EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId) override;
EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform, EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform,
void* native_display, void* native_display,
const EGLint* attrib_list) override; const EGLint* attrib_list) override;
......
...@@ -57,6 +57,8 @@ void DriverEGL::InitializeStaticBindings() { ...@@ -57,6 +57,8 @@ void DriverEGL::InitializeStaticBindings() {
GetGLProcAddress("eglDestroySurface")); GetGLProcAddress("eglDestroySurface"));
fn.eglDestroySyncKHRFn = reinterpret_cast<eglDestroySyncKHRProc>( fn.eglDestroySyncKHRFn = reinterpret_cast<eglDestroySyncKHRProc>(
GetGLProcAddress("eglDestroySyncKHR")); GetGLProcAddress("eglDestroySyncKHR"));
fn.eglGetCompositorTimingANDROIDFn = 0;
fn.eglGetCompositorTimingSupportedANDROIDFn = 0;
fn.eglGetConfigAttribFn = reinterpret_cast<eglGetConfigAttribProc>( fn.eglGetConfigAttribFn = reinterpret_cast<eglGetConfigAttribProc>(
GetGLProcAddress("eglGetConfigAttrib")); GetGLProcAddress("eglGetConfigAttrib"));
fn.eglGetConfigsFn = fn.eglGetConfigsFn =
...@@ -71,6 +73,9 @@ void DriverEGL::InitializeStaticBindings() { ...@@ -71,6 +73,9 @@ void DriverEGL::InitializeStaticBindings() {
reinterpret_cast<eglGetDisplayProc>(GetGLProcAddress("eglGetDisplay")); reinterpret_cast<eglGetDisplayProc>(GetGLProcAddress("eglGetDisplay"));
fn.eglGetErrorFn = fn.eglGetErrorFn =
reinterpret_cast<eglGetErrorProc>(GetGLProcAddress("eglGetError")); reinterpret_cast<eglGetErrorProc>(GetGLProcAddress("eglGetError"));
fn.eglGetFrameTimestampsANDROIDFn = 0;
fn.eglGetFrameTimestampSupportedANDROIDFn = 0;
fn.eglGetNextFrameIdANDROIDFn = 0;
fn.eglGetPlatformDisplayEXTFn = 0; fn.eglGetPlatformDisplayEXTFn = 0;
fn.eglGetProcAddressFn = reinterpret_cast<eglGetProcAddressProc>( fn.eglGetProcAddressFn = reinterpret_cast<eglGetProcAddressProc>(
GetGLProcAddress("eglGetProcAddress")); GetGLProcAddress("eglGetProcAddress"));
...@@ -146,6 +151,8 @@ void DriverEGL::InitializeExtensionBindings() { ...@@ -146,6 +151,8 @@ void DriverEGL::InitializeExtensionBindings() {
ExtensionSet extensions(MakeExtensionSet(platform_extensions)); ExtensionSet extensions(MakeExtensionSet(platform_extensions));
ALLOW_UNUSED_LOCAL(extensions); ALLOW_UNUSED_LOCAL(extensions);
ext.b_EGL_ANDROID_get_frame_timestamps =
HasExtension(extensions, "EGL_ANDROID_get_frame_timestamps");
ext.b_EGL_ANGLE_d3d_share_handle_client_buffer = ext.b_EGL_ANGLE_d3d_share_handle_client_buffer =
HasExtension(extensions, "EGL_ANGLE_d3d_share_handle_client_buffer"); HasExtension(extensions, "EGL_ANGLE_d3d_share_handle_client_buffer");
ext.b_EGL_ANGLE_program_cache_control = ext.b_EGL_ANGLE_program_cache_control =
...@@ -205,6 +212,36 @@ void DriverEGL::InitializeExtensionBindings() { ...@@ -205,6 +212,36 @@ void DriverEGL::InitializeExtensionBindings() {
GetGLProcAddress("eglDestroyStreamKHR")); GetGLProcAddress("eglDestroyStreamKHR"));
} }
if (ext.b_EGL_ANDROID_get_frame_timestamps) {
fn.eglGetCompositorTimingANDROIDFn =
reinterpret_cast<eglGetCompositorTimingANDROIDProc>(
GetGLProcAddress("eglGetCompositorTimingANDROID"));
}
if (ext.b_EGL_ANDROID_get_frame_timestamps) {
fn.eglGetCompositorTimingSupportedANDROIDFn =
reinterpret_cast<eglGetCompositorTimingSupportedANDROIDProc>(
GetGLProcAddress("eglGetCompositorTimingSupportedANDROID"));
}
if (ext.b_EGL_ANDROID_get_frame_timestamps) {
fn.eglGetFrameTimestampsANDROIDFn =
reinterpret_cast<eglGetFrameTimestampsANDROIDProc>(
GetGLProcAddress("eglGetFrameTimestampsANDROID"));
}
if (ext.b_EGL_ANDROID_get_frame_timestamps) {
fn.eglGetFrameTimestampSupportedANDROIDFn =
reinterpret_cast<eglGetFrameTimestampSupportedANDROIDProc>(
GetGLProcAddress("eglGetFrameTimestampSupportedANDROID"));
}
if (ext.b_EGL_ANDROID_get_frame_timestamps) {
fn.eglGetNextFrameIdANDROIDFn =
reinterpret_cast<eglGetNextFrameIdANDROIDProc>(
GetGLProcAddress("eglGetNextFrameIdANDROID"));
}
if (ext.b_EGL_CHROMIUM_sync_control) { if (ext.b_EGL_CHROMIUM_sync_control) {
fn.eglGetSyncValuesCHROMIUMFn = fn.eglGetSyncValuesCHROMIUMFn =
reinterpret_cast<eglGetSyncValuesCHROMIUMProc>( reinterpret_cast<eglGetSyncValuesCHROMIUMProc>(
...@@ -431,6 +468,24 @@ EGLBoolean EGLApiBase::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) { ...@@ -431,6 +468,24 @@ EGLBoolean EGLApiBase::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
return driver_->fn.eglDestroySyncKHRFn(dpy, sync); return driver_->fn.eglDestroySyncKHRFn(dpy, sync);
} }
EGLBoolean EGLApiBase::eglGetCompositorTimingANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values) {
return driver_->fn.eglGetCompositorTimingANDROIDFn(
dpy, surface, numTimestamps, names, values);
}
EGLBoolean EGLApiBase::eglGetCompositorTimingSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
return driver_->fn.eglGetCompositorTimingSupportedANDROIDFn(dpy, surface,
timestamp);
}
EGLBoolean EGLApiBase::eglGetConfigAttribFn(EGLDisplay dpy, EGLBoolean EGLApiBase::eglGetConfigAttribFn(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -465,6 +520,30 @@ EGLint EGLApiBase::eglGetErrorFn(void) { ...@@ -465,6 +520,30 @@ EGLint EGLApiBase::eglGetErrorFn(void) {
return driver_->fn.eglGetErrorFn(); return driver_->fn.eglGetErrorFn();
} }
EGLBoolean EGLApiBase::eglGetFrameTimestampsANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values) {
return driver_->fn.eglGetFrameTimestampsANDROIDFn(
dpy, surface, frameId, numTimestamps, timestamps, values);
}
EGLBoolean EGLApiBase::eglGetFrameTimestampSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
return driver_->fn.eglGetFrameTimestampSupportedANDROIDFn(dpy, surface,
timestamp);
}
EGLBoolean EGLApiBase::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId) {
return driver_->fn.eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
}
EGLDisplay EGLApiBase::eglGetPlatformDisplayEXTFn(EGLenum platform, EGLDisplay EGLApiBase::eglGetPlatformDisplayEXTFn(EGLenum platform,
void* native_display, void* native_display,
const EGLint* attrib_list) { const EGLint* attrib_list) {
...@@ -830,6 +909,28 @@ EGLBoolean TraceEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) { ...@@ -830,6 +909,28 @@ EGLBoolean TraceEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
return egl_api_->eglDestroySyncKHRFn(dpy, sync); return egl_api_->eglDestroySyncKHRFn(dpy, sync);
} }
EGLBoolean TraceEGLApi::eglGetCompositorTimingANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu",
"TraceGLAPI::eglGetCompositorTimingANDROID")
return egl_api_->eglGetCompositorTimingANDROIDFn(dpy, surface, numTimestamps,
names, values);
}
EGLBoolean TraceEGLApi::eglGetCompositorTimingSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
TRACE_EVENT_BINARY_EFFICIENT0(
"gpu", "TraceGLAPI::eglGetCompositorTimingSupportedANDROID")
return egl_api_->eglGetCompositorTimingSupportedANDROIDFn(dpy, surface,
timestamp);
}
EGLBoolean TraceEGLApi::eglGetConfigAttribFn(EGLDisplay dpy, EGLBoolean TraceEGLApi::eglGetConfigAttribFn(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -871,6 +972,36 @@ EGLint TraceEGLApi::eglGetErrorFn(void) { ...@@ -871,6 +972,36 @@ EGLint TraceEGLApi::eglGetErrorFn(void) {
return egl_api_->eglGetErrorFn(); return egl_api_->eglGetErrorFn();
} }
EGLBoolean TraceEGLApi::eglGetFrameTimestampsANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu",
"TraceGLAPI::eglGetFrameTimestampsANDROID")
return egl_api_->eglGetFrameTimestampsANDROIDFn(
dpy, surface, frameId, numTimestamps, timestamps, values);
}
EGLBoolean TraceEGLApi::eglGetFrameTimestampSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
TRACE_EVENT_BINARY_EFFICIENT0(
"gpu", "TraceGLAPI::eglGetFrameTimestampSupportedANDROID")
return egl_api_->eglGetFrameTimestampSupportedANDROIDFn(dpy, surface,
timestamp);
}
EGLBoolean TraceEGLApi::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetNextFrameIdANDROID")
return egl_api_->eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
}
EGLDisplay TraceEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform, EGLDisplay TraceEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform,
void* native_display, void* native_display,
const EGLint* attrib_list) { const EGLint* attrib_list) {
...@@ -1355,6 +1486,34 @@ EGLBoolean DebugEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) { ...@@ -1355,6 +1486,34 @@ EGLBoolean DebugEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) {
return result; return result;
} }
EGLBoolean DebugEGLApi::eglGetCompositorTimingANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values) {
GL_SERVICE_LOG("eglGetCompositorTimingANDROID"
<< "(" << dpy << ", " << surface << ", " << numTimestamps
<< ", " << static_cast<const void*>(names) << ", "
<< static_cast<const void*>(values) << ")");
EGLBoolean result = egl_api_->eglGetCompositorTimingANDROIDFn(
dpy, surface, numTimestamps, names, values);
GL_SERVICE_LOG("GL_RESULT: " << result);
return result;
}
EGLBoolean DebugEGLApi::eglGetCompositorTimingSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
GL_SERVICE_LOG("eglGetCompositorTimingSupportedANDROID"
<< "(" << dpy << ", " << surface << ", " << timestamp << ")");
EGLBoolean result = egl_api_->eglGetCompositorTimingSupportedANDROIDFn(
dpy, surface, timestamp);
GL_SERVICE_LOG("GL_RESULT: " << result);
return result;
}
EGLBoolean DebugEGLApi::eglGetConfigAttribFn(EGLDisplay dpy, EGLBoolean DebugEGLApi::eglGetConfigAttribFn(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -1425,6 +1584,48 @@ EGLint DebugEGLApi::eglGetErrorFn(void) { ...@@ -1425,6 +1584,48 @@ EGLint DebugEGLApi::eglGetErrorFn(void) {
return result; return result;
} }
EGLBoolean DebugEGLApi::eglGetFrameTimestampsANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values) {
GL_SERVICE_LOG("eglGetFrameTimestampsANDROID"
<< "(" << dpy << ", " << surface << ", " << frameId << ", "
<< numTimestamps << ", "
<< static_cast<const void*>(timestamps) << ", "
<< static_cast<const void*>(values) << ")");
EGLBoolean result = egl_api_->eglGetFrameTimestampsANDROIDFn(
dpy, surface, frameId, numTimestamps, timestamps, values);
GL_SERVICE_LOG("GL_RESULT: " << result);
return result;
}
EGLBoolean DebugEGLApi::eglGetFrameTimestampSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) {
GL_SERVICE_LOG("eglGetFrameTimestampSupportedANDROID"
<< "(" << dpy << ", " << surface << ", " << timestamp << ")");
EGLBoolean result =
egl_api_->eglGetFrameTimestampSupportedANDROIDFn(dpy, surface, timestamp);
GL_SERVICE_LOG("GL_RESULT: " << result);
return result;
}
EGLBoolean DebugEGLApi::eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId) {
GL_SERVICE_LOG("eglGetNextFrameIdANDROID"
<< "(" << dpy << ", " << surface << ", "
<< static_cast<const void*>(frameId) << ")");
EGLBoolean result =
egl_api_->eglGetNextFrameIdANDROIDFn(dpy, surface, frameId);
GL_SERVICE_LOG("GL_RESULT: " << result);
return result;
}
EGLDisplay DebugEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform, EGLDisplay DebugEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform,
void* native_display, void* native_display,
const EGLint* attrib_list) { const EGLint* attrib_list) {
......
...@@ -89,6 +89,16 @@ typedef EGLBoolean(GL_BINDING_CALL* eglDestroySurfaceProc)(EGLDisplay dpy, ...@@ -89,6 +89,16 @@ typedef EGLBoolean(GL_BINDING_CALL* eglDestroySurfaceProc)(EGLDisplay dpy,
EGLSurface surface); EGLSurface surface);
typedef EGLBoolean(GL_BINDING_CALL* eglDestroySyncKHRProc)(EGLDisplay dpy, typedef EGLBoolean(GL_BINDING_CALL* eglDestroySyncKHRProc)(EGLDisplay dpy,
EGLSyncKHR sync); EGLSyncKHR sync);
typedef EGLBoolean(GL_BINDING_CALL* eglGetCompositorTimingANDROIDProc)(
EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values);
typedef EGLBoolean(GL_BINDING_CALL* eglGetCompositorTimingSupportedANDROIDProc)(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp);
typedef EGLBoolean(GL_BINDING_CALL* eglGetConfigAttribProc)(EGLDisplay dpy, typedef EGLBoolean(GL_BINDING_CALL* eglGetConfigAttribProc)(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -103,6 +113,21 @@ typedef EGLSurface(GL_BINDING_CALL* eglGetCurrentSurfaceProc)(EGLint readdraw); ...@@ -103,6 +113,21 @@ typedef EGLSurface(GL_BINDING_CALL* eglGetCurrentSurfaceProc)(EGLint readdraw);
typedef EGLDisplay(GL_BINDING_CALL* eglGetDisplayProc)( typedef EGLDisplay(GL_BINDING_CALL* eglGetDisplayProc)(
EGLNativeDisplayType display_id); EGLNativeDisplayType display_id);
typedef EGLint(GL_BINDING_CALL* eglGetErrorProc)(void); typedef EGLint(GL_BINDING_CALL* eglGetErrorProc)(void);
typedef EGLBoolean(GL_BINDING_CALL* eglGetFrameTimestampsANDROIDProc)(
EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values);
typedef EGLBoolean(GL_BINDING_CALL* eglGetFrameTimestampSupportedANDROIDProc)(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp);
typedef EGLBoolean(GL_BINDING_CALL* eglGetNextFrameIdANDROIDProc)(
EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId);
typedef EGLDisplay(GL_BINDING_CALL* eglGetPlatformDisplayEXTProc)( typedef EGLDisplay(GL_BINDING_CALL* eglGetPlatformDisplayEXTProc)(
EGLenum platform, EGLenum platform,
void* native_display, void* native_display,
...@@ -230,6 +255,7 @@ typedef EGLint(GL_BINDING_CALL* eglWaitSyncKHRProc)(EGLDisplay dpy, ...@@ -230,6 +255,7 @@ typedef EGLint(GL_BINDING_CALL* eglWaitSyncKHRProc)(EGLDisplay dpy,
struct ExtensionsEGL { struct ExtensionsEGL {
bool b_EGL_EXT_platform_base; bool b_EGL_EXT_platform_base;
bool b_EGL_ANDROID_get_frame_timestamps;
bool b_EGL_ANGLE_d3d_share_handle_client_buffer; bool b_EGL_ANGLE_d3d_share_handle_client_buffer;
bool b_EGL_ANGLE_program_cache_control; bool b_EGL_ANGLE_program_cache_control;
bool b_EGL_ANGLE_query_surface_pointer; bool b_EGL_ANGLE_query_surface_pointer;
...@@ -271,6 +297,9 @@ struct ProcsEGL { ...@@ -271,6 +297,9 @@ struct ProcsEGL {
eglDestroyStreamKHRProc eglDestroyStreamKHRFn; eglDestroyStreamKHRProc eglDestroyStreamKHRFn;
eglDestroySurfaceProc eglDestroySurfaceFn; eglDestroySurfaceProc eglDestroySurfaceFn;
eglDestroySyncKHRProc eglDestroySyncKHRFn; eglDestroySyncKHRProc eglDestroySyncKHRFn;
eglGetCompositorTimingANDROIDProc eglGetCompositorTimingANDROIDFn;
eglGetCompositorTimingSupportedANDROIDProc
eglGetCompositorTimingSupportedANDROIDFn;
eglGetConfigAttribProc eglGetConfigAttribFn; eglGetConfigAttribProc eglGetConfigAttribFn;
eglGetConfigsProc eglGetConfigsFn; eglGetConfigsProc eglGetConfigsFn;
eglGetCurrentContextProc eglGetCurrentContextFn; eglGetCurrentContextProc eglGetCurrentContextFn;
...@@ -278,6 +307,10 @@ struct ProcsEGL { ...@@ -278,6 +307,10 @@ struct ProcsEGL {
eglGetCurrentSurfaceProc eglGetCurrentSurfaceFn; eglGetCurrentSurfaceProc eglGetCurrentSurfaceFn;
eglGetDisplayProc eglGetDisplayFn; eglGetDisplayProc eglGetDisplayFn;
eglGetErrorProc eglGetErrorFn; eglGetErrorProc eglGetErrorFn;
eglGetFrameTimestampsANDROIDProc eglGetFrameTimestampsANDROIDFn;
eglGetFrameTimestampSupportedANDROIDProc
eglGetFrameTimestampSupportedANDROIDFn;
eglGetNextFrameIdANDROIDProc eglGetNextFrameIdANDROIDFn;
eglGetPlatformDisplayEXTProc eglGetPlatformDisplayEXTFn; eglGetPlatformDisplayEXTProc eglGetPlatformDisplayEXTFn;
eglGetProcAddressProc eglGetProcAddressFn; eglGetProcAddressProc eglGetProcAddressFn;
eglGetSyncAttribKHRProc eglGetSyncAttribKHRFn; eglGetSyncAttribKHRProc eglGetSyncAttribKHRFn;
...@@ -384,6 +417,16 @@ class GL_EXPORT EGLApi { ...@@ -384,6 +417,16 @@ class GL_EXPORT EGLApi {
virtual EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy, virtual EGLBoolean eglDestroySurfaceFn(EGLDisplay dpy,
EGLSurface surface) = 0; EGLSurface surface) = 0;
virtual EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) = 0; virtual EGLBoolean eglDestroySyncKHRFn(EGLDisplay dpy, EGLSyncKHR sync) = 0;
virtual EGLBoolean eglGetCompositorTimingANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint numTimestamps,
EGLint* names,
EGLnsecsANDROID* values) = 0;
virtual EGLBoolean eglGetCompositorTimingSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) = 0;
virtual EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy, virtual EGLBoolean eglGetConfigAttribFn(EGLDisplay dpy,
EGLConfig config, EGLConfig config,
EGLint attribute, EGLint attribute,
...@@ -397,6 +440,20 @@ class GL_EXPORT EGLApi { ...@@ -397,6 +440,20 @@ class GL_EXPORT EGLApi {
virtual EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) = 0; virtual EGLSurface eglGetCurrentSurfaceFn(EGLint readdraw) = 0;
virtual EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) = 0; virtual EGLDisplay eglGetDisplayFn(EGLNativeDisplayType display_id) = 0;
virtual EGLint eglGetErrorFn(void) = 0; virtual EGLint eglGetErrorFn(void) = 0;
virtual EGLBoolean eglGetFrameTimestampsANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR frameId,
EGLint numTimestamps,
EGLint* timestamps,
EGLnsecsANDROID* values) = 0;
virtual EGLBoolean eglGetFrameTimestampSupportedANDROIDFn(
EGLDisplay dpy,
EGLSurface surface,
EGLint timestamp) = 0;
virtual EGLBoolean eglGetNextFrameIdANDROIDFn(EGLDisplay dpy,
EGLSurface surface,
EGLuint64KHR* frameId) = 0;
virtual EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform, virtual EGLDisplay eglGetPlatformDisplayEXTFn(EGLenum platform,
void* native_display, void* native_display,
const EGLint* attrib_list) = 0; const EGLint* attrib_list) = 0;
...@@ -535,6 +592,10 @@ class GL_EXPORT EGLApi { ...@@ -535,6 +592,10 @@ class GL_EXPORT EGLApi {
#define eglDestroyStreamKHR ::gl::g_current_egl_context->eglDestroyStreamKHRFn #define eglDestroyStreamKHR ::gl::g_current_egl_context->eglDestroyStreamKHRFn
#define eglDestroySurface ::gl::g_current_egl_context->eglDestroySurfaceFn #define eglDestroySurface ::gl::g_current_egl_context->eglDestroySurfaceFn
#define eglDestroySyncKHR ::gl::g_current_egl_context->eglDestroySyncKHRFn #define eglDestroySyncKHR ::gl::g_current_egl_context->eglDestroySyncKHRFn
#define eglGetCompositorTimingANDROID \
::gl::g_current_egl_context->eglGetCompositorTimingANDROIDFn
#define eglGetCompositorTimingSupportedANDROID \
::gl::g_current_egl_context->eglGetCompositorTimingSupportedANDROIDFn
#define eglGetConfigAttrib ::gl::g_current_egl_context->eglGetConfigAttribFn #define eglGetConfigAttrib ::gl::g_current_egl_context->eglGetConfigAttribFn
#define eglGetConfigs ::gl::g_current_egl_context->eglGetConfigsFn #define eglGetConfigs ::gl::g_current_egl_context->eglGetConfigsFn
#define eglGetCurrentContext ::gl::g_current_egl_context->eglGetCurrentContextFn #define eglGetCurrentContext ::gl::g_current_egl_context->eglGetCurrentContextFn
...@@ -542,6 +603,12 @@ class GL_EXPORT EGLApi { ...@@ -542,6 +603,12 @@ class GL_EXPORT EGLApi {
#define eglGetCurrentSurface ::gl::g_current_egl_context->eglGetCurrentSurfaceFn #define eglGetCurrentSurface ::gl::g_current_egl_context->eglGetCurrentSurfaceFn
#define eglGetDisplay ::gl::g_current_egl_context->eglGetDisplayFn #define eglGetDisplay ::gl::g_current_egl_context->eglGetDisplayFn
#define eglGetError ::gl::g_current_egl_context->eglGetErrorFn #define eglGetError ::gl::g_current_egl_context->eglGetErrorFn
#define eglGetFrameTimestampsANDROID \
::gl::g_current_egl_context->eglGetFrameTimestampsANDROIDFn
#define eglGetFrameTimestampSupportedANDROID \
::gl::g_current_egl_context->eglGetFrameTimestampSupportedANDROIDFn
#define eglGetNextFrameIdANDROID \
::gl::g_current_egl_context->eglGetNextFrameIdANDROIDFn
#define eglGetPlatformDisplayEXT \ #define eglGetPlatformDisplayEXT \
::gl::g_current_egl_context->eglGetPlatformDisplayEXTFn ::gl::g_current_egl_context->eglGetPlatformDisplayEXTFn
#define eglGetProcAddress ::gl::g_current_egl_context->eglGetProcAddressFn #define eglGetProcAddress ::gl::g_current_egl_context->eglGetProcAddressFn
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment