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     : size_(size), internalformat_(internalformat), mapped_(false) {
     14   DCHECK(IsFormatValid(internalformat));
     15 }
     16 
     17 GpuMemoryBufferImpl::~GpuMemoryBufferImpl() {}
     18 
     19 // static
     20 bool GpuMemoryBufferImpl::IsFormatValid(unsigned internalformat) {
     21   switch (internalformat) {
     22     case GL_BGRA8_EXT:
     23     case GL_RGBA8_OES:
     24       return true;
     25     default:
     26       return false;
     27   }
     28 }
     29 
     30 // static
     31 bool GpuMemoryBufferImpl::IsUsageValid(unsigned usage) {
     32   switch (usage) {
     33     case GL_IMAGE_MAP_CHROMIUM:
     34     case GL_IMAGE_SCANOUT_CHROMIUM:
     35       return true;
     36     default:
     37       return false;
     38   }
     39 }
     40 
     41 // static
     42 size_t GpuMemoryBufferImpl::BytesPerPixel(unsigned internalformat) {
     43   switch (internalformat) {
     44     case GL_BGRA8_EXT:
     45     case GL_RGBA8_OES:
     46       return 4;
     47     default:
     48       NOTREACHED();
     49       return 0;
     50   }
     51 }
     52 
     53 bool GpuMemoryBufferImpl::IsMapped() const { return mapped_; }
     54 
     55 }  // namespace content
     56