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

Side by Side Diff: gpu/command_buffer/service/command_buffer_service.cc

Issue 7253052: Execute all GL commands up to the put offset reported by a flush. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "gpu/command_buffer/service/command_buffer_service.h" 5 #include "gpu/command_buffer/service/command_buffer_service.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/process_util.h" 10 #include "base/process_util.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 state.num_entries = num_entries_; 96 state.num_entries = num_entries_;
97 state.get_offset = get_offset_; 97 state.get_offset = get_offset_;
98 state.put_offset = put_offset_; 98 state.put_offset = put_offset_;
99 state.token = token_; 99 state.token = token_;
100 state.error = error_; 100 state.error = error_;
101 state.generation = ++generation_; 101 state.generation = ++generation_;
102 102
103 return state; 103 return state;
104 } 104 }
105 105
106 CommandBufferService::State CommandBufferService::GetLastState() {
107 return GetState();
108 }
109
106 CommandBufferService::State CommandBufferService::FlushSync( 110 CommandBufferService::State CommandBufferService::FlushSync(
107 int32 put_offset, int32 last_known_get) { 111 int32 put_offset, int32 last_known_get) {
108 if (put_offset < 0 || put_offset > num_entries_) { 112 if (put_offset < 0 || put_offset > num_entries_) {
109 error_ = gpu::error::kOutOfBounds; 113 error_ = gpu::error::kOutOfBounds;
110 return GetState(); 114 return GetState();
111 } 115 }
112 116
113 put_offset_ = put_offset; 117 put_offset_ = put_offset;
114 118
115 if (put_offset_change_callback_.get()) { 119 if (put_offset_change_callback_.get()) {
116 put_offset_change_callback_->Run(last_known_get == get_offset_); 120 put_offset_change_callback_->Run();
117 } 121 }
118 122
119 return GetState(); 123 return GetState();
120 } 124 }
121 125
122 void CommandBufferService::Flush(int32 put_offset) { 126 void CommandBufferService::Flush(int32 put_offset) {
123 if (put_offset < 0 || put_offset > num_entries_) { 127 if (put_offset < 0 || put_offset > num_entries_) {
124 error_ = gpu::error::kOutOfBounds; 128 error_ = gpu::error::kOutOfBounds;
125 return; 129 return;
126 } 130 }
127 131
128 put_offset_ = put_offset; 132 put_offset_ = put_offset;
129 133
130 if (put_offset_change_callback_.get()) { 134 if (put_offset_change_callback_.get()) {
131 put_offset_change_callback_->Run(false); 135 put_offset_change_callback_->Run();
132 } 136 }
133 } 137 }
134 138
135 void CommandBufferService::SetGetOffset(int32 get_offset) { 139 void CommandBufferService::SetGetOffset(int32 get_offset) {
136 DCHECK(get_offset >= 0 && get_offset < num_entries_); 140 DCHECK(get_offset >= 0 && get_offset < num_entries_);
137 get_offset_ = get_offset; 141 get_offset_ = get_offset;
138 } 142 }
139 143
140 int32 CommandBufferService::CreateTransferBuffer(size_t size, 144 int32 CommandBufferService::CreateTransferBuffer(size_t size,
141 int32 id_request) { 145 int32 id_request) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 252
249 void CommandBufferService::SetParseError(error::Error error) { 253 void CommandBufferService::SetParseError(error::Error error) {
250 if (error_ == error::kNoError) { 254 if (error_ == error::kNoError) {
251 error_ = error; 255 error_ = error;
252 if (parse_error_callback_.get()) 256 if (parse_error_callback_.get())
253 parse_error_callback_->Run(); 257 parse_error_callback_->Run();
254 } 258 }
255 } 259 }
256 260
257 void CommandBufferService::SetPutOffsetChangeCallback( 261 void CommandBufferService::SetPutOffsetChangeCallback(
258 Callback1<bool>::Type* callback) { 262 Callback0::Type* callback) {
259 put_offset_change_callback_.reset(callback); 263 put_offset_change_callback_.reset(callback);
260 } 264 }
261 265
262 void CommandBufferService::SetParseErrorCallback( 266 void CommandBufferService::SetParseErrorCallback(
263 Callback0::Type* callback) { 267 Callback0::Type* callback) {
264 parse_error_callback_.reset(callback); 268 parse_error_callback_.reset(callback);
265 } 269 }
266 270
267 } // namespace gpu 271 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698