From ecf3dbe8f2987a08b21be1aff61b7fbfbb69640a Mon Sep 17 00:00:00 2001 From: robertphillips Date: Thu, 28 Jul 2016 15:17:34 -0700 Subject: Remove use of MakeRenderTargetDirect from view system Here is the CL that sent me down the SkGammaColorFilter path GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2178353005 Review-Url: https://codereview.chromium.org/2178353005 --- example/HelloWorld.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'example/HelloWorld.cpp') diff --git a/example/HelloWorld.cpp b/example/HelloWorld.cpp index 32bee5dccd..5239311c85 100644 --- a/example/HelloWorld.cpp +++ b/example/HelloWorld.cpp @@ -29,7 +29,6 @@ void application_term() { HelloWorldWindow::HelloWorldWindow(void* hwnd) : INHERITED(hwnd) { fType = kGPU_DeviceType; - fRenderTarget = NULL; fRotationAngle = 0; this->setTitle(); this->setUpBackend(); @@ -46,8 +45,7 @@ void HelloWorldWindow::tearDownBackend() { SkSafeUnref(fInterface); fInterface = NULL; - SkSafeUnref(fRenderTarget); - fRenderTarget = NULL; + fGpuSurface = nullptr; INHERITED::release(); } @@ -70,19 +68,17 @@ bool HelloWorldWindow::setUpBackend() { } fInterface = GrGLCreateNativeInterface(); - SkASSERT(NULL != fInterface); fContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext)fInterface); SkASSERT(NULL != fContext); - this->setUpRenderTarget(); + this->setUpGpuBackedSurface(); return true; } -void HelloWorldWindow::setUpRenderTarget() { - SkSafeUnref(fRenderTarget); - fRenderTarget = this->renderTarget(fAttachmentInfo, fInterface, fContext); +void HelloWorldWindow::setUpGpuBackedSurface() { + fGpuSurface = this->makeGpuBackedSurface(fAttachmentInfo, fInterface, fContext); } void HelloWorldWindow::drawContents(SkCanvas* canvas) { @@ -142,7 +138,7 @@ void HelloWorldWindow::drawContents(SkCanvas* canvas) { } void HelloWorldWindow::draw(SkCanvas* canvas) { - drawContents(canvas); + this->drawContents(canvas); // in case we have queued drawing calls fContext->flush(); // Invalidate the window to force a redraw. Poor man's animation mechanism. @@ -150,21 +146,22 @@ void HelloWorldWindow::draw(SkCanvas* canvas) { if (kRaster_DeviceType == fType) { // need to send the raster bits to the (gpu) window - sk_sp snap = fSurface->makeImageSnapshot(); + sk_sp snap = fRasterSurface->makeImageSnapshot(); SkPixmap pmap; if (snap->peekPixels(&pmap)) { const SkImageInfo& info = pmap.info(); - fRenderTarget->writePixels(0, 0, snap->width(), snap->height(), - SkImageInfo2GrPixelConfig(info, *fContext->caps()), - pmap.addr(), pmap.rowBytes(), - GrContext::kFlushWrites_PixelOp); + + SkCanvas* canvas = fGpuSurface->getCanvas(); + + canvas->writePixels(info, pmap.addr(), pmap.rowBytes(), 0, 0); + canvas->flush(); } } INHERITED::present(); } void HelloWorldWindow::onSizeChange() { - setUpRenderTarget(); + this->setUpGpuBackedSurface(); } bool HelloWorldWindow::onHandleChar(SkUnichar unichar) { -- cgit v1.2.3