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 "content/common/gpu/client/gpu_memory_buffer_impl_shm.h"
8
9namespace content {
10
11scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::Create(
12    gfx::GpuMemoryBufferHandle handle,
13    gfx::Size size,
14    unsigned internalformat) {
15  switch (handle.type) {
16    case gfx::SHARED_MEMORY_BUFFER: {
17      scoped_ptr<GpuMemoryBufferImplShm> buffer(
18          new GpuMemoryBufferImplShm(size, internalformat));
19      if (!buffer->Initialize(handle))
20        return scoped_ptr<GpuMemoryBufferImpl>();
21
22      return buffer.PassAs<GpuMemoryBufferImpl>();
23    }
24    default:
25      return scoped_ptr<GpuMemoryBufferImpl>();
26  }
27}
28
29}  // namespace content
30