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