Index: gpu/command_buffer/service/gpu_scheduler.cc |
diff --git a/gpu/command_buffer/service/gpu_scheduler.cc b/gpu/command_buffer/service/gpu_scheduler.cc |
index f37c1a04249b5ec633af764b6406fe1578e2ff77..610f4019c3feb589267f5396a749347b22cbbd8a 100644 |
--- a/gpu/command_buffer/service/gpu_scheduler.cc |
+++ b/gpu/command_buffer/service/gpu_scheduler.cc |
@@ -29,21 +29,6 @@ GpuScheduler::GpuScheduler(CommandBuffer* command_buffer, |
decoder_(decoder), |
parser_(parser), |
unscheduled_count_(0) { |
- // Map the ring buffer and create the parser. |
- if (!parser) { |
- Buffer ring_buffer = command_buffer_->GetRingBuffer(); |
- if (ring_buffer.ptr) { |
- parser_.reset(new CommandParser(ring_buffer.ptr, |
- ring_buffer.size, |
- 0, |
- ring_buffer.size, |
- 0, |
- decoder_)); |
- } else { |
- parser_.reset(new CommandParser(NULL, 0, 0, 0, 0, |
- decoder_)); |
- } |
- } |
} |
GpuScheduler::~GpuScheduler() { |
@@ -150,6 +135,26 @@ void GpuScheduler::set_token(int32 token) { |
command_buffer_->SetToken(token); |
} |
+bool GpuScheduler::SetGetBuffer(int32 transfer_buffer_id) { |
+ Buffer ring_buffer = command_buffer_->GetTransferBuffer(transfer_buffer_id); |
+ if (!ring_buffer.ptr) { |
+ return false; |
+ } |
+ |
+ if (!parser_.get()) { |
+ parser_.reset(new CommandParser(decoder_)); |
+ } |
+ |
+ parser_->SetBuffer( |
+ ring_buffer.ptr, |
+ ring_buffer.size, |
+ 0, |
+ ring_buffer.size); |
+ |
+ SetGetOffset(0); |
+ return true; |
+} |
+ |
bool GpuScheduler::SetGetOffset(int32 offset) { |
if (parser_->set_get(offset)) { |
command_buffer_->SetGetOffset(static_cast<int32>(parser_->get())); |