| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "content/common/gpu/client/gpu_memory_buffer_impl.h" | 5 #include "content/common/gpu/client/gpu_memory_buffer_impl.h" | 
| 6 | 6 | 
|  | 7 #include "base/logging.h" | 
| 7 #include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h" | 8 #include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h" | 
| 8 | 9 | 
| 9 namespace content { | 10 namespace content { | 
| 10 | 11 | 
| 11 // static | 12 // static | 
| 12 void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferId id, | 13 void GpuMemoryBufferImpl::GetSupportedTypes( | 
|  | 14     std::vector<gfx::GpuMemoryBufferType>* types) { | 
|  | 15   const gfx::GpuMemoryBufferType supported_types[] = { | 
|  | 16     gfx::SHARED_MEMORY_BUFFER | 
|  | 17   }; | 
|  | 18   types->assign(supported_types, supported_types + arraysize(supported_types)); | 
|  | 19 } | 
|  | 20 | 
|  | 21 // static | 
|  | 22 bool GpuMemoryBufferImpl::IsConfigurationSupported( | 
|  | 23     gfx::GpuMemoryBufferType type, | 
|  | 24     Format format, | 
|  | 25     Usage usage) { | 
|  | 26   switch (type) { | 
|  | 27     case gfx::SHARED_MEMORY_BUFFER: | 
|  | 28       return GpuMemoryBufferImplSharedMemory::IsFormatSupported(format) && | 
|  | 29              GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage); | 
|  | 30     default: | 
|  | 31       NOTREACHED(); | 
|  | 32       return false; | 
|  | 33   } | 
|  | 34 } | 
|  | 35 | 
|  | 36 // static | 
|  | 37 void GpuMemoryBufferImpl::Create(gfx::GpuMemoryBufferType type, | 
|  | 38                                  gfx::GpuMemoryBufferId id, | 
| 13                                  const gfx::Size& size, | 39                                  const gfx::Size& size, | 
| 14                                  Format format, | 40                                  Format format, | 
| 15                                  Usage usage, | 41                                  Usage usage, | 
| 16                                  int client_id, | 42                                  int client_id, | 
| 17                                  const CreationCallback& callback) { | 43                                  const CreationCallback& callback) { | 
| 18   if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( | 44   switch (type) { | 
| 19           size, format, usage)) { | 45     case gfx::SHARED_MEMORY_BUFFER: | 
| 20     GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback); | 46       GpuMemoryBufferImplSharedMemory::Create(id, size, format, callback); | 
| 21     return; | 47       break; | 
|  | 48     default: | 
|  | 49       NOTREACHED(); | 
|  | 50       break; | 
| 22   } | 51   } | 
| 23 |  | 
| 24   callback.Run(scoped_ptr<GpuMemoryBufferImpl>()); |  | 
| 25 } | 52 } | 
| 26 | 53 | 
| 27 // static | 54 // static | 
| 28 void GpuMemoryBufferImpl::AllocateForChildProcess( | 55 void GpuMemoryBufferImpl::AllocateForChildProcess( | 
|  | 56     gfx::GpuMemoryBufferType type, | 
| 29     gfx::GpuMemoryBufferId id, | 57     gfx::GpuMemoryBufferId id, | 
| 30     const gfx::Size& size, | 58     const gfx::Size& size, | 
| 31     Format format, | 59     Format format, | 
| 32     Usage usage, | 60     Usage usage, | 
| 33     base::ProcessHandle child_process, | 61     base::ProcessHandle child_process, | 
| 34     int child_client_id, | 62     int child_client_id, | 
| 35     const AllocationCallback& callback) { | 63     const AllocationCallback& callback) { | 
| 36   if (GpuMemoryBufferImplSharedMemory::IsConfigurationSupported( | 64   switch (type) { | 
| 37           size, format, usage)) { | 65     case gfx::SHARED_MEMORY_BUFFER: | 
| 38     GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( | 66       GpuMemoryBufferImplSharedMemory::AllocateForChildProcess( | 
| 39         id, size, format, child_process, callback); | 67           id, size, format, child_process, callback); | 
| 40     return; | 68       break; | 
|  | 69     default: | 
|  | 70       NOTREACHED(); | 
|  | 71       break; | 
| 41   } | 72   } | 
| 42 |  | 
| 43   callback.Run(gfx::GpuMemoryBufferHandle()); |  | 
| 44 } | 73 } | 
| 45 | 74 | 
| 46 // static | 75 // static | 
| 47 void GpuMemoryBufferImpl::DeletedByChildProcess( | 76 void GpuMemoryBufferImpl::DeletedByChildProcess( | 
| 48     gfx::GpuMemoryBufferType type, | 77     gfx::GpuMemoryBufferType type, | 
| 49     gfx::GpuMemoryBufferId id, | 78     gfx::GpuMemoryBufferId id, | 
| 50     base::ProcessHandle child_process, | 79     base::ProcessHandle child_process, | 
| 51     int child_client_id, | 80     int child_client_id, | 
| 52     uint32 sync_point) { | 81     uint32 sync_point) { | 
|  | 82   switch (type) { | 
|  | 83     case gfx::SHARED_MEMORY_BUFFER: | 
|  | 84       break; | 
|  | 85     default: | 
|  | 86       NOTREACHED(); | 
|  | 87       break; | 
|  | 88   } | 
| 53 } | 89 } | 
| 54 | 90 | 
| 55 // static | 91 // static | 
| 56 scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle( | 92 scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImpl::CreateFromHandle( | 
| 57     const gfx::GpuMemoryBufferHandle& handle, | 93     const gfx::GpuMemoryBufferHandle& handle, | 
| 58     const gfx::Size& size, | 94     const gfx::Size& size, | 
| 59     Format format, | 95     Format format, | 
| 60     const DestructionCallback& callback) { | 96     const DestructionCallback& callback) { | 
| 61   switch (handle.type) { | 97   switch (handle.type) { | 
| 62     case gfx::SHARED_MEMORY_BUFFER: | 98     case gfx::SHARED_MEMORY_BUFFER: | 
| 63       return GpuMemoryBufferImplSharedMemory::CreateFromHandle( | 99       return GpuMemoryBufferImplSharedMemory::CreateFromHandle( | 
| 64           handle, size, format, callback); | 100           handle, size, format, callback); | 
| 65     default: | 101     default: | 
|  | 102       NOTREACHED(); | 
| 66       return scoped_ptr<GpuMemoryBufferImpl>(); | 103       return scoped_ptr<GpuMemoryBufferImpl>(); | 
| 67   } | 104   } | 
| 68 } | 105 } | 
| 69 | 106 | 
| 70 }  // namespace content | 107 }  // namespace content | 
| OLD | NEW | 
|---|