Home | History | Annotate | Download | only in client
      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
     64