Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Side by Side Diff: gpu/ipc/client/gpu_memory_buffer_impl_shared_memory.cc

Issue 2298353002: gfx: Use unsigned strides for gpu memory buffers. (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "gpu/ipc/client/gpu_memory_buffer_impl_shared_memory.h" 5 #include "gpu/ipc/client/gpu_memory_buffer_impl_shared_memory.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 10 matching lines...) Expand all
21 21
22 } // namespace 22 } // namespace
23 23
24 GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory( 24 GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory(
25 gfx::GpuMemoryBufferId id, 25 gfx::GpuMemoryBufferId id,
26 const gfx::Size& size, 26 const gfx::Size& size,
27 gfx::BufferFormat format, 27 gfx::BufferFormat format,
28 const DestructionCallback& callback, 28 const DestructionCallback& callback,
29 std::unique_ptr<base::SharedMemory> shared_memory, 29 std::unique_ptr<base::SharedMemory> shared_memory,
30 size_t offset, 30 size_t offset,
31 int stride) 31 uint32_t stride)
32 : GpuMemoryBufferImpl(id, size, format, callback), 32 : GpuMemoryBufferImpl(id, size, format, callback),
33 shared_memory_(std::move(shared_memory)), 33 shared_memory_(std::move(shared_memory)),
34 offset_(offset), 34 offset_(offset),
35 stride_(stride) { 35 stride_(stride) {
36 DCHECK(IsSizeValidForFormat(size, format)); 36 DCHECK(IsSizeValidForFormat(size, format));
37 } 37 }
38 38
39 GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() {} 39 GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() {}
40 40
41 // static 41 // static
(...skipping 27 matching lines...) Expand all
69 return gfx::GpuMemoryBufferHandle(); 69 return gfx::GpuMemoryBufferHandle();
70 70
71 base::SharedMemory shared_memory; 71 base::SharedMemory shared_memory;
72 if (!shared_memory.CreateAnonymous(buffer_size)) 72 if (!shared_memory.CreateAnonymous(buffer_size))
73 return gfx::GpuMemoryBufferHandle(); 73 return gfx::GpuMemoryBufferHandle();
74 74
75 gfx::GpuMemoryBufferHandle handle; 75 gfx::GpuMemoryBufferHandle handle;
76 handle.type = gfx::SHARED_MEMORY_BUFFER; 76 handle.type = gfx::SHARED_MEMORY_BUFFER;
77 handle.id = id; 77 handle.id = id;
78 handle.offset = 0; 78 handle.offset = 0;
79 handle.stride = static_cast<int32_t>( 79 handle.stride = static_cast<uint32_t>(
80 gfx::RowSizeForBufferFormat(size.width(), format, 0)); 80 gfx::RowSizeForBufferFormat(size.width(), format, 0));
81 shared_memory.GiveToProcess(child_process, &handle.handle); 81 shared_memory.GiveToProcess(child_process, &handle.handle);
82 return handle; 82 return handle;
83 } 83 }
84 84
85 // static 85 // static
86 std::unique_ptr<GpuMemoryBufferImplSharedMemory> 86 std::unique_ptr<GpuMemoryBufferImplSharedMemory>
87 GpuMemoryBufferImplSharedMemory::CreateFromHandle( 87 GpuMemoryBufferImplSharedMemory::CreateFromHandle(
88 const gfx::GpuMemoryBufferHandle& handle, 88 const gfx::GpuMemoryBufferHandle& handle,
89 const gfx::Size& size, 89 const gfx::Size& size,
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 const gfx::Size& size, 163 const gfx::Size& size,
164 gfx::BufferFormat format, 164 gfx::BufferFormat format,
165 gfx::BufferUsage usage, 165 gfx::BufferUsage usage,
166 gfx::GpuMemoryBufferHandle* handle) { 166 gfx::GpuMemoryBufferHandle* handle) {
167 base::SharedMemory shared_memory; 167 base::SharedMemory shared_memory;
168 bool rv = shared_memory.CreateAnonymous( 168 bool rv = shared_memory.CreateAnonymous(
169 gfx::BufferSizeForBufferFormat(size, format)); 169 gfx::BufferSizeForBufferFormat(size, format));
170 DCHECK(rv); 170 DCHECK(rv);
171 handle->type = gfx::SHARED_MEMORY_BUFFER; 171 handle->type = gfx::SHARED_MEMORY_BUFFER;
172 handle->offset = 0; 172 handle->offset = 0;
173 handle->stride = static_cast<int32_t>( 173 handle->stride = static_cast<uint32_t>(
174 gfx::RowSizeForBufferFormat(size.width(), format, 0)); 174 gfx::RowSizeForBufferFormat(size.width(), format, 0));
175 handle->handle = base::SharedMemory::DuplicateHandle(shared_memory.handle()); 175 handle->handle = base::SharedMemory::DuplicateHandle(shared_memory.handle());
176 return base::Bind(&Noop); 176 return base::Bind(&Noop);
177 } 177 }
178 178
179 bool GpuMemoryBufferImplSharedMemory::Map() { 179 bool GpuMemoryBufferImplSharedMemory::Map() {
180 DCHECK(!mapped_); 180 DCHECK(!mapped_);
181 181
182 // Map the buffer first time Map() is called then keep it mapped for the 182 // Map the buffer first time Map() is called then keep it mapped for the
183 // lifetime of the buffer. This avoids mapping the buffer unless necessary. 183 // lifetime of the buffer. This avoids mapping the buffer unless necessary.
(...skipping 16 matching lines...) Expand all
200 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_)); 200 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_));
201 return reinterpret_cast<uint8_t*>(shared_memory_->memory()) + offset_ + 201 return reinterpret_cast<uint8_t*>(shared_memory_->memory()) + offset_ +
202 gfx::BufferOffsetForBufferFormat(size_, format_, plane); 202 gfx::BufferOffsetForBufferFormat(size_, format_, plane);
203 } 203 }
204 204
205 void GpuMemoryBufferImplSharedMemory::Unmap() { 205 void GpuMemoryBufferImplSharedMemory::Unmap() {
206 DCHECK(mapped_); 206 DCHECK(mapped_);
207 mapped_ = false; 207 mapped_ = false;
208 } 208 }
209 209
210 int GpuMemoryBufferImplSharedMemory::stride(size_t plane) const { 210 uint32_t GpuMemoryBufferImplSharedMemory::stride(size_t plane) const {
211 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_)); 211 DCHECK_LT(plane, gfx::NumberOfPlanesForBufferFormat(format_));
212 return gfx::RowSizeForBufferFormat(size_.width(), format_, plane); 212 return gfx::RowSizeForBufferFormat(size_.width(), format_, plane);
213 } 213 }
214 214
215 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::GetHandle() const { 215 gfx::GpuMemoryBufferHandle GpuMemoryBufferImplSharedMemory::GetHandle() const {
216 gfx::GpuMemoryBufferHandle handle; 216 gfx::GpuMemoryBufferHandle handle;
217 handle.type = gfx::SHARED_MEMORY_BUFFER; 217 handle.type = gfx::SHARED_MEMORY_BUFFER;
218 handle.id = id_; 218 handle.id = id_;
219 handle.offset = offset_; 219 handle.offset = offset_;
220 handle.stride = stride_; 220 handle.stride = stride_;
221 handle.handle = shared_memory_->handle(); 221 handle.handle = shared_memory_->handle();
222 return handle; 222 return handle;
223 } 223 }
224 224
225 } // namespace gpu 225 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/ipc/client/gpu_memory_buffer_impl_shared_memory.h ('k') | gpu/ipc/client/gpu_memory_buffer_impl_surface_texture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698