OLD | NEW |
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 "cc/software_renderer.h" | 5 #include "cc/software_renderer.h" |
6 | 6 |
7 #include <public/WebImage.h> | 7 #include <public/WebImage.h> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "cc/debug_border_draw_quad.h" | 10 #include "cc/debug_border_draw_quad.h" |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 gfx::RectFToSkRect(quadVertexRect())
, | 279 gfx::RectFToSkRect(quadVertexRect())
, |
280 &m_skCurrentPaint); | 280 &m_skCurrentPaint); |
281 } | 281 } |
282 | 282 |
283 void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
rPassDrawQuad* quad) | 283 void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
rPassDrawQuad* quad) |
284 { | 284 { |
285 CachedResource* contentTexture = m_renderPassTextures.get(quad->render_pass_
id); | 285 CachedResource* contentTexture = m_renderPassTextures.get(quad->render_pass_
id); |
286 if (!contentTexture || !contentTexture->id()) | 286 if (!contentTexture || !contentTexture->id()) |
287 return; | 287 return; |
288 | 288 |
289 const RenderPass* renderPass = frame.renderPassesById->get(quad->render_pass
_id); | |
290 DCHECK(renderPass); | |
291 if (!renderPass) | |
292 return; | |
293 | |
294 DCHECK(isSoftwareResource(contentTexture->id())); | 289 DCHECK(isSoftwareResource(contentTexture->id())); |
295 ResourceProvider::ScopedReadLockSoftware lock(m_resourceProvider, contentTex
ture->id()); | 290 ResourceProvider::ScopedReadLockSoftware lock(m_resourceProvider, contentTex
ture->id()); |
296 | 291 |
297 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); | 292 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); |
298 | 293 |
299 const SkBitmap* content = lock.skBitmap(); | 294 const SkBitmap* content = lock.skBitmap(); |
300 | 295 |
301 SkRect contentRect; | 296 SkRect contentRect; |
302 content->getBounds(&contentRect); | 297 content->getBounds(&contentRect); |
303 | 298 |
304 SkMatrix contentMat; | 299 SkMatrix contentMat; |
305 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); | 300 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); |
306 | 301 |
307 skia::RefPtr<SkShader> shader = skia::AdoptRef( | 302 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
308 SkShader::CreateBitmapShader(*content, | 303 SkShader::CreateBitmapShader(*content, |
309 SkShader::kClamp_TileMode, | 304 SkShader::kClamp_TileMode, |
310 SkShader::kClamp_TileMode)); | 305 SkShader::kClamp_TileMode)); |
311 shader->setLocalMatrix(contentMat); | 306 shader->setLocalMatrix(contentMat); |
312 m_skCurrentPaint.setShader(shader.get()); | 307 m_skCurrentPaint.setShader(shader.get()); |
313 | 308 |
314 SkImageFilter* filter = renderPass->filter.get(); | 309 SkImageFilter* filter = quad->filter.get(); |
315 if (filter) | 310 if (filter) |
316 m_skCurrentPaint.setImageFilter(filter); | 311 m_skCurrentPaint.setImageFilter(filter); |
317 | 312 |
318 if (quad->mask_resource_id) { | 313 if (quad->mask_resource_id) { |
319 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); | 314 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); |
320 | 315 |
321 const SkBitmap* mask = maskLock.skBitmap(); | 316 const SkBitmap* mask = maskLock.skBitmap(); |
322 | 317 |
323 SkRect maskRect = SkRect::MakeXYWH( | 318 SkRect maskRect = SkRect::MakeXYWH( |
324 quad->mask_uv_rect.x() * mask->width(), | 319 quad->mask_uv_rect.x() * mask->width(), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 } | 370 } |
376 | 371 |
377 void SoftwareRenderer::setVisible(bool visible) | 372 void SoftwareRenderer::setVisible(bool visible) |
378 { | 373 { |
379 if (m_visible == visible) | 374 if (m_visible == visible) |
380 return; | 375 return; |
381 m_visible = visible; | 376 m_visible = visible; |
382 } | 377 } |
383 | 378 |
384 } // namespace cc | 379 } // namespace cc |
OLD | NEW |