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