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 "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h"
      8 #include "content/common/gpu/client/gpu_memory_buffer_impl_surface_texture.h"
      9 
     10 namespace content {
     11 
     12 // static
     13 void GpuMemoryBufferImpl::Create(const gfx::Size& size,
     14                                  unsigned internalformat,
     15                                  unsigned usage,
     16                                  int client_id,
     17                                  const CreationCallback& callback) {
     18   if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
     19           size, internalformat, usage)) {
     20     GpuMemoryBufferImplSharedMemory::Create(
     21         size, internalformat, usage, callback);
     22     return;
     23   }
     24 
     25   callback.Run(scoped_ptr<GpuMemoryBufferImpl>());
     26 }
     27 
     28 // static
     29 void GpuMemoryBufferImpl::AllocateForChildProcess(
     30     const gfx::Size& size,
     31     unsigned internalformat,
     32     unsigned usage,
     33     base::ProcessHandle child_process,
     34     int child_client_id,
     35     const AllocationCallback& callback) {
     36   if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported(
     37           size, internalformat, usage)) {
     38     GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
     39         size, internalformat, child_process, callback);
     40     return;
     41   }
     42 
     43   callback.Run(gfx::GpuMemoryBufferHandle());
     44 }
     45 
     46 // static
     47 void GpuMemoryBufferImpl::DeletedByChildProcess(
     48     gfx::GpuMemoryBufferType type,
     49     const gfx::GpuMemoryBufferId& id,
     50     base::ProcessHandle child_process) {
     51 }
     52 
     53 // static
     54 scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle(
     55     const gfx::GpuMemoryBufferHandle& handle,
     56     const gfx::Size& size,
     57     unsigned internalformat,
     58     const DestructionCallback& callback) {
     59   switch (handle.type) {
     60     case gfx::SHARED_MEMORY_BUFFER:
     61       return GpuMemoryBufferImplSharedMemory::CreateFromHandle(
     62           handle, size, internalformat, callback);
     63     case gfx::SURFACE_TEXTURE_BUFFER:
     64       return GpuMemoryBufferImplSurfaceTexture::CreateFromHandle(
     65           handle, size, internalformat, callback);
     66     default:
     67       return scoped_ptr<GpuMemoryBufferImpl>();
     68   }
     69 }
     70 
     71 }  // namespace content
     72