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_io_surface.h" | 5 #include "content/common/gpu/client/gpu_memory_buffer_impl_io_surface.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/common/gpu/gpu_memory_buffer_factory_io_surface.h" | 8 #include "content/common/gpu/gpu_memory_buffer_factory_io_surface.h" |
9 #include "content/common/mac/io_surface_manager.h" | 9 #include "content/common/mac/io_surface_manager.h" |
10 #include "ui/gfx/buffer_format_util.h" | 10 #include "ui/gfx/buffer_format_util.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 DCHECK(io_surface); | 82 DCHECK(io_surface); |
83 gfx::GpuMemoryBufferId kBufferId(1); | 83 gfx::GpuMemoryBufferId kBufferId(1); |
84 bool rv = IOSurfaceManager::GetInstance()->RegisterIOSurface(kBufferId, 0, | 84 bool rv = IOSurfaceManager::GetInstance()->RegisterIOSurface(kBufferId, 0, |
85 io_surface); | 85 io_surface); |
86 DCHECK(rv); | 86 DCHECK(rv); |
87 handle->type = gfx::IO_SURFACE_BUFFER; | 87 handle->type = gfx::IO_SURFACE_BUFFER; |
88 handle->id = kBufferId; | 88 handle->id = kBufferId; |
89 return base::Bind(&FreeIOSurfaceForTesting, kBufferId); | 89 return base::Bind(&FreeIOSurfaceForTesting, kBufferId); |
90 } | 90 } |
91 | 91 |
92 bool GpuMemoryBufferImplIOSurface::Map(void** data) { | 92 bool GpuMemoryBufferImplIOSurface::Map() { |
93 DCHECK(!mapped_); | 93 DCHECK(!mapped_); |
94 IOReturn status = IOSurfaceLock(io_surface_, lock_flags_, NULL); | 94 IOReturn status = IOSurfaceLock(io_surface_, lock_flags_, NULL); |
95 DCHECK_NE(status, kIOReturnCannotLock); | 95 DCHECK_NE(status, kIOReturnCannotLock); |
96 mapped_ = true; | 96 mapped_ = true; |
97 size_t num_planes = gfx::NumberOfPlanesForBufferFormat(GetFormat()); | |
98 for (size_t plane = 0; plane < num_planes; ++plane) | |
99 data[plane] = IOSurfaceGetBaseAddressOfPlane(io_surface_, plane); | |
100 return true; | 97 return true; |
101 } | 98 } |
102 | 99 |
| 100 void* GpuMemoryBufferImplIOSurface::memory(size_t plane) { |
| 101 DCHECK(mapped_); |
| 102 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_)); |
| 103 return IOSurfaceGetBaseAddressOfPlane(io_surface_, plane); |
| 104 } |
| 105 |
103 void GpuMemoryBufferImplIOSurface::Unmap() { | 106 void GpuMemoryBufferImplIOSurface::Unmap() { |
104 DCHECK(mapped_); | 107 DCHECK(mapped_); |
105 IOSurfaceUnlock(io_surface_, lock_flags_, NULL); | 108 IOSurfaceUnlock(io_surface_, lock_flags_, NULL); |
106 mapped_ = false; | 109 mapped_ = false; |
107 } | 110 } |
108 | 111 |
109 void GpuMemoryBufferImplIOSurface::GetStride(int* strides) const { | 112 int GpuMemoryBufferImplIOSurface::stride(size_t plane) const { |
110 size_t num_planes = gfx::NumberOfPlanesForBufferFormat(GetFormat()); | 113 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_)); |
111 for (size_t plane = 0; plane < num_planes; ++plane) | 114 return IOSurfaceGetBytesPerRowOfPlane(io_surface_, plane); |
112 strides[plane] = IOSurfaceGetBytesPerRowOfPlane(io_surface_, plane); | |
113 } | 115 } |
114 | 116 |
115 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplIOSurface::GetHandle() const { | 117 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplIOSurface::GetHandle() const { |
116 gfx::GpuMemoryBufferHandle handle; | 118 gfx::GpuMemoryBufferHandle handle; |
117 handle.type = gfx::IO_SURFACE_BUFFER; | 119 handle.type = gfx::IO_SURFACE_BUFFER; |
118 handle.id = id_; | 120 handle.id = id_; |
119 return handle; | 121 return handle; |
120 } | 122 } |
121 | 123 |
122 } // namespace content | 124 } // namespace content |
OLD | NEW |