Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: ui/gl/gl_bindings_autogen_egl.cc

Issue 2302393002: Support swap damage rect using eglSwapBuffersWithDamageKHR (Closed)
Patch Set: Update GLSurfaceAdapter Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.h ('k') | ui/gl/gl_surface.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/gl_bindings_autogen_egl.cc
diff --git a/ui/gl/gl_bindings_autogen_egl.cc b/ui/gl/gl_bindings_autogen_egl.cc
index 61c4fd58c781b416818f30c62f2ddf351594532c..ed0a6cf5ab84bf78c54aa0e6066100373ac3928f 100644
--- a/ui/gl/gl_bindings_autogen_egl.cc
+++ b/ui/gl/gl_bindings_autogen_egl.cc
@@ -109,6 +109,7 @@ void DriverEGL::InitializeStaticBindings() {
GetGLProcAddress("eglSurfaceAttrib"));
fn.eglSwapBuffersFn =
reinterpret_cast<eglSwapBuffersProc>(GetGLProcAddress("eglSwapBuffers"));
+ fn.eglSwapBuffersWithDamageKHRFn = 0;
fn.eglSwapIntervalFn = reinterpret_cast<eglSwapIntervalProc>(
GetGLProcAddress("eglSwapInterval"));
fn.eglTerminateFn =
@@ -172,6 +173,8 @@ void DriverEGL::InitializeExtensionBindings() {
ext.b_EGL_KHR_stream_consumer_gltexture =
extensions.find("EGL_KHR_stream_consumer_gltexture ") !=
std::string::npos;
+ ext.b_EGL_KHR_swap_buffers_with_damage =
+ extensions.find("EGL_KHR_swap_buffers_with_damage ") != std::string::npos;
ext.b_EGL_KHR_wait_sync =
extensions.find("EGL_KHR_wait_sync ") != std::string::npos;
ext.b_EGL_NV_post_sub_buffer =
@@ -295,6 +298,13 @@ void DriverEGL::InitializeExtensionBindings() {
GetGLProcAddress("eglStreamPostD3DTextureNV12ANGLE"));
}
+ debug_fn.eglSwapBuffersWithDamageKHRFn = 0;
+ if (ext.b_EGL_KHR_swap_buffers_with_damage) {
+ fn.eglSwapBuffersWithDamageKHRFn =
+ reinterpret_cast<eglSwapBuffersWithDamageKHRProc>(
+ GetGLProcAddress("eglSwapBuffersWithDamageKHR"));
+ }
+
debug_fn.eglWaitSyncKHRFn = 0;
if (ext.b_EGL_KHR_wait_sync) {
fn.eglWaitSyncKHRFn = reinterpret_cast<eglWaitSyncKHRProc>(
@@ -970,6 +980,21 @@ static EGLBoolean GL_BINDING_CALL Debug_eglSwapBuffers(EGLDisplay dpy,
return result;
}
+static EGLBoolean GL_BINDING_CALL
+Debug_eglSwapBuffersWithDamageKHR(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint* rects,
+ EGLint n_rects) {
+ GL_SERVICE_LOG("eglSwapBuffersWithDamageKHR"
+ << "(" << dpy << ", " << surface << ", "
+ << static_cast<const void*>(rects) << ", " << n_rects << ")");
+ DCHECK(g_driver_egl.debug_fn.eglSwapBuffersWithDamageKHRFn != nullptr);
+ EGLBoolean result = g_driver_egl.debug_fn.eglSwapBuffersWithDamageKHRFn(
+ dpy, surface, rects, n_rects);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+}
+
static EGLBoolean GL_BINDING_CALL Debug_eglSwapInterval(EGLDisplay dpy,
EGLint interval) {
GL_SERVICE_LOG("eglSwapInterval"
@@ -1245,6 +1270,10 @@ void DriverEGL::InitializeDebugBindings() {
debug_fn.eglSwapBuffersFn = fn.eglSwapBuffersFn;
fn.eglSwapBuffersFn = Debug_eglSwapBuffers;
}
+ if (!debug_fn.eglSwapBuffersWithDamageKHRFn) {
+ debug_fn.eglSwapBuffersWithDamageKHRFn = fn.eglSwapBuffersWithDamageKHRFn;
+ fn.eglSwapBuffersWithDamageKHRFn = Debug_eglSwapBuffersWithDamageKHR;
+ }
if (!debug_fn.eglSwapIntervalFn) {
debug_fn.eglSwapIntervalFn = fn.eglSwapIntervalFn;
fn.eglSwapIntervalFn = Debug_eglSwapInterval;
@@ -1589,6 +1618,14 @@ EGLBoolean EGLApiBase::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) {
return driver_->fn.eglSwapBuffersFn(dpy, surface);
}
+EGLBoolean EGLApiBase::eglSwapBuffersWithDamageKHRFn(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint* rects,
+ EGLint n_rects) {
+ return driver_->fn.eglSwapBuffersWithDamageKHRFn(dpy, surface, rects,
+ n_rects);
+}
+
EGLBoolean EGLApiBase::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) {
return driver_->fn.eglSwapIntervalFn(dpy, interval);
}
@@ -1988,6 +2025,15 @@ EGLBoolean TraceEGLApi::eglSwapBuffersFn(EGLDisplay dpy, EGLSurface surface) {
return egl_api_->eglSwapBuffersFn(dpy, surface);
}
+EGLBoolean TraceEGLApi::eglSwapBuffersWithDamageKHRFn(EGLDisplay dpy,
+ EGLSurface surface,
+ EGLint* rects,
+ EGLint n_rects) {
+ TRACE_EVENT_BINARY_EFFICIENT0("gpu",
+ "TraceGLAPI::eglSwapBuffersWithDamageKHR")
+ return egl_api_->eglSwapBuffersWithDamageKHRFn(dpy, surface, rects, n_rects);
+}
+
EGLBoolean TraceEGLApi::eglSwapIntervalFn(EGLDisplay dpy, EGLint interval) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSwapInterval")
return egl_api_->eglSwapIntervalFn(dpy, interval);
« no previous file with comments | « ui/gl/gl_bindings_autogen_egl.h ('k') | ui/gl/gl_surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698