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 3424bc2a5310224463bbed535e1e84eed8e336d0..5884f51c3a88900d8acf3545cb30ae438b605881 100644 |
--- a/gpu/command_buffer/client/gles2_implementation.cc |
+++ b/gpu/command_buffer/client/gles2_implementation.cc |
@@ -6285,6 +6285,38 @@ GLuint GLES2Implementation::CreateGpuMemoryBufferImageCHROMIUM( |
return image_id; |
} |
+GLuint GLES2Implementation::CreateFenceCHROMIUMHelper(ClientFence fence) { |
+ int32_t fence_id = gpu_control_->CreateFence(fence); |
+ if (fence_id < 0) { |
+ SetGLError(GL_OUT_OF_MEMORY, "glCreateFenceCHROMIUM", "fence_id < 0"); |
+ return 0; |
+ } |
+ return fence_id; |
+} |
+ |
+GLuint GLES2Implementation::CreateFenceCHROMIUM(ClientFence fence) { |
+ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCreateFenceCHROMIUM()"); |
+ GLuint fence_id = CreateFenceCHROMIUMHelper(fence); |
+ CheckGLError(); |
+ return fence_id; |
+} |
+ |
+void GLES2Implementation::DestroyFenceCHROMIUMHelper(GLuint fence_id) { |
+ // Flush the command stream to make sure all pending commands |
+ // that may refer to the fence_id are executed on the service side. |
+ helper_->CommandBufferHelper::Flush(); |
+ gpu_control_->DestroyFence(fence_id); |
+} |
+ |
+void GLES2Implementation::DestroyFenceCHROMIUM(GLuint fence_id) { |
+ GPU_CLIENT_SINGLE_THREAD_CHECK(); |
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDestroyFenceCHROMIUM(" |
+ << fence_id << ")"); |
+ DestroyFenceCHROMIUMHelper(fence_id); |
+ CheckGLError(); |
+} |
+ |
bool GLES2Implementation::ValidateSize(const char* func, GLsizeiptr size) { |
if (size < 0) { |
SetGLError(GL_INVALID_VALUE, func, "size < 0"); |