Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / common / gpu / client / gpu_memory_buffer_impl.cc
1 // Copyright 2013 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 "content/common/gpu/client/gpu_memory_buffer_impl.h"
6
7 #include "ui/gl/gl_bindings.h"
8
9 namespace content {
10
11 GpuMemoryBufferImpl::GpuMemoryBufferImpl(const gfx::Size& size,
12                                          unsigned internalformat,
13                                          const DestructionCallback& callback)
14     : size_(size),
15       internalformat_(internalformat),
16       callback_(callback),
17       mapped_(false) {
18   DCHECK(IsFormatValid(internalformat));
19 }
20
21 GpuMemoryBufferImpl::~GpuMemoryBufferImpl() {
22   callback_.Run();
23 }
24
25 // static
26 bool GpuMemoryBufferImpl::IsFormatValid(unsigned internalformat) {
27   switch (internalformat) {
28     case GL_BGRA8_EXT:
29     case GL_RGBA8_OES:
30     case GL_RGB8_OES:
31       return true;
32     default:
33       return false;
34   }
35 }
36
37 // static
38 bool GpuMemoryBufferImpl::IsUsageValid(unsigned usage) {
39   switch (usage) {
40     case GL_IMAGE_MAP_CHROMIUM:
41     case GL_IMAGE_SCANOUT_CHROMIUM:
42       return true;
43     default:
44       return false;
45   }
46 }
47
48 // static
49 size_t GpuMemoryBufferImpl::BytesPerPixel(unsigned internalformat) {
50   switch (internalformat) {
51     case GL_BGRA8_EXT:
52     case GL_RGBA8_OES:
53     case GL_RGB8_OES:
54       return 4;
55     default:
56       NOTREACHED();
57       return 0;
58   }
59 }
60
61 bool GpuMemoryBufferImpl::IsMapped() const { return mapped_; }
62
63 }  // namespace content