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

Side by Side Diff: cc/output/gl_renderer.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase 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
« no previous file with comments | « cc/output/gl_renderer.h ('k') | cc/output/gl_renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 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 "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <limits> 11 #include <limits>
12 #include <memory>
12 #include <set> 13 #include <set>
13 #include <string> 14 #include <string>
14 #include <vector> 15 #include <vector>
15 16
16 #include "base/logging.h" 17 #include "base/logging.h"
17 #include "base/macros.h" 18 #include "base/macros.h"
18 #include "base/memory/scoped_ptr.h" 19 #include "base/memory/ptr_util.h"
19 #include "base/strings/string_split.h" 20 #include "base/strings/string_split.h"
20 #include "base/strings/string_util.h" 21 #include "base/strings/string_util.h"
21 #include "base/strings/stringprintf.h" 22 #include "base/strings/stringprintf.h"
22 #include "base/trace_event/trace_event.h" 23 #include "base/trace_event/trace_event.h"
23 #include "build/build_config.h" 24 #include "build/build_config.h"
24 #include "cc/base/container_util.h" 25 #include "cc/base/container_util.h"
25 #include "cc/base/math_util.h" 26 #include "cc/base/math_util.h"
26 #include "cc/output/compositor_frame.h" 27 #include "cc/output/compositor_frame.h"
27 #include "cc/output/compositor_frame_metadata.h" 28 #include "cc/output/compositor_frame_metadata.h"
28 #include "cc/output/context_provider.h" 29 #include "cc/output/context_provider.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 } // anonymous namespace 152 } // anonymous namespace
152 153
153 static GLint GetActiveTextureUnit(GLES2Interface* gl) { 154 static GLint GetActiveTextureUnit(GLES2Interface* gl) {
154 GLint active_unit = 0; 155 GLint active_unit = 0;
155 gl->GetIntegerv(GL_ACTIVE_TEXTURE, &active_unit); 156 gl->GetIntegerv(GL_ACTIVE_TEXTURE, &active_unit);
156 return active_unit; 157 return active_unit;
157 } 158 }
158 159
159 class GLRenderer::ScopedUseGrContext { 160 class GLRenderer::ScopedUseGrContext {
160 public: 161 public:
161 static scoped_ptr<ScopedUseGrContext> Create(GLRenderer* renderer, 162 static std::unique_ptr<ScopedUseGrContext> Create(GLRenderer* renderer,
162 DrawingFrame* frame) { 163 DrawingFrame* frame) {
163 // GrContext for filters is created lazily, and may fail if the context 164 // GrContext for filters is created lazily, and may fail if the context
164 // is lost. 165 // is lost.
165 // TODO(vmiura,bsalomon): crbug.com/487850 Ensure that 166 // TODO(vmiura,bsalomon): crbug.com/487850 Ensure that
166 // ContextProvider::GrContext() does not return NULL. 167 // ContextProvider::GrContext() does not return NULL.
167 if (renderer->output_surface_->context_provider()->GrContext()) 168 if (renderer->output_surface_->context_provider()->GrContext())
168 return make_scoped_ptr(new ScopedUseGrContext(renderer, frame)); 169 return base::WrapUnique(new ScopedUseGrContext(renderer, frame));
169 return nullptr; 170 return nullptr;
170 } 171 }
171 172
172 ~ScopedUseGrContext() { 173 ~ScopedUseGrContext() {
173 // Pass context control back to GLrenderer. 174 // Pass context control back to GLrenderer.
174 scoped_gpu_raster_ = nullptr; 175 scoped_gpu_raster_ = nullptr;
175 renderer_->RestoreGLState(); 176 renderer_->RestoreGLState();
176 renderer_->RestoreFramebuffer(frame_); 177 renderer_->RestoreFramebuffer(frame_);
177 } 178 }
178 179
179 GrContext* context() const { 180 GrContext* context() const {
180 return renderer_->output_surface_->context_provider()->GrContext(); 181 return renderer_->output_surface_->context_provider()->GrContext();
181 } 182 }
182 183
183 private: 184 private:
184 ScopedUseGrContext(GLRenderer* renderer, DrawingFrame* frame) 185 ScopedUseGrContext(GLRenderer* renderer, DrawingFrame* frame)
185 : scoped_gpu_raster_( 186 : scoped_gpu_raster_(
186 new ScopedGpuRaster(renderer->output_surface_->context_provider())), 187 new ScopedGpuRaster(renderer->output_surface_->context_provider())),
187 renderer_(renderer), 188 renderer_(renderer),
188 frame_(frame) { 189 frame_(frame) {
189 // scoped_gpu_raster_ passes context control to Skia. 190 // scoped_gpu_raster_ passes context control to Skia.
190 } 191 }
191 192
192 scoped_ptr<ScopedGpuRaster> scoped_gpu_raster_; 193 std::unique_ptr<ScopedGpuRaster> scoped_gpu_raster_;
193 GLRenderer* renderer_; 194 GLRenderer* renderer_;
194 DrawingFrame* frame_; 195 DrawingFrame* frame_;
195 196
196 DISALLOW_COPY_AND_ASSIGN(ScopedUseGrContext); 197 DISALLOW_COPY_AND_ASSIGN(ScopedUseGrContext);
197 }; 198 };
198 199
199 struct GLRenderer::PendingAsyncReadPixels { 200 struct GLRenderer::PendingAsyncReadPixels {
200 PendingAsyncReadPixels() : buffer(0) {} 201 PendingAsyncReadPixels() : buffer(0) {}
201 202
202 scoped_ptr<CopyOutputRequest> copy_request; 203 std::unique_ptr<CopyOutputRequest> copy_request;
203 base::CancelableClosure finished_read_pixels_callback; 204 base::CancelableClosure finished_read_pixels_callback;
204 unsigned buffer; 205 unsigned buffer;
205 206
206 private: 207 private:
207 DISALLOW_COPY_AND_ASSIGN(PendingAsyncReadPixels); 208 DISALLOW_COPY_AND_ASSIGN(PendingAsyncReadPixels);
208 }; 209 };
209 210
210 class GLRenderer::SyncQuery { 211 class GLRenderer::SyncQuery {
211 public: 212 public:
212 explicit SyncQuery(gpu::gles2::GLES2Interface* gl) 213 explicit SyncQuery(gpu::gles2::GLES2Interface* gl)
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 }; 293 };
293 294
294 gpu::gles2::GLES2Interface* gl_; 295 gpu::gles2::GLES2Interface* gl_;
295 unsigned query_id_; 296 unsigned query_id_;
296 bool is_pending_; 297 bool is_pending_;
297 base::WeakPtrFactory<SyncQuery> weak_ptr_factory_; 298 base::WeakPtrFactory<SyncQuery> weak_ptr_factory_;
298 299
299 DISALLOW_COPY_AND_ASSIGN(SyncQuery); 300 DISALLOW_COPY_AND_ASSIGN(SyncQuery);
300 }; 301 };
301 302
302 scoped_ptr<GLRenderer> GLRenderer::Create( 303 std::unique_ptr<GLRenderer> GLRenderer::Create(
303 RendererClient* client, 304 RendererClient* client,
304 const RendererSettings* settings, 305 const RendererSettings* settings,
305 OutputSurface* output_surface, 306 OutputSurface* output_surface,
306 ResourceProvider* resource_provider, 307 ResourceProvider* resource_provider,
307 TextureMailboxDeleter* texture_mailbox_deleter, 308 TextureMailboxDeleter* texture_mailbox_deleter,
308 int highp_threshold_min) { 309 int highp_threshold_min) {
309 return make_scoped_ptr(new GLRenderer(client, 310 return base::WrapUnique(
310 settings, 311 new GLRenderer(client, settings, output_surface, resource_provider,
311 output_surface, 312 texture_mailbox_deleter, highp_threshold_min));
312 resource_provider,
313 texture_mailbox_deleter,
314 highp_threshold_min));
315 } 313 }
316 314
317 GLRenderer::GLRenderer(RendererClient* client, 315 GLRenderer::GLRenderer(RendererClient* client,
318 const RendererSettings* settings, 316 const RendererSettings* settings,
319 OutputSurface* output_surface, 317 OutputSurface* output_surface,
320 ResourceProvider* resource_provider, 318 ResourceProvider* resource_provider,
321 TextureMailboxDeleter* texture_mailbox_deleter, 319 TextureMailboxDeleter* texture_mailbox_deleter,
322 int highp_threshold_min) 320 int highp_threshold_min)
323 : DirectRenderer(client, settings, output_surface, resource_provider), 321 : DirectRenderer(client, settings, output_surface, resource_provider),
324 offscreen_framebuffer_id_(0), 322 offscreen_framebuffer_id_(0),
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 } 471 }
474 472
475 while (!pending_sync_queries_.empty()) { 473 while (!pending_sync_queries_.empty()) {
476 if (pending_sync_queries_.front()->IsPending()) 474 if (pending_sync_queries_.front()->IsPending())
477 break; 475 break;
478 476
479 available_sync_queries_.push_back(PopFront(&pending_sync_queries_)); 477 available_sync_queries_.push_back(PopFront(&pending_sync_queries_));
480 } 478 }
481 479
482 current_sync_query_ = available_sync_queries_.empty() 480 current_sync_query_ = available_sync_queries_.empty()
483 ? make_scoped_ptr(new SyncQuery(gl_)) 481 ? base::WrapUnique(new SyncQuery(gl_))
484 : PopFront(&available_sync_queries_); 482 : PopFront(&available_sync_queries_);
485 483
486 read_lock_fence = current_sync_query_->Begin(); 484 read_lock_fence = current_sync_query_->Begin();
487 } else { 485 } else {
488 read_lock_fence = 486 read_lock_fence =
489 make_scoped_refptr(new ResourceProvider::SynchronousFence(gl_)); 487 make_scoped_refptr(new ResourceProvider::SynchronousFence(gl_));
490 } 488 }
491 resource_provider_->SetReadLockFence(read_lock_fence.get()); 489 resource_provider_->SetReadLockFence(read_lock_fence.get());
492 490
493 // Insert WaitSyncTokenCHROMIUM on quad resources prior to drawing the frame, 491 // Insert WaitSyncTokenCHROMIUM on quad resources prior to drawing the frame,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 (SkColorGetB(color) * (1.0f / 255.0f)) * alpha, alpha); 589 (SkColorGetB(color) * (1.0f / 255.0f)) * alpha, alpha);
592 590
593 gl_->LineWidth(quad->width); 591 gl_->LineWidth(quad->width);
594 592
595 // The indices for the line are stored in the same array as the triangle 593 // The indices for the line are stored in the same array as the triangle
596 // indices. 594 // indices.
597 gl_->DrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 0); 595 gl_->DrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_SHORT, 0);
598 } 596 }
599 597
600 static skia::RefPtr<SkImage> ApplyImageFilter( 598 static skia::RefPtr<SkImage> ApplyImageFilter(
601 scoped_ptr<GLRenderer::ScopedUseGrContext> use_gr_context, 599 std::unique_ptr<GLRenderer::ScopedUseGrContext> use_gr_context,
602 ResourceProvider* resource_provider, 600 ResourceProvider* resource_provider,
603 const gfx::RectF& src_rect, 601 const gfx::RectF& src_rect,
604 const gfx::RectF& dst_rect, 602 const gfx::RectF& dst_rect,
605 const gfx::Vector2dF& scale, 603 const gfx::Vector2dF& scale,
606 SkImageFilter* filter, 604 SkImageFilter* filter,
607 ScopedResource* source_texture_resource) { 605 ScopedResource* source_texture_resource) {
608 if (!filter) 606 if (!filter)
609 return skia::RefPtr<SkImage>(); 607 return skia::RefPtr<SkImage>();
610 608
611 if (!use_gr_context) 609 if (!use_gr_context)
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 // background, so texture edge clamping gives us a transparent border 826 // background, so texture edge clamping gives us a transparent border
829 // in case the filter expands the result. 827 // in case the filter expands the result.
830 backdrop_rect.Inset(-1, -1, -1, -1); 828 backdrop_rect.Inset(-1, -1, -1, -1);
831 } 829 }
832 830
833 backdrop_rect.Intersect(MoveFromDrawToWindowSpace( 831 backdrop_rect.Intersect(MoveFromDrawToWindowSpace(
834 frame, frame->current_render_pass->output_rect)); 832 frame, frame->current_render_pass->output_rect));
835 return backdrop_rect; 833 return backdrop_rect;
836 } 834 }
837 835
838 scoped_ptr<ScopedResource> GLRenderer::GetBackdropTexture( 836 std::unique_ptr<ScopedResource> GLRenderer::GetBackdropTexture(
839 const gfx::Rect& bounding_rect) { 837 const gfx::Rect& bounding_rect) {
840 scoped_ptr<ScopedResource> device_background_texture = 838 std::unique_ptr<ScopedResource> device_background_texture =
841 ScopedResource::Create(resource_provider_); 839 ScopedResource::Create(resource_provider_);
842 // CopyTexImage2D fails when called on a texture having immutable storage. 840 // CopyTexImage2D fails when called on a texture having immutable storage.
843 device_background_texture->Allocate( 841 device_background_texture->Allocate(
844 bounding_rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT, 842 bounding_rect.size(), ResourceProvider::TEXTURE_HINT_DEFAULT,
845 resource_provider_->best_texture_format()); 843 resource_provider_->best_texture_format());
846 { 844 {
847 ResourceProvider::ScopedWriteLockGL lock(resource_provider_, 845 ResourceProvider::ScopedWriteLockGL lock(resource_provider_,
848 device_background_texture->id()); 846 device_background_texture->id());
849 GetFramebufferTexture(lock.texture_id(), RGBA_8888, bounding_rect); 847 GetFramebufferTexture(lock.texture_id(), RGBA_8888, bounding_rect);
850 } 848 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 const gfx::QuadF* aa_quad = use_aa ? &device_layer_quad : nullptr; 918 const gfx::QuadF* aa_quad = use_aa ? &device_layer_quad : nullptr;
921 SetupRenderPassQuadForClippingAndAntialiasing(contents_device_transform, quad, 919 SetupRenderPassQuadForClippingAndAntialiasing(contents_device_transform, quad,
922 aa_quad, clip_region, 920 aa_quad, clip_region,
923 &surface_quad, edge); 921 &surface_quad, edge);
924 SkXfermode::Mode blend_mode = quad->shared_quad_state->blend_mode; 922 SkXfermode::Mode blend_mode = quad->shared_quad_state->blend_mode;
925 bool use_shaders_for_blending = 923 bool use_shaders_for_blending =
926 !CanApplyBlendModeUsingBlendFunc(blend_mode) || 924 !CanApplyBlendModeUsingBlendFunc(blend_mode) ||
927 ShouldApplyBackgroundFilters(quad) || 925 ShouldApplyBackgroundFilters(quad) ||
928 settings_->force_blending_with_shaders; 926 settings_->force_blending_with_shaders;
929 927
930 scoped_ptr<ScopedResource> background_texture; 928 std::unique_ptr<ScopedResource> background_texture;
931 skia::RefPtr<SkImage> background_image; 929 skia::RefPtr<SkImage> background_image;
932 GLuint background_image_id = 0; 930 GLuint background_image_id = 0;
933 gfx::Rect background_rect; 931 gfx::Rect background_rect;
934 if (use_shaders_for_blending) { 932 if (use_shaders_for_blending) {
935 // Compute a bounding box around the pixels that will be visible through 933 // Compute a bounding box around the pixels that will be visible through
936 // the quad. 934 // the quad.
937 background_rect = GetBackdropBoundingBoxForRenderPassQuad( 935 background_rect = GetBackdropBoundingBoxForRenderPassQuad(
938 frame, quad, contents_device_transform, clip_region, use_aa); 936 frame, quad, contents_device_transform, clip_region, use_aa);
939 937
940 if (!background_rect.IsEmpty()) { 938 if (!background_rect.IsEmpty()) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 filter_image_id = skia::GrBackendObjectToGrGLTextureInfo( 1032 filter_image_id = skia::GrBackendObjectToGrGLTextureInfo(
1035 filter_image->getTextureHandle(true)) 1033 filter_image->getTextureHandle(true))
1036 ->fID; 1034 ->fID;
1037 DCHECK(filter_image_id); 1035 DCHECK(filter_image_id);
1038 rect = dst_rect; 1036 rect = dst_rect;
1039 } 1037 }
1040 } 1038 }
1041 } 1039 }
1042 } 1040 }
1043 1041
1044 scoped_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock; 1042 std::unique_ptr<ResourceProvider::ScopedSamplerGL> mask_resource_lock;
1045 unsigned mask_texture_id = 0; 1043 unsigned mask_texture_id = 0;
1046 SamplerType mask_sampler = SAMPLER_TYPE_NA; 1044 SamplerType mask_sampler = SAMPLER_TYPE_NA;
1047 if (quad->mask_resource_id()) { 1045 if (quad->mask_resource_id()) {
1048 mask_resource_lock.reset(new ResourceProvider::ScopedSamplerGL( 1046 mask_resource_lock.reset(new ResourceProvider::ScopedSamplerGL(
1049 resource_provider_, quad->mask_resource_id(), GL_TEXTURE1, GL_LINEAR)); 1047 resource_provider_, quad->mask_resource_id(), GL_TEXTURE1, GL_LINEAR));
1050 mask_texture_id = mask_resource_lock->texture_id(); 1048 mask_texture_id = mask_resource_lock->texture_id();
1051 mask_sampler = SamplerTypeFromTextureTarget(mask_resource_lock->target()); 1049 mask_sampler = SamplerTypeFromTextureTarget(mask_resource_lock->target());
1052 } 1050 }
1053 1051
1054 scoped_ptr<ResourceProvider::ScopedSamplerGL> contents_resource_lock; 1052 std::unique_ptr<ResourceProvider::ScopedSamplerGL> contents_resource_lock;
1055 if (filter_image_id) { 1053 if (filter_image_id) {
1056 DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_)); 1054 DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
1057 gl_->BindTexture(GL_TEXTURE_2D, filter_image_id); 1055 gl_->BindTexture(GL_TEXTURE_2D, filter_image_id);
1058 } else { 1056 } else {
1059 contents_resource_lock = 1057 contents_resource_lock =
1060 make_scoped_ptr(new ResourceProvider::ScopedSamplerGL( 1058 base::WrapUnique(new ResourceProvider::ScopedSamplerGL(
1061 resource_provider_, contents_texture->id(), GL_LINEAR)); 1059 resource_provider_, contents_texture->id(), GL_LINEAR));
1062 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), 1060 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D),
1063 contents_resource_lock->target()); 1061 contents_resource_lock->target());
1064 } 1062 }
1065 1063
1066 if (!use_shaders_for_blending) { 1064 if (!use_shaders_for_blending) {
1067 if (!use_blend_equation_advanced_coherent_ && use_blend_equation_advanced_) 1065 if (!use_blend_equation_advanced_coherent_ && use_blend_equation_advanced_)
1068 gl_->BlendBarrierKHR(); 1066 gl_->BlendBarrierKHR();
1069 1067
1070 ApplyBlendModeUsingBlendFunc(blend_mode); 1068 ApplyBlendModeUsingBlendFunc(blend_mode);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 } 1211 }
1214 static const float kScale = 1.0f / 255.0f; 1212 static const float kScale = 1.0f / 255.0f;
1215 if (locations.color_offset != -1) { 1213 if (locations.color_offset != -1) {
1216 float offset[4]; 1214 float offset[4];
1217 for (int i = 0; i < 4; ++i) 1215 for (int i = 0; i < 4; ++i)
1218 offset[i] = SkScalarToFloat(color_matrix[i * 5 + 4]) * kScale; 1216 offset[i] = SkScalarToFloat(color_matrix[i * 5 + 4]) * kScale;
1219 1217
1220 gl_->Uniform4fv(locations.color_offset, 1, offset); 1218 gl_->Uniform4fv(locations.color_offset, 1, offset);
1221 } 1219 }
1222 1220
1223 scoped_ptr<ResourceProvider::ScopedSamplerGL> shader_background_sampler_lock; 1221 std::unique_ptr<ResourceProvider::ScopedSamplerGL>
1222 shader_background_sampler_lock;
1224 if (locations.backdrop != -1) { 1223 if (locations.backdrop != -1) {
1225 DCHECK(background_texture || background_image_id); 1224 DCHECK(background_texture || background_image_id);
1226 DCHECK_NE(locations.backdrop, 0); 1225 DCHECK_NE(locations.backdrop, 0);
1227 DCHECK_NE(locations.backdrop_rect, 0); 1226 DCHECK_NE(locations.backdrop_rect, 0);
1228 1227
1229 gl_->Uniform1i(locations.backdrop, ++last_texture_unit); 1228 gl_->Uniform1i(locations.backdrop, ++last_texture_unit);
1230 1229
1231 gl_->Uniform4f(locations.backdrop_rect, background_rect.x(), 1230 gl_->Uniform4f(locations.backdrop_rect, background_rect.x(),
1232 background_rect.y(), background_rect.width(), 1231 background_rect.y(), background_rect.width(),
1233 background_rect.height()); 1232 background_rect.height());
1234 1233
1235 if (background_image_id) { 1234 if (background_image_id) {
1236 gl_->ActiveTexture(GL_TEXTURE0 + last_texture_unit); 1235 gl_->ActiveTexture(GL_TEXTURE0 + last_texture_unit);
1237 gl_->BindTexture(GL_TEXTURE_2D, background_image_id); 1236 gl_->BindTexture(GL_TEXTURE_2D, background_image_id);
1238 gl_->ActiveTexture(GL_TEXTURE0); 1237 gl_->ActiveTexture(GL_TEXTURE0);
1239 if (mask_for_background) 1238 if (mask_for_background)
1240 gl_->Uniform1i(locations.original_backdrop, ++last_texture_unit); 1239 gl_->Uniform1i(locations.original_backdrop, ++last_texture_unit);
1241 } 1240 }
1242 if (background_texture) { 1241 if (background_texture) {
1243 shader_background_sampler_lock = make_scoped_ptr( 1242 shader_background_sampler_lock =
1244 new ResourceProvider::ScopedSamplerGL(resource_provider_, 1243 base::WrapUnique(new ResourceProvider::ScopedSamplerGL(
1245 background_texture->id(), 1244 resource_provider_, background_texture->id(),
1246 GL_TEXTURE0 + last_texture_unit, 1245 GL_TEXTURE0 + last_texture_unit, GL_LINEAR));
1247 GL_LINEAR));
1248 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), 1246 DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D),
1249 shader_background_sampler_lock->target()); 1247 shader_background_sampler_lock->target());
1250 } 1248 }
1251 } 1249 }
1252 1250
1253 SetShaderOpacity(quad->shared_quad_state->opacity, locations.alpha); 1251 SetShaderOpacity(quad->shared_quad_state->opacity, locations.alpha);
1254 SetShaderQuadF(surface_quad, locations.quad); 1252 SetShaderQuadF(surface_quad, locations.quad);
1255 DrawQuadGeometry(frame, quad->shared_quad_state->quad_to_target_transform, 1253 DrawQuadGeometry(frame, quad->shared_quad_state->quad_to_target_transform,
1256 rect, locations.matrix); 1254 rect, locations.matrix);
1257 1255
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
1961 bool use_alpha_plane = quad->a_plane_resource_id() != 0; 1959 bool use_alpha_plane = quad->a_plane_resource_id() != 0;
1962 1960
1963 ResourceProvider::ScopedSamplerGL y_plane_lock( 1961 ResourceProvider::ScopedSamplerGL y_plane_lock(
1964 resource_provider_, quad->y_plane_resource_id(), GL_TEXTURE1, GL_LINEAR); 1962 resource_provider_, quad->y_plane_resource_id(), GL_TEXTURE1, GL_LINEAR);
1965 ResourceProvider::ScopedSamplerGL u_plane_lock( 1963 ResourceProvider::ScopedSamplerGL u_plane_lock(
1966 resource_provider_, quad->u_plane_resource_id(), GL_TEXTURE2, GL_LINEAR); 1964 resource_provider_, quad->u_plane_resource_id(), GL_TEXTURE2, GL_LINEAR);
1967 DCHECK_EQ(y_plane_lock.target(), u_plane_lock.target()); 1965 DCHECK_EQ(y_plane_lock.target(), u_plane_lock.target());
1968 ResourceProvider::ScopedSamplerGL v_plane_lock( 1966 ResourceProvider::ScopedSamplerGL v_plane_lock(
1969 resource_provider_, quad->v_plane_resource_id(), GL_TEXTURE3, GL_LINEAR); 1967 resource_provider_, quad->v_plane_resource_id(), GL_TEXTURE3, GL_LINEAR);
1970 DCHECK_EQ(y_plane_lock.target(), v_plane_lock.target()); 1968 DCHECK_EQ(y_plane_lock.target(), v_plane_lock.target());
1971 scoped_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock; 1969 std::unique_ptr<ResourceProvider::ScopedSamplerGL> a_plane_lock;
1972 if (use_alpha_plane) { 1970 if (use_alpha_plane) {
1973 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL( 1971 a_plane_lock.reset(new ResourceProvider::ScopedSamplerGL(
1974 resource_provider_, quad->a_plane_resource_id(), GL_TEXTURE4, 1972 resource_provider_, quad->a_plane_resource_id(), GL_TEXTURE4,
1975 GL_LINEAR)); 1973 GL_LINEAR));
1976 DCHECK_EQ(y_plane_lock.target(), a_plane_lock->target()); 1974 DCHECK_EQ(y_plane_lock.target(), a_plane_lock->target());
1977 } 1975 }
1978 1976
1979 // All planes must have the same sampler type. 1977 // All planes must have the same sampler type.
1980 SamplerType sampler = SamplerTypeFromTextureTarget(y_plane_lock.target()); 1978 SamplerType sampler = SamplerTypeFromTextureTarget(y_plane_lock.target());
1981 1979
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
2535 if (!is_scissor_enabled_) 2533 if (!is_scissor_enabled_)
2536 return; 2534 return;
2537 2535
2538 FlushTextureQuadCache(SHARED_BINDING); 2536 FlushTextureQuadCache(SHARED_BINDING);
2539 gl_->Disable(GL_SCISSOR_TEST); 2537 gl_->Disable(GL_SCISSOR_TEST);
2540 is_scissor_enabled_ = false; 2538 is_scissor_enabled_ = false;
2541 } 2539 }
2542 2540
2543 void GLRenderer::CopyCurrentRenderPassToBitmap( 2541 void GLRenderer::CopyCurrentRenderPassToBitmap(
2544 DrawingFrame* frame, 2542 DrawingFrame* frame,
2545 scoped_ptr<CopyOutputRequest> request) { 2543 std::unique_ptr<CopyOutputRequest> request) {
2546 TRACE_EVENT0("cc", "GLRenderer::CopyCurrentRenderPassToBitmap"); 2544 TRACE_EVENT0("cc", "GLRenderer::CopyCurrentRenderPassToBitmap");
2547 gfx::Rect copy_rect = frame->current_render_pass->output_rect; 2545 gfx::Rect copy_rect = frame->current_render_pass->output_rect;
2548 if (request->has_area()) 2546 if (request->has_area())
2549 copy_rect.Intersect(request->area()); 2547 copy_rect.Intersect(request->area());
2550 GetFramebufferPixelsAsync(frame, copy_rect, std::move(request)); 2548 GetFramebufferPixelsAsync(frame, copy_rect, std::move(request));
2551 } 2549 }
2552 2550
2553 void GLRenderer::ToGLMatrix(float* gl_matrix, const gfx::Transform& transform) { 2551 void GLRenderer::ToGLMatrix(float* gl_matrix, const gfx::Transform& transform) {
2554 transform.matrix().asColMajorf(gl_matrix); 2552 transform.matrix().asColMajorf(gl_matrix);
2555 } 2553 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2649 void GLRenderer::SwapBuffers(const CompositorFrameMetadata& metadata) { 2647 void GLRenderer::SwapBuffers(const CompositorFrameMetadata& metadata) {
2650 DCHECK(!is_backbuffer_discarded_); 2648 DCHECK(!is_backbuffer_discarded_);
2651 2649
2652 TRACE_EVENT0("cc,benchmark", "GLRenderer::SwapBuffers"); 2650 TRACE_EVENT0("cc,benchmark", "GLRenderer::SwapBuffers");
2653 // We're done! Time to swapbuffers! 2651 // We're done! Time to swapbuffers!
2654 2652
2655 gfx::Size surface_size = output_surface_->SurfaceSize(); 2653 gfx::Size surface_size = output_surface_->SurfaceSize();
2656 2654
2657 CompositorFrame compositor_frame; 2655 CompositorFrame compositor_frame;
2658 compositor_frame.metadata = metadata; 2656 compositor_frame.metadata = metadata;
2659 compositor_frame.gl_frame_data = make_scoped_ptr(new GLFrameData); 2657 compositor_frame.gl_frame_data = base::WrapUnique(new GLFrameData);
2660 compositor_frame.gl_frame_data->size = surface_size; 2658 compositor_frame.gl_frame_data->size = surface_size;
2661 if (capabilities_.using_partial_swap) { 2659 if (capabilities_.using_partial_swap) {
2662 // If supported, we can save significant bandwidth by only swapping the 2660 // If supported, we can save significant bandwidth by only swapping the
2663 // damaged/scissored region (clamped to the viewport). 2661 // damaged/scissored region (clamped to the viewport).
2664 swap_buffer_rect_.Intersect(gfx::Rect(surface_size)); 2662 swap_buffer_rect_.Intersect(gfx::Rect(surface_size));
2665 int flipped_y_pos_of_rect_bottom = surface_size.height() - 2663 int flipped_y_pos_of_rect_bottom = surface_size.height() -
2666 swap_buffer_rect_.y() - 2664 swap_buffer_rect_.y() -
2667 swap_buffer_rect_.height(); 2665 swap_buffer_rect_.height();
2668 compositor_frame.gl_frame_data->sub_buffer_rect = 2666 compositor_frame.gl_frame_data->sub_buffer_rect =
2669 gfx::Rect(swap_buffer_rect_.x(), 2667 gfx::Rect(swap_buffer_rect_.x(),
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2725 if (!is_backbuffer_discarded_) 2723 if (!is_backbuffer_discarded_)
2726 return; 2724 return;
2727 2725
2728 output_surface_->EnsureBackbuffer(); 2726 output_surface_->EnsureBackbuffer();
2729 is_backbuffer_discarded_ = false; 2727 is_backbuffer_discarded_ = false;
2730 } 2728 }
2731 2729
2732 void GLRenderer::GetFramebufferPixelsAsync( 2730 void GLRenderer::GetFramebufferPixelsAsync(
2733 const DrawingFrame* frame, 2731 const DrawingFrame* frame,
2734 const gfx::Rect& rect, 2732 const gfx::Rect& rect,
2735 scoped_ptr<CopyOutputRequest> request) { 2733 std::unique_ptr<CopyOutputRequest> request) {
2736 DCHECK(!request->IsEmpty()); 2734 DCHECK(!request->IsEmpty());
2737 if (request->IsEmpty()) 2735 if (request->IsEmpty())
2738 return; 2736 return;
2739 if (rect.IsEmpty()) 2737 if (rect.IsEmpty())
2740 return; 2738 return;
2741 2739
2742 gfx::Rect window_rect = MoveFromDrawToWindowSpace(frame, rect); 2740 gfx::Rect window_rect = MoveFromDrawToWindowSpace(frame, rect);
2743 DCHECK_GE(window_rect.x(), 0); 2741 DCHECK_GE(window_rect.x(), 0);
2744 DCHECK_GE(window_rect.y(), 0); 2742 DCHECK_GE(window_rect.y(), 0);
2745 DCHECK_LE(window_rect.right(), current_surface_size_.width()); 2743 DCHECK_LE(window_rect.right(), current_surface_size_.width());
(...skipping 30 matching lines...) Expand all
2776 GetFramebufferTexture(texture_id, RGBA_8888, window_rect); 2774 GetFramebufferTexture(texture_id, RGBA_8888, window_rect);
2777 2775
2778 const GLuint64 fence_sync = gl_->InsertFenceSyncCHROMIUM(); 2776 const GLuint64 fence_sync = gl_->InsertFenceSyncCHROMIUM();
2779 gl_->ShallowFlushCHROMIUM(); 2777 gl_->ShallowFlushCHROMIUM();
2780 2778
2781 gpu::SyncToken sync_token; 2779 gpu::SyncToken sync_token;
2782 gl_->GenSyncTokenCHROMIUM(fence_sync, sync_token.GetData()); 2780 gl_->GenSyncTokenCHROMIUM(fence_sync, sync_token.GetData());
2783 2781
2784 TextureMailbox texture_mailbox(mailbox, sync_token, GL_TEXTURE_2D); 2782 TextureMailbox texture_mailbox(mailbox, sync_token, GL_TEXTURE_2D);
2785 2783
2786 scoped_ptr<SingleReleaseCallback> release_callback; 2784 std::unique_ptr<SingleReleaseCallback> release_callback;
2787 if (own_mailbox) { 2785 if (own_mailbox) {
2788 gl_->BindTexture(GL_TEXTURE_2D, 0); 2786 gl_->BindTexture(GL_TEXTURE_2D, 0);
2789 release_callback = texture_mailbox_deleter_->GetReleaseCallback( 2787 release_callback = texture_mailbox_deleter_->GetReleaseCallback(
2790 output_surface_->context_provider(), texture_id); 2788 output_surface_->context_provider(), texture_id);
2791 } else { 2789 } else {
2792 gl_->DeleteTextures(1, &texture_id); 2790 gl_->DeleteTextures(1, &texture_id);
2793 } 2791 }
2794 2792
2795 request->SendTextureResult(window_rect.size(), texture_mailbox, 2793 request->SendTextureResult(window_rect.size(), texture_mailbox,
2796 std::move(release_callback)); 2794 std::move(release_callback));
2797 return; 2795 return;
2798 } 2796 }
2799 2797
2800 DCHECK(request->force_bitmap_result()); 2798 DCHECK(request->force_bitmap_result());
2801 2799
2802 scoped_ptr<PendingAsyncReadPixels> pending_read(new PendingAsyncReadPixels); 2800 std::unique_ptr<PendingAsyncReadPixels> pending_read(
2801 new PendingAsyncReadPixels);
2803 pending_read->copy_request = std::move(request); 2802 pending_read->copy_request = std::move(request);
2804 pending_async_read_pixels_.insert(pending_async_read_pixels_.begin(), 2803 pending_async_read_pixels_.insert(pending_async_read_pixels_.begin(),
2805 std::move(pending_read)); 2804 std::move(pending_read));
2806 2805
2807 GLuint buffer = 0; 2806 GLuint buffer = 0;
2808 gl_->GenBuffers(1, &buffer); 2807 gl_->GenBuffers(1, &buffer);
2809 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, buffer); 2808 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, buffer);
2810 gl_->BufferData(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, 2809 gl_->BufferData(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM,
2811 4 * window_rect.size().GetArea(), NULL, GL_STREAM_READ); 2810 4 * window_rect.size().GetArea(), NULL, GL_STREAM_READ);
2812 2811
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2856 // start searching from back to the front. 2855 // start searching from back to the front.
2857 auto iter = pending_async_read_pixels_.rbegin(); 2856 auto iter = pending_async_read_pixels_.rbegin();
2858 const auto& reverse_end = pending_async_read_pixels_.rend(); 2857 const auto& reverse_end = pending_async_read_pixels_.rend();
2859 while (iter != reverse_end && (*iter)->buffer != source_buffer) 2858 while (iter != reverse_end && (*iter)->buffer != source_buffer)
2860 ++iter; 2859 ++iter;
2861 2860
2862 DCHECK(iter != reverse_end); 2861 DCHECK(iter != reverse_end);
2863 PendingAsyncReadPixels* current_read = iter->get(); 2862 PendingAsyncReadPixels* current_read = iter->get();
2864 2863
2865 uint8_t* src_pixels = NULL; 2864 uint8_t* src_pixels = NULL;
2866 scoped_ptr<SkBitmap> bitmap; 2865 std::unique_ptr<SkBitmap> bitmap;
2867 2866
2868 if (source_buffer != 0) { 2867 if (source_buffer != 0) {
2869 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, source_buffer); 2868 gl_->BindBuffer(GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, source_buffer);
2870 src_pixels = static_cast<uint8_t*>(gl_->MapBufferCHROMIUM( 2869 src_pixels = static_cast<uint8_t*>(gl_->MapBufferCHROMIUM(
2871 GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, GL_READ_ONLY)); 2870 GL_PIXEL_PACK_TRANSFER_BUFFER_CHROMIUM, GL_READ_ONLY));
2872 2871
2873 if (src_pixels) { 2872 if (src_pixels) {
2874 bitmap.reset(new SkBitmap); 2873 bitmap.reset(new SkBitmap);
2875 bitmap->allocN32Pixels(size.width(), size.height()); 2874 bitmap->allocN32Pixels(size.width(), size.height());
2876 scoped_ptr<SkAutoLockPixels> lock(new SkAutoLockPixels(*bitmap)); 2875 std::unique_ptr<SkAutoLockPixels> lock(new SkAutoLockPixels(*bitmap));
2877 uint8_t* dest_pixels = static_cast<uint8_t*>(bitmap->getPixels()); 2876 uint8_t* dest_pixels = static_cast<uint8_t*>(bitmap->getPixels());
2878 2877
2879 size_t row_bytes = size.width() * 4; 2878 size_t row_bytes = size.width() * 4;
2880 int num_rows = size.height(); 2879 int num_rows = size.height();
2881 size_t total_bytes = num_rows * row_bytes; 2880 size_t total_bytes = num_rows * row_bytes;
2882 for (size_t dest_y = 0; dest_y < total_bytes; dest_y += row_bytes) { 2881 for (size_t dest_y = 0; dest_y < total_bytes; dest_y += row_bytes) {
2883 // Flip Y axis. 2882 // Flip Y axis.
2884 size_t src_y = total_bytes - dest_y - row_bytes; 2883 size_t src_y = total_bytes - dest_y - row_bytes;
2885 // Swizzle OpenGL -> Skia byte order. 2884 // Swizzle OpenGL -> Skia byte order.
2886 for (size_t x = 0; x < row_bytes; x += 4) { 2885 for (size_t x = 0; x < row_bytes; x += 4) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2943 const ScopedResource* texture) { 2942 const ScopedResource* texture) {
2944 DCHECK(texture->id()); 2943 DCHECK(texture->id());
2945 2944
2946 // Explicitly release lock, otherwise we can crash when try to lock 2945 // Explicitly release lock, otherwise we can crash when try to lock
2947 // same texture again. 2946 // same texture again.
2948 current_framebuffer_lock_ = nullptr; 2947 current_framebuffer_lock_ = nullptr;
2949 2948
2950 SetStencilEnabled(false); 2949 SetStencilEnabled(false);
2951 gl_->BindFramebuffer(GL_FRAMEBUFFER, offscreen_framebuffer_id_); 2950 gl_->BindFramebuffer(GL_FRAMEBUFFER, offscreen_framebuffer_id_);
2952 current_framebuffer_lock_ = 2951 current_framebuffer_lock_ =
2953 make_scoped_ptr(new ResourceProvider::ScopedWriteLockGL( 2952 base::WrapUnique(new ResourceProvider::ScopedWriteLockGL(
2954 resource_provider_, texture->id())); 2953 resource_provider_, texture->id()));
2955 unsigned texture_id = current_framebuffer_lock_->texture_id(); 2954 unsigned texture_id = current_framebuffer_lock_->texture_id();
2956 gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 2955 gl_->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
2957 texture_id, 0); 2956 texture_id, 0);
2958 2957
2959 DCHECK(gl_->CheckFramebufferStatus(GL_FRAMEBUFFER) == 2958 DCHECK(gl_->CheckFramebufferStatus(GL_FRAMEBUFFER) ==
2960 GL_FRAMEBUFFER_COMPLETE || 2959 GL_FRAMEBUFFER_COMPLETE ||
2961 IsContextLost()); 2960 IsContextLost());
2962 return true; 2961 return true;
2963 } 2962 }
(...skipping 21 matching lines...) Expand all
2985 current_window_space_viewport_.height()); 2984 current_window_space_viewport_.height());
2986 } 2985 }
2987 2986
2988 void GLRenderer::InitializeSharedObjects() { 2987 void GLRenderer::InitializeSharedObjects() {
2989 TRACE_EVENT0("cc", "GLRenderer::InitializeSharedObjects"); 2988 TRACE_EVENT0("cc", "GLRenderer::InitializeSharedObjects");
2990 2989
2991 // Create an FBO for doing offscreen rendering. 2990 // Create an FBO for doing offscreen rendering.
2992 gl_->GenFramebuffers(1, &offscreen_framebuffer_id_); 2991 gl_->GenFramebuffers(1, &offscreen_framebuffer_id_);
2993 2992
2994 shared_geometry_ = 2993 shared_geometry_ =
2995 make_scoped_ptr(new StaticGeometryBinding(gl_, QuadVertexRect())); 2994 base::WrapUnique(new StaticGeometryBinding(gl_, QuadVertexRect()));
2996 clipped_geometry_ = make_scoped_ptr(new DynamicGeometryBinding(gl_)); 2995 clipped_geometry_ = base::WrapUnique(new DynamicGeometryBinding(gl_));
2997 } 2996 }
2998 2997
2999 void GLRenderer::PrepareGeometry(BoundGeometry binding) { 2998 void GLRenderer::PrepareGeometry(BoundGeometry binding) {
3000 if (binding == bound_geometry_) { 2999 if (binding == bound_geometry_) {
3001 return; 3000 return;
3002 } 3001 }
3003 3002
3004 switch (binding) { 3003 switch (binding) {
3005 case SHARED_BINDING: 3004 case SHARED_BINDING:
3006 shared_geometry_->PrepareForDraw(); 3005 shared_geometry_->PrepareForDraw();
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
3540 3539
3541 bool GLRenderer::IsContextLost() { 3540 bool GLRenderer::IsContextLost() {
3542 return gl_->GetGraphicsResetStatusKHR() != GL_NO_ERROR; 3541 return gl_->GetGraphicsResetStatusKHR() != GL_NO_ERROR;
3543 } 3542 }
3544 3543
3545 void GLRenderer::ScheduleCALayers(DrawingFrame* frame) { 3544 void GLRenderer::ScheduleCALayers(DrawingFrame* frame) {
3546 for (const CALayerOverlay& ca_layer_overlay : frame->ca_layer_overlay_list) { 3545 for (const CALayerOverlay& ca_layer_overlay : frame->ca_layer_overlay_list) {
3547 unsigned texture_id = 0; 3546 unsigned texture_id = 0;
3548 if (ca_layer_overlay.contents_resource_id) { 3547 if (ca_layer_overlay.contents_resource_id) {
3549 pending_overlay_resources_.push_back( 3548 pending_overlay_resources_.push_back(
3550 make_scoped_ptr(new ResourceProvider::ScopedReadLockGL( 3549 base::WrapUnique(new ResourceProvider::ScopedReadLockGL(
3551 resource_provider_, ca_layer_overlay.contents_resource_id))); 3550 resource_provider_, ca_layer_overlay.contents_resource_id)));
3552 texture_id = pending_overlay_resources_.back()->texture_id(); 3551 texture_id = pending_overlay_resources_.back()->texture_id();
3553 } 3552 }
3554 GLfloat contents_rect[4] = { 3553 GLfloat contents_rect[4] = {
3555 ca_layer_overlay.contents_rect.x(), ca_layer_overlay.contents_rect.y(), 3554 ca_layer_overlay.contents_rect.x(), ca_layer_overlay.contents_rect.y(),
3556 ca_layer_overlay.contents_rect.width(), 3555 ca_layer_overlay.contents_rect.width(),
3557 ca_layer_overlay.contents_rect.height(), 3556 ca_layer_overlay.contents_rect.height(),
3558 }; 3557 };
3559 GLfloat bounds_rect[4] = { 3558 GLfloat bounds_rect[4] = {
3560 ca_layer_overlay.bounds_rect.x(), ca_layer_overlay.bounds_rect.y(), 3559 ca_layer_overlay.bounds_rect.x(), ca_layer_overlay.bounds_rect.y(),
(...skipping 20 matching lines...) Expand all
3581 return; 3580 return;
3582 3581
3583 OverlayCandidateList& overlays = frame->overlay_list; 3582 OverlayCandidateList& overlays = frame->overlay_list;
3584 for (const OverlayCandidate& overlay : overlays) { 3583 for (const OverlayCandidate& overlay : overlays) {
3585 unsigned texture_id = 0; 3584 unsigned texture_id = 0;
3586 if (overlay.use_output_surface_for_resource) { 3585 if (overlay.use_output_surface_for_resource) {
3587 texture_id = output_surface_->GetOverlayTextureId(); 3586 texture_id = output_surface_->GetOverlayTextureId();
3588 DCHECK(texture_id || IsContextLost()); 3587 DCHECK(texture_id || IsContextLost());
3589 } else { 3588 } else {
3590 pending_overlay_resources_.push_back( 3589 pending_overlay_resources_.push_back(
3591 make_scoped_ptr(new ResourceProvider::ScopedReadLockGL( 3590 base::WrapUnique(new ResourceProvider::ScopedReadLockGL(
3592 resource_provider_, overlay.resource_id))); 3591 resource_provider_, overlay.resource_id)));
3593 texture_id = pending_overlay_resources_.back()->texture_id(); 3592 texture_id = pending_overlay_resources_.back()->texture_id();
3594 } 3593 }
3595 3594
3596 context_support_->ScheduleOverlayPlane( 3595 context_support_->ScheduleOverlayPlane(
3597 overlay.plane_z_order, overlay.transform, texture_id, 3596 overlay.plane_z_order, overlay.transform, texture_id,
3598 ToNearestRect(overlay.display_rect), overlay.uv_rect); 3597 ToNearestRect(overlay.display_rect), overlay.uv_rect);
3599 } 3598 }
3600 } 3599 }
3601 3600
3602 } // namespace cc 3601 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.h ('k') | cc/output/gl_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698