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

Unified Diff: gpu/ipc/in_process_command_buffer.cc

Issue 2550583002: gpu: Thread-safe command buffer state lookup. (Closed)
Patch Set: Created 4 years 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
Index: gpu/ipc/in_process_command_buffer.cc
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc
index a30b1e17e7ba1a1a4d304a13f5f999ea5b8ebefd..437cdc7dae86a3811ae0b1be61d7e457aac44ff7 100644
--- a/gpu/ipc/in_process_command_buffer.cc
+++ b/gpu/ipc/in_process_command_buffer.cc
@@ -617,16 +617,19 @@ void InProcessCommandBuffer::OrderingBarrier(int32_t put_offset) {
Flush(put_offset);
}
-void InProcessCommandBuffer::WaitForTokenInRange(int32_t start, int32_t end) {
+CommandBuffer::State InProcessCommandBuffer::WaitForTokenInRange(int32_t start,
+ int32_t end) {
CheckSequencedThread();
while (!InRange(start, end, GetLastToken()) &&
last_state_.error == gpu::error::kNoError) {
flush_event_.Wait();
}
+ return last_state_;
}
-void InProcessCommandBuffer::WaitForGetOffsetInRange(int32_t start,
- int32_t end) {
+CommandBuffer::State InProcessCommandBuffer::WaitForGetOffsetInRange(
+ int32_t start,
+ int32_t end) {
CheckSequencedThread();
GetStateFast();
@@ -635,6 +638,7 @@ void InProcessCommandBuffer::WaitForGetOffsetInRange(int32_t start,
flush_event_.Wait();
GetStateFast();
}
+ return last_state_;
}
void InProcessCommandBuffer::SetGetBuffer(int32_t shm_id) {
@@ -1030,6 +1034,11 @@ bool InProcessCommandBuffer::IsFenceSyncFlushReceived(uint64_t release) {
return IsFenceSyncFlushed(release);
}
+bool InProcessCommandBuffer::IsFenceSyncReleased(uint64_t release) {
+ State state = GetStateFast();
+ return release <= state.release_count;
+}
+
void InProcessCommandBuffer::SignalSyncToken(const SyncToken& sync_token,
const base::Closure& callback) {
CheckSequencedThread();

Powered by Google App Engine
This is Rietveld 408576698