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

Side by Side Diff: content/browser/compositor/buffer_queue.cc

Issue 1874893002: Convert //content/browser from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 "content/browser/compositor/buffer_queue.h" 5 #include "content/browser/compositor/buffer_queue.h"
6 6
7 #include "base/containers/adapters.h" 7 #include "base/containers/adapters.h"
8 #include "base/memory/ptr_util.h"
8 #include "build/build_config.h" 9 #include "build/build_config.h"
9 #include "content/browser/compositor/gl_helper.h" 10 #include "content/browser/compositor/gl_helper.h"
10 #include "content/browser/compositor/image_transport_factory.h" 11 #include "content/browser/compositor/image_transport_factory.h"
11 #include "content/common/gpu/client/context_provider_command_buffer.h" 12 #include "content/common/gpu/client/context_provider_command_buffer.h"
12 #include "gpu/GLES2/gl2extchromium.h" 13 #include "gpu/GLES2/gl2extchromium.h"
13 #include "gpu/command_buffer/client/gles2_interface.h" 14 #include "gpu/command_buffer/client/gles2_interface.h"
14 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" 15 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
15 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" 16 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h"
16 #include "gpu/command_buffer/service/image_factory.h" 17 #include "gpu/command_buffer/service/image_factory.h"
17 #include "third_party/skia/include/core/SkRect.h" 18 #include "third_party/skia/include/core/SkRect.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 150
150 if (current_surface_) { 151 if (current_surface_) {
151 // If we have a texture bound, we will need to re-bind it. 152 // If we have a texture bound, we will need to re-bind it.
152 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); 153 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
153 gl->BindFramebuffer(GL_FRAMEBUFFER, fbo_); 154 gl->BindFramebuffer(GL_FRAMEBUFFER, fbo_);
154 gl->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 155 gl->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
155 texture_target_, current_surface_->texture, 0); 156 texture_target_, current_surface_->texture, 0);
156 } 157 }
157 } 158 }
158 159
159 scoped_ptr<BufferQueue::AllocatedSurface> BufferQueue::RecreateBuffer( 160 std::unique_ptr<BufferQueue::AllocatedSurface> BufferQueue::RecreateBuffer(
160 scoped_ptr<AllocatedSurface> surface) { 161 std::unique_ptr<AllocatedSurface> surface) {
161 if (!surface) 162 if (!surface)
162 return nullptr; 163 return nullptr;
163 164
164 scoped_ptr<AllocatedSurface> new_surface(GetNextSurface()); 165 std::unique_ptr<AllocatedSurface> new_surface(GetNextSurface());
165 if (!new_surface) 166 if (!new_surface)
166 return nullptr; 167 return nullptr;
167 168
168 new_surface->damage = surface->damage; 169 new_surface->damage = surface->damage;
169 170
170 // Copy the entire texture. 171 // Copy the entire texture.
171 CopyBufferDamage(new_surface->texture, surface->texture, gfx::Rect(), 172 CopyBufferDamage(new_surface->texture, surface->texture, gfx::Rect(),
172 gfx::Rect(size_)); 173 gfx::Rect(size_));
173 return new_surface; 174 return new_surface;
174 } 175 }
(...skipping 22 matching lines...) Expand all
197 198
198 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); 199 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
199 gl->BindTexture(texture_target_, surface->texture); 200 gl->BindTexture(texture_target_, surface->texture);
200 gl->ReleaseTexImage2DCHROMIUM(texture_target_, surface->image); 201 gl->ReleaseTexImage2DCHROMIUM(texture_target_, surface->image);
201 gl->DeleteTextures(1, &surface->texture); 202 gl->DeleteTextures(1, &surface->texture);
202 gl->DestroyImageCHROMIUM(surface->image); 203 gl->DestroyImageCHROMIUM(surface->image);
203 surface->buffer.reset(); 204 surface->buffer.reset();
204 allocated_count_--; 205 allocated_count_--;
205 } 206 }
206 207
207 scoped_ptr<BufferQueue::AllocatedSurface> BufferQueue::GetNextSurface() { 208 std::unique_ptr<BufferQueue::AllocatedSurface> BufferQueue::GetNextSurface() {
208 if (!available_surfaces_.empty()) { 209 if (!available_surfaces_.empty()) {
209 scoped_ptr<AllocatedSurface> surface = 210 std::unique_ptr<AllocatedSurface> surface =
210 std::move(available_surfaces_.back()); 211 std::move(available_surfaces_.back());
211 available_surfaces_.pop_back(); 212 available_surfaces_.pop_back();
212 return surface; 213 return surface;
213 } 214 }
214 215
215 unsigned int texture = 0; 216 unsigned int texture = 0;
216 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); 217 gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL();
217 gl->GenTextures(1, &texture); 218 gl->GenTextures(1, &texture);
218 if (!texture) 219 if (!texture)
219 return nullptr; 220 return nullptr;
220 221
221 // We don't want to allow anything more than triple buffering. 222 // We don't want to allow anything more than triple buffering.
222 DCHECK_LT(allocated_count_, 4U); 223 DCHECK_LT(allocated_count_, 4U);
223 224
224 scoped_ptr<gfx::GpuMemoryBuffer> buffer( 225 std::unique_ptr<gfx::GpuMemoryBuffer> buffer(
225 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( 226 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(
226 size_, gpu::DefaultBufferFormatForImageFormat(internal_format_), 227 size_, gpu::DefaultBufferFormatForImageFormat(internal_format_),
227 gfx::BufferUsage::SCANOUT, surface_id_)); 228 gfx::BufferUsage::SCANOUT, surface_id_));
228 if (!buffer.get()) { 229 if (!buffer.get()) {
229 gl->DeleteTextures(1, &texture); 230 gl->DeleteTextures(1, &texture);
230 DLOG(ERROR) << "Failed to allocate GPU memory buffer"; 231 DLOG(ERROR) << "Failed to allocate GPU memory buffer";
231 return nullptr; 232 return nullptr;
232 } 233 }
233 234
234 unsigned int id = gl->CreateImageCHROMIUM( 235 unsigned int id = gl->CreateImageCHROMIUM(
235 buffer->AsClientBuffer(), size_.width(), size_.height(), 236 buffer->AsClientBuffer(), size_.width(), size_.height(),
236 internal_format_); 237 internal_format_);
237 if (!id) { 238 if (!id) {
238 LOG(ERROR) << "Failed to allocate backing image surface"; 239 LOG(ERROR) << "Failed to allocate backing image surface";
239 gl->DeleteTextures(1, &texture); 240 gl->DeleteTextures(1, &texture);
240 return nullptr; 241 return nullptr;
241 } 242 }
242 243
243 allocated_count_++; 244 allocated_count_++;
244 gl->BindTexture(texture_target_, texture); 245 gl->BindTexture(texture_target_, texture);
245 gl->BindTexImage2DCHROMIUM(texture_target_, id); 246 gl->BindTexImage2DCHROMIUM(texture_target_, id);
246 return make_scoped_ptr(new AllocatedSurface(this, std::move(buffer), texture, 247 return base::WrapUnique(new AllocatedSurface(this, std::move(buffer), texture,
247 id, gfx::Rect(size_))); 248 id, gfx::Rect(size_)));
248 } 249 }
249 250
250 BufferQueue::AllocatedSurface::AllocatedSurface( 251 BufferQueue::AllocatedSurface::AllocatedSurface(
251 BufferQueue* buffer_queue, 252 BufferQueue* buffer_queue,
252 scoped_ptr<gfx::GpuMemoryBuffer> buffer, 253 std::unique_ptr<gfx::GpuMemoryBuffer> buffer,
253 unsigned int texture, 254 unsigned int texture,
254 unsigned int image, 255 unsigned int image,
255 const gfx::Rect& rect) 256 const gfx::Rect& rect)
256 : buffer_queue(buffer_queue), 257 : buffer_queue(buffer_queue),
257 buffer(buffer.release()), 258 buffer(buffer.release()),
258 texture(texture), 259 texture(texture),
259 image(image), 260 image(image),
260 damage(rect) {} 261 damage(rect) {}
261 262
262 BufferQueue::AllocatedSurface::~AllocatedSurface() { 263 BufferQueue::AllocatedSurface::~AllocatedSurface() {
263 buffer_queue->FreeSurfaceResources(this); 264 buffer_queue->FreeSurfaceResources(this);
264 } 265 }
265 266
266 } // namespace content 267 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/compositor/buffer_queue.h ('k') | content/browser/compositor/buffer_queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698