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

Side by Side Diff: cc/resource_update_controller.cc

Issue 11266030: Use gfx:: Geometry types for the resource provider and layer updater classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: uint8 Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « cc/resource_update.cc ('k') | cc/resource_update_controller_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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/resource_update_controller.h" 7 #include "cc/resource_update_controller.h"
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/prioritized_texture.h" 10 #include "cc/prioritized_texture.h"
(...skipping 21 matching lines...) Expand all
32 // Measured in seconds. 32 // Measured in seconds.
33 const double uploaderBusyTickRate = 0.001; 33 const double uploaderBusyTickRate = 0.001;
34 34
35 // Flush interval when performing texture uploads. 35 // Flush interval when performing texture uploads.
36 const int textureUploadFlushPeriod = 4; 36 const int textureUploadFlushPeriod = 4;
37 37
38 // Number of blocking update intervals to allow. 38 // Number of blocking update intervals to allow.
39 const size_t maxBlockingUpdateIntervals = 4; 39 const size_t maxBlockingUpdateIntervals = 4;
40 40
41 scoped_ptr<SkCanvas> createAcceleratedCanvas( 41 scoped_ptr<SkCanvas> createAcceleratedCanvas(
42 GrContext* grContext, cc::IntSize canvasSize, unsigned textureId) 42 GrContext* grContext, gfx::Size canvasSize, unsigned textureId)
43 { 43 {
44 GrPlatformTextureDesc textureDesc; 44 GrPlatformTextureDesc textureDesc;
45 textureDesc.fFlags = kRenderTarget_GrPlatformTextureFlag; 45 textureDesc.fFlags = kRenderTarget_GrPlatformTextureFlag;
46 textureDesc.fWidth = canvasSize.width(); 46 textureDesc.fWidth = canvasSize.width();
47 textureDesc.fHeight = canvasSize.height(); 47 textureDesc.fHeight = canvasSize.height();
48 textureDesc.fConfig = kSkia8888_GrPixelConfig; 48 textureDesc.fConfig = kSkia8888_GrPixelConfig;
49 textureDesc.fTextureHandle = textureId; 49 textureDesc.fTextureHandle = textureId;
50 SkAutoTUnref<GrTexture> target( 50 SkAutoTUnref<GrTexture> target(
51 grContext->createPlatformTexture(textureDesc)); 51 grContext->createPlatformTexture(textureDesc));
52 SkAutoTUnref<SkDevice> device(new SkGpuDevice(grContext, target.get())); 52 SkAutoTUnref<SkDevice> device(new SkGpuDevice(grContext, target.get()));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 114
115 void ResourceUpdateController::discardUploadsToEvictedResources() 115 void ResourceUpdateController::discardUploadsToEvictedResources()
116 { 116 {
117 m_queue->clearUploadsToEvictedResources(); 117 m_queue->clearUploadsToEvictedResources();
118 } 118 }
119 119
120 void ResourceUpdateController::updateTexture(ResourceUpdate update) 120 void ResourceUpdateController::updateTexture(ResourceUpdate update)
121 { 121 {
122 if (update.picture) { 122 if (update.picture) {
123 PrioritizedTexture* texture = update.texture; 123 PrioritizedTexture* texture = update.texture;
124 IntRect pictureRect = update.content_rect; 124 gfx::Rect pictureRect = update.content_rect;
125 IntRect sourceRect = update.source_rect; 125 gfx::Rect sourceRect = update.source_rect;
126 IntSize destOffset = update.dest_offset; 126 gfx::Vector2d destOffset = update.dest_offset;
127 127
128 texture->acquireBackingTexture(m_resourceProvider); 128 texture->acquireBackingTexture(m_resourceProvider);
129 DCHECK(texture->haveBackingTexture()); 129 DCHECK(texture->haveBackingTexture());
130 130
131 DCHECK(m_resourceProvider->resourceType(texture->resourceId()) == 131 DCHECK(m_resourceProvider->resourceType(texture->resourceId()) ==
132 ResourceProvider::GLTexture); 132 ResourceProvider::GLTexture);
133 133
134 WebGraphicsContext3D* paintContext = Proxy::hasImplThread() ? 134 WebGraphicsContext3D* paintContext = Proxy::hasImplThread() ?
135 WebSharedGraphicsContext3D::compositorThreadContext() : 135 WebSharedGraphicsContext3D::compositorThreadContext() :
136 WebSharedGraphicsContext3D::mainThreadContext(); 136 WebSharedGraphicsContext3D::mainThreadContext();
(...skipping 15 matching lines...) Expand all
152 // Create an accelerated canvas to draw on. 152 // Create an accelerated canvas to draw on.
153 scoped_ptr<SkCanvas> canvas = createAcceleratedCanvas( 153 scoped_ptr<SkCanvas> canvas = createAcceleratedCanvas(
154 paintGrContext, texture->size(), lock.textureId()); 154 paintGrContext, texture->size(), lock.textureId());
155 155
156 // The compositor expects the textures to be upside-down so it can flip 156 // The compositor expects the textures to be upside-down so it can flip
157 // the final composited image. Ganesh renders the image upright so we 157 // the final composited image. Ganesh renders the image upright so we
158 // need to do a y-flip. 158 // need to do a y-flip.
159 canvas->translate(0.0, texture->size().height()); 159 canvas->translate(0.0, texture->size().height());
160 canvas->scale(1.0, -1.0); 160 canvas->scale(1.0, -1.0);
161 // Clip to the destination on the texture that must be updated. 161 // Clip to the destination on the texture that must be updated.
162 canvas->clipRect(SkRect::MakeXYWH(destOffset.width(), 162 canvas->clipRect(SkRect::MakeXYWH(destOffset.x(),
163 destOffset.height(), 163 destOffset.y(),
164 sourceRect.width(), 164 sourceRect.width(),
165 sourceRect.height())); 165 sourceRect.height()));
166 // Translate the origin of pictureRect to destOffset. 166 // Translate the origin of pictureRect to destOffset.
167 // Note that destOffset is defined relative to sourceRect. 167 // Note that destOffset is defined relative to sourceRect.
168 canvas->translate( 168 canvas->translate(
169 pictureRect.x() - sourceRect.x() + destOffset.width(), 169 pictureRect.x() - sourceRect.x() + destOffset.x(),
170 pictureRect.y() - sourceRect.y() + destOffset.height()); 170 pictureRect.y() - sourceRect.y() + destOffset.y());
171 canvas->drawPicture(*update.picture); 171 canvas->drawPicture(*update.picture);
172 172
173 // Flush ganesh context so that all the rendered stuff appears on the 173 // Flush ganesh context so that all the rendered stuff appears on the
174 // texture. 174 // texture.
175 paintGrContext->flush(); 175 paintGrContext->flush();
176 176
177 // Flush the GL context so rendering results from this context are 177 // Flush the GL context so rendering results from this context are
178 // visible in the compositor's context. 178 // visible in the compositor's context.
179 paintContext->flush(); 179 paintContext->flush();
180 } 180 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 while (m_queue->fullUploadSize() && uploadCount < uploads) { 295 while (m_queue->fullUploadSize() && uploadCount < uploads) {
296 if (!(uploadCount % textureUploadFlushPeriod) && uploadCount) 296 if (!(uploadCount % textureUploadFlushPeriod) && uploadCount)
297 m_resourceProvider->shallowFlushIfSupported(); 297 m_resourceProvider->shallowFlushIfSupported();
298 updateTexture(m_queue->takeFirstFullUpload()); 298 updateTexture(m_queue->takeFirstFullUpload());
299 uploadCount++; 299 uploadCount++;
300 } 300 }
301 m_resourceProvider->shallowFlushIfSupported(); 301 m_resourceProvider->shallowFlushIfSupported();
302 } 302 }
303 303
304 } // namespace cc 304 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resource_update.cc ('k') | cc/resource_update_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698