Index: gpu/command_buffer/client/gles2_implementation.cc |
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc |
index e8537669a790e4239f6973d07343d51e226dc593..2dd95ec410850613d8279ef3ba12b7d0bb884469 100644 |
--- a/gpu/command_buffer/client/gles2_implementation.cc |
+++ b/gpu/command_buffer/client/gles2_implementation.cc |
@@ -4930,6 +4930,39 @@ void GLES2Implementation::UniformBlockBinding(GLuint program, |
CheckGLError(); |
} |
+GLenum GLES2Implementation::ClientWaitSync( |
+ GLsync sync, GLbitfield flags, GLuint64 timeout) { |
+ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClientWaitSync(" << sync |
+ << ", " << flags << ", " << timeout << ")"); |
+ typedef cmds::ClientWaitSync::Result Result; |
+ Result* result = GetResultAs<Result*>(); |
+ if (!result) { |
+ SetGLError(GL_OUT_OF_MEMORY, "ClientWaitSync", ""); |
+ return GL_WAIT_FAILED; |
+ } |
+ *result = GL_WAIT_FAILED; |
+ uint32_t v32_0 = 0, v32_1 = 0; |
+ GLES2Util::MapUint64ToTwoUint32(timeout, &v32_0, &v32_1); |
+ helper_->ClientWaitSync( |
+ ToGLuint(sync), flags, v32_0, v32_1, |
+ GetResultShmId(), GetResultShmOffset()); |
+ WaitForCmd(); |
+ GPU_CLIENT_LOG("returned " << *result); |
+ CheckGLError(); |
+ return *result; |
+} |
+ |
+void GLES2Implementation::WaitSync( |
+ GLsync sync, GLbitfield flags, GLuint64 timeout) { |
+ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glWaitSync(" << sync << ", " |
+ << flags << ", " << timeout << ")"); |
+ uint32_t v32_0 = 0, v32_1 = 0; |
+ GLES2Util::MapUint64ToTwoUint32(timeout, &v32_0, &v32_1); |
+ helper_->WaitSync(ToGLuint(sync), flags, v32_0, v32_1); |
+ CheckGLError(); |
+} |
// Include the auto-generated part of this file. We split this because it means |
// we can easily edit the non-auto generated parts right here in this file |