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

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

Issue 555020: Redesigned CommandBuffer and NPDevice3D interfaces (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "gpu/command_buffer/common/cmd_buffer_common.h" 9 #include "gpu/command_buffer/common/cmd_buffer_common.h"
10 10
11 using ::base::SharedMemory; 11 using ::base::SharedMemory;
12 12
13 namespace gpu { 13 namespace gpu {
14 14
15 CommandBufferService::CommandBufferService() 15 CommandBufferService::CommandBufferService()
16 : size_(0), 16 : size_(0),
17 get_offset_(0), 17 get_offset_(0),
18 put_offset_(0), 18 put_offset_(0),
19 token_(0), 19 token_(0),
20 parse_error_(0), 20 error_(parse_error::kParseNoError) {
21 error_status_(false) {
22 // Element zero is always NULL. 21 // Element zero is always NULL.
23 registered_objects_.push_back(linked_ptr<SharedMemory>()); 22 registered_objects_.push_back(linked_ptr<SharedMemory>());
24 } 23 }
25 24
26 CommandBufferService::~CommandBufferService() { 25 CommandBufferService::~CommandBufferService() {
27 } 26 }
28 27
29 bool CommandBufferService::Initialize(int32 size) { 28 bool CommandBufferService::Initialize(int32 size) {
30 // Fail if already initialized. 29 // Fail if already initialized.
31 if (ring_buffer_.get()) 30 if (ring_buffer_.get())
(...skipping 15 matching lines...) Expand all
47 Buffer CommandBufferService::GetRingBuffer() { 46 Buffer CommandBufferService::GetRingBuffer() {
48 Buffer buffer; 47 Buffer buffer;
49 if (ring_buffer_.get()) { 48 if (ring_buffer_.get()) {
50 buffer.ptr = ring_buffer_->memory(); 49 buffer.ptr = ring_buffer_->memory();
51 buffer.size = ring_buffer_->max_size(); 50 buffer.size = ring_buffer_->max_size();
52 buffer.shared_memory = ring_buffer_.get(); 51 buffer.shared_memory = ring_buffer_.get();
53 } 52 }
54 return buffer; 53 return buffer;
55 } 54 }
56 55
57 int32 CommandBufferService::GetSize() { 56 CommandBufferService::State CommandBufferService::GetState() {
58 return size_; 57 State state;
58 state.size = size_;
59 state.get_offset = get_offset_;
60 state.put_offset = put_offset_;
61 state.token = token_;
62 state.error = error_;
63
64 return state;
59 } 65 }
60 66
61 int32 CommandBufferService::SyncOffsets(int32 put_offset) { 67 CommandBufferService::State CommandBufferService::Flush(int32 put_offset) {
62 if (put_offset < 0 || put_offset >= size_) 68 if (put_offset < 0 || put_offset >= size_) {
63 return -1; 69 error_ = gpu::parse_error::kParseOutOfBounds;
70 return GetState();
71 }
64 72
65 put_offset_ = put_offset; 73 put_offset_ = put_offset;
66 74
67 if (put_offset_change_callback_.get()) { 75 if (put_offset_change_callback_.get()) {
68 put_offset_change_callback_->Run(); 76 put_offset_change_callback_->Run();
69 } 77 }
70 78
71 return get_offset_; 79 return GetState();
72 }
73
74 int32 CommandBufferService::GetGetOffset() {
75 return get_offset_;
76 } 80 }
77 81
78 void CommandBufferService::SetGetOffset(int32 get_offset) { 82 void CommandBufferService::SetGetOffset(int32 get_offset) {
79 DCHECK(get_offset >= 0 && get_offset < size_); 83 DCHECK(get_offset >= 0 && get_offset < size_);
80 get_offset_ = get_offset; 84 get_offset_ = get_offset;
81 } 85 }
82 86
83 int32 CommandBufferService::GetPutOffset() {
84 return put_offset_;
85 }
86
87 int32 CommandBufferService::CreateTransferBuffer(size_t size) { 87 int32 CommandBufferService::CreateTransferBuffer(size_t size) {
88 linked_ptr<SharedMemory> buffer(new SharedMemory); 88 linked_ptr<SharedMemory> buffer(new SharedMemory);
89 if (!buffer->Create(std::wstring(), false, false, size)) 89 if (!buffer->Create(std::wstring(), false, false, size))
90 return -1; 90 return -1;
91 91
92 if (unused_registered_object_elements_.empty()) { 92 if (unused_registered_object_elements_.empty()) {
93 // Check we haven't exceeded the range that fits in a 32-bit integer. 93 // Check we haven't exceeded the range that fits in a 32-bit integer.
94 if (registered_objects_.size() > std::numeric_limits<uint32>::max()) 94 if (registered_objects_.size() > std::numeric_limits<uint32>::max())
95 return -1; 95 return -1;
96 96
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 return Buffer(); 143 return Buffer();
144 } 144 }
145 145
146 Buffer buffer; 146 Buffer buffer;
147 buffer.ptr = shared_memory->memory(); 147 buffer.ptr = shared_memory->memory();
148 buffer.size = shared_memory->max_size(); 148 buffer.size = shared_memory->max_size();
149 buffer.shared_memory = shared_memory; 149 buffer.shared_memory = shared_memory;
150 return buffer; 150 return buffer;
151 } 151 }
152 152
153 int32 CommandBufferService::GetToken() {
154 return token_;
155 }
156
157 void CommandBufferService::SetToken(int32 token) { 153 void CommandBufferService::SetToken(int32 token) {
158 token_ = token; 154 token_ = token;
159 } 155 }
160 156
161 int32 CommandBufferService::ResetParseError() { 157 void CommandBufferService::SetParseError(parse_error::ParseError error) {
162 int32 last_error = parse_error_; 158 if (error_ == parse_error::kParseNoError) {
163 parse_error_ = 0; 159 error_ = error;
164 return last_error;
165 }
166
167 void CommandBufferService::SetParseError(int32 parse_error) {
168 if (parse_error_ == 0) {
169 parse_error_ = parse_error;
170 } 160 }
171 } 161 }
172 162
173 bool CommandBufferService::GetErrorStatus() {
174 return error_status_;
175 }
176
177 void CommandBufferService::RaiseErrorStatus() {
178 error_status_ = true;
179 }
180
181 void CommandBufferService::SetPutOffsetChangeCallback( 163 void CommandBufferService::SetPutOffsetChangeCallback(
182 Callback0::Type* callback) { 164 Callback0::Type* callback) {
183 put_offset_change_callback_.reset(callback); 165 put_offset_change_callback_.reset(callback);
184 } 166 }
185 167
186 } // namespace gpu 168 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/command_buffer_service.h ('k') | gpu/command_buffer/service/command_buffer_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698