1// Copyright 2014 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/gpu_memory_buffer_factory.h" 6 7#include "base/logging.h" 8#include "ui/gl/gl_image.h" 9#include "ui/gl/gl_image_shared_memory.h" 10 11namespace content { 12namespace { 13 14class GpuMemoryBufferFactoryImpl : public GpuMemoryBufferFactory { 15 public: 16 // Overridden from GpuMemoryBufferFactory: 17 virtual gfx::GpuMemoryBufferHandle CreateGpuMemoryBuffer( 18 const gfx::GpuMemoryBufferHandle& handle, 19 const gfx::Size& size, 20 unsigned internalformat, 21 unsigned usage) OVERRIDE { 22 NOTREACHED(); 23 return gfx::GpuMemoryBufferHandle(); 24 } 25 virtual void DestroyGpuMemoryBuffer( 26 const gfx::GpuMemoryBufferHandle& handle) OVERRIDE { 27 NOTREACHED(); 28 } 29 virtual scoped_refptr<gfx::GLImage> CreateImageForGpuMemoryBuffer( 30 const gfx::GpuMemoryBufferHandle& handle, 31 const gfx::Size& size, 32 unsigned internalformat, 33 int client_id) OVERRIDE { 34 switch (handle.type) { 35 case gfx::SHARED_MEMORY_BUFFER: { 36 scoped_refptr<gfx::GLImageSharedMemory> image( 37 new gfx::GLImageSharedMemory(size, internalformat)); 38 if (!image->Initialize(handle)) 39 return NULL; 40 41 return image; 42 } 43 default: 44 NOTREACHED(); 45 return scoped_refptr<gfx::GLImage>(); 46 } 47 } 48}; 49 50} // namespace 51 52// static 53scoped_ptr<GpuMemoryBufferFactory> GpuMemoryBufferFactory::Create() { 54 return make_scoped_ptr<GpuMemoryBufferFactory>( 55 new GpuMemoryBufferFactoryImpl); 56} 57 58} // namespace content 59