• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "gpu/command_buffer/common/buffer.h"
6 
7 #include "base/logging.h"
8 
9 #include "base/numerics/safe_math.h"
10 
11 namespace gpu {
SharedMemoryBufferBacking(scoped_ptr<base::SharedMemory> shared_memory,size_t size)12 SharedMemoryBufferBacking::SharedMemoryBufferBacking(
13     scoped_ptr<base::SharedMemory> shared_memory,
14     size_t size)
15     : shared_memory_(shared_memory.Pass()), size_(size) {}
16 
~SharedMemoryBufferBacking()17 SharedMemoryBufferBacking::~SharedMemoryBufferBacking() {}
18 
GetMemory() const19 void* SharedMemoryBufferBacking::GetMemory() const {
20   return shared_memory_->memory();
21 }
22 
GetSize() const23 size_t SharedMemoryBufferBacking::GetSize() const { return size_; }
24 
Buffer(scoped_ptr<BufferBacking> backing)25 Buffer::Buffer(scoped_ptr<BufferBacking> backing)
26     : backing_(backing.Pass()),
27       memory_(backing_->GetMemory()),
28       size_(backing_->GetSize()) {
29   DCHECK(memory_) << "The memory must be mapped to create a Buffer";
30 }
31 
~Buffer()32 Buffer::~Buffer() {}
33 
GetDataAddress(uint32 data_offset,uint32 data_size) const34 void* Buffer::GetDataAddress(uint32 data_offset, uint32 data_size) const {
35   base::CheckedNumeric<uint32> end = data_offset;
36   end += data_size;
37   if (!end.IsValid() || end.ValueOrDie() > static_cast<uint32>(size_))
38     return NULL;
39   return static_cast<uint8*>(memory_) + data_offset;
40 }
41 
42 } // namespace gpu
43