| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 "GrContext.h" | 9 #include "GrContext.h" |
| 10 | 10 |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 | 145 |
| 146 GrDrawTarget* dt = new GrDrawTarget(fContext->getGpu(), fContext->resourcePr
ovider()); | 146 GrDrawTarget* dt = new GrDrawTarget(fContext->getGpu(), fContext->resourcePr
ovider()); |
| 147 | 147 |
| 148 *fDrawTargets.append() = dt; | 148 *fDrawTargets.append() = dt; |
| 149 | 149 |
| 150 // DrawingMgr gets the creation ref - this ref is for the caller | 150 // DrawingMgr gets the creation ref - this ref is for the caller |
| 151 return SkRef(dt); | 151 return SkRef(dt); |
| 152 } | 152 } |
| 153 | 153 |
| 154 GrDrawContext* GrContext::DrawingMgr::drawContext(GrRenderTarget* rt, | 154 GrDrawContext* GrContext::DrawingMgr::drawContext(GrRenderTarget* rt, |
| 155 const SkSurfaceProps* surfaceP
rops) { | 155 const SkSurfaceProps* surfaceP
rops) const { |
| 156 if (this->abandoned()) { | 156 if (this->abandoned()) { |
| 157 return nullptr; | 157 return nullptr; |
| 158 } | 158 } |
| 159 | 159 |
| 160 return new GrDrawContext(fContext, rt, surfaceProps); | 160 return new GrDrawContext(const_cast<DrawingMgr*>(this), rt, surfaceProps); |
| 161 } | 161 } |
| 162 | 162 |
| 163 //////////////////////////////////////////////////////////////////////////////// | 163 //////////////////////////////////////////////////////////////////////////////// |
| 164 | 164 |
| 165 | 165 |
| 166 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext)
{ | 166 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext)
{ |
| 167 GrContextOptions defaultOptions; | 167 GrContextOptions defaultOptions; |
| 168 return Create(backend, backendContext, defaultOptions); | 168 return Create(backend, backendContext, defaultOptions); |
| 169 } | 169 } |
| 170 | 170 |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 buffer = tmpPixels.get(); | 449 buffer = tmpPixels.get(); |
| 450 applyPremulToSrc = false; | 450 applyPremulToSrc = false; |
| 451 } | 451 } |
| 452 if (!fGpu->writePixels(tempTexture, 0, 0, width, height, | 452 if (!fGpu->writePixels(tempTexture, 0, 0, width, height, |
| 453 tempDrawInfo.fTempSurfaceDesc.fConfig, buffer
, | 453 tempDrawInfo.fTempSurfaceDesc.fConfig, buffer
, |
| 454 rowBytes)) { | 454 rowBytes)) { |
| 455 return false; | 455 return false; |
| 456 } | 456 } |
| 457 SkMatrix matrix; | 457 SkMatrix matrix; |
| 458 matrix.setTranslate(SkIntToScalar(left), SkIntToScalar(top)); | 458 matrix.setTranslate(SkIntToScalar(left), SkIntToScalar(top)); |
| 459 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext(renderTarg
et)); | 459 SkAutoTUnref<GrDrawContext> drawContext(fDrawingMgr.drawContext(rend
erTarget)); |
| 460 if (!drawContext) { | 460 if (!drawContext) { |
| 461 return false; | 461 return false; |
| 462 } | 462 } |
| 463 paint.addColorFragmentProcessor(fp); | 463 paint.addColorFragmentProcessor(fp); |
| 464 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(hei
ght)); | 464 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(hei
ght)); |
| 465 drawContext->drawRect(GrClip::WideOpen(), paint, matrix, rect, nullp
tr); | 465 drawContext->drawRect(GrClip::WideOpen(), paint, matrix, rect, nullp
tr); |
| 466 | 466 |
| 467 if (kFlushWrites_PixelOp & pixelOpsFlags) { | 467 if (kFlushWrites_PixelOp & pixelOpsFlags) { |
| 468 this->flushSurfaceWrites(surface); | 468 this->flushSurfaceWrites(surface); |
| 469 } | 469 } |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 temp.reset(nullptr); | 561 temp.reset(nullptr); |
| 562 } | 562 } |
| 563 } | 563 } |
| 564 if (!fp && temp) { | 564 if (!fp && temp) { |
| 565 fp.reset(GrConfigConversionEffect::Create(src->asTexture(), temp
DrawInfo.fSwapRAndB, | 565 fp.reset(GrConfigConversionEffect::Create(src->asTexture(), temp
DrawInfo.fSwapRAndB, |
| 566 GrConfigConversionEffect::kNone_PMConversion, textureMatrix)
); | 566 GrConfigConversionEffect::kNone_PMConversion, textureMatrix)
); |
| 567 } | 567 } |
| 568 if (fp) { | 568 if (fp) { |
| 569 paint.addColorFragmentProcessor(fp); | 569 paint.addColorFragmentProcessor(fp); |
| 570 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar
(height)); | 570 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar
(height)); |
| 571 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext(temp->
asRenderTarget())); | 571 SkAutoTUnref<GrDrawContext> drawContext( |
| 572 fDrawingMgr.drawContext(temp->as
RenderTarget())); |
| 572 drawContext->drawRect(GrClip::WideOpen(), paint, SkMatrix::I(),
rect, nullptr); | 573 drawContext->drawRect(GrClip::WideOpen(), paint, SkMatrix::I(),
rect, nullptr); |
| 573 surfaceToRead.reset(SkRef(temp.get())); | 574 surfaceToRead.reset(SkRef(temp.get())); |
| 574 left = 0; | 575 left = 0; |
| 575 top = 0; | 576 top = 0; |
| 576 didTempDraw = true; | 577 didTempDraw = true; |
| 577 } | 578 } |
| 578 } | 579 } |
| 579 } | 580 } |
| 580 | 581 |
| 581 if (GrGpu::kRequireDraw_DrawPreference == drawPreference && !didTempDraw) { | 582 if (GrGpu::kRequireDraw_DrawPreference == drawPreference && !didTempDraw) { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 } | 637 } |
| 637 ASSERT_OWNED_RESOURCE(src); | 638 ASSERT_OWNED_RESOURCE(src); |
| 638 ASSERT_OWNED_RESOURCE(dst); | 639 ASSERT_OWNED_RESOURCE(dst); |
| 639 | 640 |
| 640 // Since we're going to the draw target and not GPU, no need to check kNoFlu
sh | 641 // Since we're going to the draw target and not GPU, no need to check kNoFlu
sh |
| 641 // here. | 642 // here. |
| 642 if (!dst->asRenderTarget()) { | 643 if (!dst->asRenderTarget()) { |
| 643 return; | 644 return; |
| 644 } | 645 } |
| 645 | 646 |
| 646 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext(dst->asRenderTarge
t())); | 647 SkAutoTUnref<GrDrawContext> drawContext(fDrawingMgr.drawContext(dst->asRende
rTarget())); |
| 647 if (!drawContext) { | 648 if (!drawContext) { |
| 648 return; | 649 return; |
| 649 } | 650 } |
| 650 | 651 |
| 651 drawContext->copySurface(src, srcRect, dstPoint); | 652 drawContext->copySurface(src, srcRect, dstPoint); |
| 652 | 653 |
| 653 if (kFlushWrites_PixelOp & pixelOpsFlags) { | 654 if (kFlushWrites_PixelOp & pixelOpsFlags) { |
| 654 this->flush(); | 655 this->flush(); |
| 655 } | 656 } |
| 656 } | 657 } |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 | 786 |
| 786 void GrContext::setResourceCacheLimits(int maxTextures, size_t maxTextureBytes)
{ | 787 void GrContext::setResourceCacheLimits(int maxTextures, size_t maxTextureBytes)
{ |
| 787 fResourceCache->setLimits(maxTextures, maxTextureBytes); | 788 fResourceCache->setLimits(maxTextures, maxTextureBytes); |
| 788 } | 789 } |
| 789 | 790 |
| 790 ////////////////////////////////////////////////////////////////////////////// | 791 ////////////////////////////////////////////////////////////////////////////// |
| 791 | 792 |
| 792 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const { | 793 void GrContext::dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const { |
| 793 fResourceCache->dumpMemoryStatistics(traceMemoryDump); | 794 fResourceCache->dumpMemoryStatistics(traceMemoryDump); |
| 794 } | 795 } |
| OLD | NEW |