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

Side by Side Diff: src/gpu/GrContext.cpp

Issue 1321353002: Limit lifetime of GrDrawContext objects (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update to ToT Created 5 years, 3 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
OLDNEW
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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 } 118 }
119 119
120 const SkSurfaceProps props(SkSurfacePropsCopyOrDefault(surfaceProps)); 120 const SkSurfaceProps props(SkSurfacePropsCopyOrDefault(surfaceProps));
121 121
122 SkASSERT(props.pixelGeometry() < kNumPixelGeometries); 122 SkASSERT(props.pixelGeometry() < kNumPixelGeometries);
123 if (!fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependentFonts() ]) { 123 if (!fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependentFonts() ]) {
124 fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependentFonts()] = 124 fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependentFonts()] =
125 new GrDrawContext(fContext, fDrawTarget, props); 125 new GrDrawContext(fContext, fDrawTarget, props);
126 } 126 }
127 127
128 return fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependentFonts ()]; 128 // For now, everyone gets a faux creation ref
129 return SkRef(fDrawContext[props.pixelGeometry()][props.isUseDeviceIndependen tFonts()]);
129 } 130 }
130 131
131 //////////////////////////////////////////////////////////////////////////////// 132 ////////////////////////////////////////////////////////////////////////////////
132 133
133 134
134 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext) { 135 GrContext* GrContext::Create(GrBackend backend, GrBackendContext backendContext) {
135 GrContextOptions defaultOptions; 136 GrContextOptions defaultOptions;
136 return Create(backend, backendContext, defaultOptions); 137 return Create(backend, backendContext, defaultOptions);
137 } 138 }
138 139
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 buffer = tmpPixels.get(); 417 buffer = tmpPixels.get();
417 applyPremulToSrc = false; 418 applyPremulToSrc = false;
418 } 419 }
419 if (!fGpu->writePixels(tempTexture, 0, 0, width, height, 420 if (!fGpu->writePixels(tempTexture, 0, 0, width, height,
420 tempDrawInfo.fTempSurfaceDesc.fConfig, buffer , 421 tempDrawInfo.fTempSurfaceDesc.fConfig, buffer ,
421 rowBytes)) { 422 rowBytes)) {
422 return false; 423 return false;
423 } 424 }
424 SkMatrix matrix; 425 SkMatrix matrix;
425 matrix.setTranslate(SkIntToScalar(left), SkIntToScalar(top)); 426 matrix.setTranslate(SkIntToScalar(left), SkIntToScalar(top));
426 GrDrawContext* drawContext = this->drawContext(); 427 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext());
427 if (!drawContext) { 428 if (!drawContext) {
428 return false; 429 return false;
429 } 430 }
430 paint.addColorFragmentProcessor(fp); 431 paint.addColorFragmentProcessor(fp);
431 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(hei ght)); 432 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(hei ght));
432 drawContext->drawRect(renderTarget, GrClip::WideOpen(), paint, matri x, rect, nullptr); 433 drawContext->drawRect(renderTarget, GrClip::WideOpen(), paint, matri x, rect, nullptr);
433 434
434 if (kFlushWrites_PixelOp & pixelOpsFlags) { 435 if (kFlushWrites_PixelOp & pixelOpsFlags) {
435 this->flushSurfaceWrites(surface); 436 this->flushSurfaceWrites(surface);
436 } 437 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 } 528 }
528 } 529 }
529 if (!fp && temp) { 530 if (!fp && temp) {
530 fp.reset(GrConfigConversionEffect::Create( 531 fp.reset(GrConfigConversionEffect::Create(
531 paint.getProcessorDataManager(), src->asTexture(), tempDrawI nfo.fSwapRAndB, 532 paint.getProcessorDataManager(), src->asTexture(), tempDrawI nfo.fSwapRAndB,
532 GrConfigConversionEffect::kNone_PMConversion, textureMatrix) ); 533 GrConfigConversionEffect::kNone_PMConversion, textureMatrix) );
533 } 534 }
534 if (fp) { 535 if (fp) {
535 paint.addColorFragmentProcessor(fp); 536 paint.addColorFragmentProcessor(fp);
536 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar (height)); 537 SkRect rect = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar (height));
537 GrDrawContext* drawContext = this->drawContext(); 538 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext());
538 drawContext->drawRect(temp->asRenderTarget(), GrClip::WideOpen() , paint, 539 drawContext->drawRect(temp->asRenderTarget(), GrClip::WideOpen() , paint,
539 SkMatrix::I(), rect, nullptr); 540 SkMatrix::I(), rect, nullptr);
540 surfaceToRead.reset(SkRef(temp.get())); 541 surfaceToRead.reset(SkRef(temp.get()));
541 left = 0; 542 left = 0;
542 top = 0; 543 top = 0;
543 didTempDraw = true; 544 didTempDraw = true;
544 } 545 }
545 } 546 }
546 } 547 }
547 548
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 } 604 }
604 ASSERT_OWNED_RESOURCE(src); 605 ASSERT_OWNED_RESOURCE(src);
605 ASSERT_OWNED_RESOURCE(dst); 606 ASSERT_OWNED_RESOURCE(dst);
606 607
607 // Since we're going to the draw target and not GPU, no need to check kNoFlu sh 608 // Since we're going to the draw target and not GPU, no need to check kNoFlu sh
608 // here. 609 // here.
609 if (!dst->asRenderTarget()) { 610 if (!dst->asRenderTarget()) {
610 return; 611 return;
611 } 612 }
612 613
613 GrDrawContext* drawContext = this->drawContext(); 614 SkAutoTUnref<GrDrawContext> drawContext(this->drawContext());
614 if (!drawContext) { 615 if (!drawContext) {
615 return; 616 return;
616 } 617 }
617 618
618 drawContext->copySurface(dst->asRenderTarget(), src, srcRect, dstPoint); 619 drawContext->copySurface(dst->asRenderTarget(), src, srcRect, dstPoint);
619 620
620 if (kFlushWrites_PixelOp & pixelOpsFlags) { 621 if (kFlushWrites_PixelOp & pixelOpsFlags) {
621 this->flush(); 622 this->flush();
622 } 623 }
623 } 624 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 ////////////////////////////////////////////////////////////////////////////// 755 //////////////////////////////////////////////////////////////////////////////
755 756
756 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) { 757 void GrContext::addGpuTraceMarker(const GrGpuTraceMarker* marker) {
757 fGpu->addGpuTraceMarker(marker); 758 fGpu->addGpuTraceMarker(marker);
758 } 759 }
759 760
760 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) { 761 void GrContext::removeGpuTraceMarker(const GrGpuTraceMarker* marker) {
761 fGpu->removeGpuTraceMarker(marker); 762 fGpu->removeGpuTraceMarker(marker);
762 } 763 }
763 764
OLDNEW
« no previous file with comments | « src/gpu/GrBlurUtils.cpp ('k') | src/gpu/GrLayerCache.cpp » ('j') | src/gpu/GrRenderTarget.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698