| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "GrDrawTarget.h" | 9 #include "GrDrawTarget.h" |
| 10 | 10 |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 const SkMatrix& viewMatrix, | 302 const SkMatrix& viewMatrix, |
| 303 const SkRect& rect, | 303 const SkRect& rect, |
| 304 const SkRect& devRect) { | 304 const SkRect& devRect) { |
| 305 GrAARectRenderer::FillAARect(this, pipelineBuilder, color, viewMatrix, rect,
devRect); | 305 GrAARectRenderer::FillAARect(this, pipelineBuilder, color, viewMatrix, rect,
devRect); |
| 306 } | 306 } |
| 307 | 307 |
| 308 void GrDrawTarget::clear(const SkIRect* rect, | 308 void GrDrawTarget::clear(const SkIRect* rect, |
| 309 GrColor color, | 309 GrColor color, |
| 310 bool canIgnoreRect, | 310 bool canIgnoreRect, |
| 311 GrRenderTarget* renderTarget) { | 311 GrRenderTarget* renderTarget) { |
| 312 SkIRect rtRect = SkIRect::MakeWH(renderTarget->width(), renderTarget->height
()); |
| 313 SkIRect clippedRect; |
| 314 if (!rect || |
| 315 (canIgnoreRect && this->caps()->fullClearIsFree()) || |
| 316 rect->contains(rtRect)) { |
| 317 rect = &rtRect; |
| 318 } else { |
| 319 clippedRect = *rect; |
| 320 if (!clippedRect.intersect(rtRect)) { |
| 321 return; |
| 322 } |
| 323 rect = &clippedRect; |
| 324 } |
| 325 |
| 312 if (fCaps->useDrawInsteadOfClear()) { | 326 if (fCaps->useDrawInsteadOfClear()) { |
| 313 // This works around a driver bug with clear by drawing a rect instead. | 327 // This works around a driver bug with clear by drawing a rect instead. |
| 314 // The driver will ignore a clear if it is the only thing rendered to a | 328 // The driver will ignore a clear if it is the only thing rendered to a |
| 315 // target before the target is read. | 329 // target before the target is read. |
| 316 SkIRect rtRect = SkIRect::MakeWH(renderTarget->width(), renderTarget->he
ight()); | 330 if (rect == &rtRect) { |
| 317 if (NULL == rect || canIgnoreRect || rect->contains(rtRect)) { | |
| 318 rect = &rtRect; | |
| 319 // We first issue a discard() since that may help tilers. | |
| 320 this->discard(renderTarget); | 331 this->discard(renderTarget); |
| 321 } | 332 } |
| 322 | 333 |
| 323 GrPipelineBuilder pipelineBuilder; | 334 GrPipelineBuilder pipelineBuilder; |
| 324 pipelineBuilder.setRenderTarget(renderTarget); | 335 pipelineBuilder.setRenderTarget(renderTarget); |
| 325 | 336 |
| 326 this->drawSimpleRect(pipelineBuilder, color, SkMatrix::I(), *rect); | 337 this->drawSimpleRect(pipelineBuilder, color, SkMatrix::I(), *rect); |
| 327 } else { | 338 } else { |
| 328 this->onClear(rect, color, canIgnoreRect, renderTarget); | 339 this->onClear(*rect, color, renderTarget); |
| 329 } | 340 } |
| 330 } | 341 } |
| 331 | 342 |
| 332 typedef GrTraceMarkerSet::Iter TMIter; | 343 typedef GrTraceMarkerSet::Iter TMIter; |
| 333 void GrDrawTarget::saveActiveTraceMarkers() { | 344 void GrDrawTarget::saveActiveTraceMarkers() { |
| 334 if (this->caps()->gpuTracingSupport()) { | 345 if (this->caps()->gpuTracingSupport()) { |
| 335 SkASSERT(0 == fStoredTraceMarkers.count()); | 346 SkASSERT(0 == fStoredTraceMarkers.count()); |
| 336 fStoredTraceMarkers.addSet(fActiveTraceMarkers); | 347 fStoredTraceMarkers.addSet(fActiveTraceMarkers); |
| 337 for (TMIter iter = fStoredTraceMarkers.begin(); iter != fStoredTraceMark
ers.end(); ++iter) { | 348 for (TMIter iter = fStoredTraceMarkers.begin(); iter != fStoredTraceMark
ers.end(); ++iter) { |
| 338 this->removeGpuTraceMarker(&(*iter)); | 349 this->removeGpuTraceMarker(&(*iter)); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 ars, | 515 ars, |
| 505 scissorState, | 516 scissorState, |
| 506 devBounds); | 517 devBounds); |
| 507 } | 518 } |
| 508 | 519 |
| 509 void GrClipTarget::purgeResources() { | 520 void GrClipTarget::purgeResources() { |
| 510 // The clip mask manager can rebuild all its clip masks so just | 521 // The clip mask manager can rebuild all its clip masks so just |
| 511 // get rid of them all. | 522 // get rid of them all. |
| 512 fClipMaskManager->purgeResources(); | 523 fClipMaskManager->purgeResources(); |
| 513 }; | 524 }; |
| OLD | NEW |