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

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

Issue 8953006: Free the command buffer when tabs are switched (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 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 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/gpu_scheduler.h" 5 #include "gpu/command_buffer/service/gpu_scheduler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/time.h" 12 #include "base/time.h"
13 #include "ui/gfx/gl/gl_bindings.h" 13 #include "ui/gfx/gl/gl_bindings.h"
14 #include "ui/gfx/gl/gl_switches.h" 14 #include "ui/gfx/gl/gl_switches.h"
15 15
16 using ::base::SharedMemory; 16 using ::base::SharedMemory;
17 17
18 namespace gpu { 18 namespace gpu {
19 19
20 GpuScheduler::GpuScheduler(CommandBuffer* command_buffer, 20 GpuScheduler::GpuScheduler(
21 gles2::GLES2Decoder* decoder, 21 CommandBuffer* command_buffer,
22 CommandParser* parser) 22 AsyncAPIInterface* handler,
23 gles2::GLES2Decoder* decoder)
23 : command_buffer_(command_buffer), 24 : command_buffer_(command_buffer),
25 handler_(handler),
24 decoder_(decoder), 26 decoder_(decoder),
25 parser_(parser), 27 parser_(NULL),
26 unscheduled_count_(0) { 28 unscheduled_count_(0) {
27 } 29 }
28 30
29 GpuScheduler::~GpuScheduler() { 31 GpuScheduler::~GpuScheduler() {
30 } 32 }
31 33
32 void GpuScheduler::PutChanged() { 34 void GpuScheduler::PutChanged() {
33 TRACE_EVENT1("gpu", "GpuScheduler:PutChanged", "this", this); 35 TRACE_EVENT1("gpu", "GpuScheduler:PutChanged", "this", this);
34 36
35 CommandBuffer::State state = command_buffer_->GetState(); 37 CommandBuffer::State state = command_buffer_->GetState();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 command_buffer_->SetToken(token); 116 command_buffer_->SetToken(token);
115 } 117 }
116 118
117 bool GpuScheduler::SetGetBuffer(int32 transfer_buffer_id) { 119 bool GpuScheduler::SetGetBuffer(int32 transfer_buffer_id) {
118 Buffer ring_buffer = command_buffer_->GetTransferBuffer(transfer_buffer_id); 120 Buffer ring_buffer = command_buffer_->GetTransferBuffer(transfer_buffer_id);
119 if (!ring_buffer.ptr) { 121 if (!ring_buffer.ptr) {
120 return false; 122 return false;
121 } 123 }
122 124
123 if (!parser_.get()) { 125 if (!parser_.get()) {
124 parser_.reset(new CommandParser(decoder_)); 126 parser_.reset(new CommandParser(handler_));
125 } 127 }
126 128
127 parser_->SetBuffer( 129 parser_->SetBuffer(
128 ring_buffer.ptr, 130 ring_buffer.ptr,
129 ring_buffer.size, 131 ring_buffer.size,
130 0, 132 0,
131 ring_buffer.size); 133 ring_buffer.size);
132 134
133 SetGetOffset(0); 135 SetGetOffset(0);
134 return true; 136 return true;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 return true; 203 return true;
202 } 204 }
203 205
204 GpuScheduler::UnscheduleFence::UnscheduleFence() : fence(0) { 206 GpuScheduler::UnscheduleFence::UnscheduleFence() : fence(0) {
205 } 207 }
206 208
207 GpuScheduler::UnscheduleFence::~UnscheduleFence() { 209 GpuScheduler::UnscheduleFence::~UnscheduleFence() {
208 } 210 }
209 211
210 } // namespace gpu 212 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.h ('k') | gpu/command_buffer/service/gpu_scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698