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

Side by Side Diff: ui/gl/gl_fence_arb.cc

Issue 685003007: Check if there is error on waiting for GL Fence. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gl/gl_fence_arb.h" 5 #include "ui/gl/gl_fence_arb.h"
6 6
7 #include "ui/gl/gl_bindings.h" 7 #include "ui/gl/gl_bindings.h"
8 #include "ui/gl/gl_context.h" 8 #include "ui/gl/gl_context.h"
9 9
10 namespace gfx { 10 namespace gfx {
(...skipping 10 matching lines...) Expand all
21 21
22 bool GLFenceARB::HasCompleted() { 22 bool GLFenceARB::HasCompleted() {
23 // Handle the case where FenceSync failed. 23 // Handle the case where FenceSync failed.
24 if (!sync_) 24 if (!sync_)
25 return true; 25 return true;
26 26
27 DCHECK_EQ(GL_TRUE, glIsSync(sync_)); 27 DCHECK_EQ(GL_TRUE, glIsSync(sync_));
28 // We could potentially use glGetSynciv here, but it doesn't work 28 // We could potentially use glGetSynciv here, but it doesn't work
29 // on OSX 10.7 (always says the fence is not signaled yet). 29 // on OSX 10.7 (always says the fence is not signaled yet).
30 // glClientWaitSync works better, so let's use that instead. 30 // glClientWaitSync works better, so let's use that instead.
31 return glClientWaitSync(sync_, 0, 0) != GL_TIMEOUT_EXPIRED; 31 GLenum result = glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
no sievers 2014/10/31 18:49:32 GL_SYNC_FLUSH_COMMANDS_BIT doesn't work here becau
32 DCHECK_NE(GL_WAIT_FAILED, result);
no sievers 2014/10/31 18:49:32 The spec says it can only fail if you use an illeg
33 return result != GL_TIMEOUT_EXPIRED;
32 } 34 }
33 35
34 void GLFenceARB::ClientWait() { 36 void GLFenceARB::ClientWait() {
35 DCHECK_EQ(GL_TRUE, glIsSync(sync_)); 37 DCHECK_EQ(GL_TRUE, glIsSync(sync_));
36 if (!flush_event_.get() || flush_event_->IsSignaled()) { 38 if (!flush_event_.get() || flush_event_->IsSignaled()) {
37 glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED); 39 glClientWaitSync(sync_, GL_SYNC_FLUSH_COMMANDS_BIT, GL_TIMEOUT_IGNORED);
38 } else { 40 } else {
39 LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping..."; 41 LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
40 } 42 }
41 } 43 }
42 44
43 void GLFenceARB::ServerWait() { 45 void GLFenceARB::ServerWait() {
44 DCHECK_EQ(GL_TRUE, glIsSync(sync_)); 46 DCHECK_EQ(GL_TRUE, glIsSync(sync_));
45 if (!flush_event_.get() || flush_event_->IsSignaled()) { 47 if (!flush_event_.get() || flush_event_->IsSignaled()) {
46 glWaitSync(sync_, 0, GL_TIMEOUT_IGNORED); 48 glWaitSync(sync_, 0, GL_TIMEOUT_IGNORED);
47 } else { 49 } else {
48 LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping..."; 50 LOG(ERROR) << "Trying to wait for uncommitted fence. Skipping...";
49 } 51 }
50 } 52 }
51 53
52 GLFenceARB::~GLFenceARB() { 54 GLFenceARB::~GLFenceARB() {
53 DCHECK_EQ(GL_TRUE, glIsSync(sync_)); 55 DCHECK_EQ(GL_TRUE, glIsSync(sync_));
54 glDeleteSync(sync_); 56 glDeleteSync(sync_);
55 } 57 }
56 58
57 } // namespace gfx 59 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698