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

Side by Side Diff: samplecode/SampleApp.cpp

Issue 1269093002: remove SkDeferredCanvas (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « samplecode/SampleApp.h ('k') | src/core/SkPictureRecord.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SampleApp.h" 8 #include "SampleApp.h"
9 9
10 #include "OverView.h" 10 #include "OverView.h"
11 #include "Resources.h" 11 #include "Resources.h"
12 #include "SampleCode.h" 12 #include "SampleCode.h"
13 #include "SamplePipeControllers.h" 13 #include "SamplePipeControllers.h"
14 #include "SkAnimTimer.h" 14 #include "SkAnimTimer.h"
15 #include "SkCanvas.h" 15 #include "SkCanvas.h"
16 #include "SkCommandLineFlags.h" 16 #include "SkCommandLineFlags.h"
17 #include "SkData.h" 17 #include "SkData.h"
18 #include "SkDeferredCanvas.h"
19 #include "SkDevice.h" 18 #include "SkDevice.h"
20 #include "SkDocument.h" 19 #include "SkDocument.h"
21 #include "SkGPipe.h" 20 #include "SkGPipe.h"
22 #include "SkGraphics.h" 21 #include "SkGraphics.h"
23 #include "SkImageEncoder.h" 22 #include "SkImageEncoder.h"
24 #include "SkOSFile.h" 23 #include "SkOSFile.h"
25 #include "SkPaint.h" 24 #include "SkPaint.h"
26 #include "SkPaintFilterCanvas.h" 25 #include "SkPaintFilterCanvas.h"
27 #include "SkPicture.h" 26 #include "SkPicture.h"
28 #include "SkPictureRecorder.h" 27 #include "SkPictureRecorder.h"
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 180
182 void setUpBackend(SampleWindow* win, int msaaSampleCount) override { 181 void setUpBackend(SampleWindow* win, int msaaSampleCount) override {
183 SkASSERT(kNone_BackEndType == fBackend); 182 SkASSERT(kNone_BackEndType == fBackend);
184 183
185 fBackend = kNone_BackEndType; 184 fBackend = kNone_BackEndType;
186 185
187 #if SK_SUPPORT_GPU 186 #if SK_SUPPORT_GPU
188 switch (win->getDeviceType()) { 187 switch (win->getDeviceType()) {
189 case kRaster_DeviceType: // fallthrough 188 case kRaster_DeviceType: // fallthrough
190 case kPicture_DeviceType: // fallthrough 189 case kPicture_DeviceType: // fallthrough
191 case kDeferred_DeviceType: // fallthrough
192 case kGPU_DeviceType: 190 case kGPU_DeviceType:
193 // all these guys use the native backend 191 // all these guys use the native backend
194 fBackend = kNativeGL_BackEndType; 192 fBackend = kNativeGL_BackEndType;
195 break; 193 break;
196 #if SK_ANGLE 194 #if SK_ANGLE
197 case kANGLE_DeviceType: 195 case kANGLE_DeviceType:
198 // ANGLE is really the only odd man out 196 // ANGLE is really the only odd man out
199 fBackend = kANGLE_BackEndType; 197 fBackend = kANGLE_BackEndType;
200 break; 198 break;
201 #endif // SK_ANGLE 199 #endif // SK_ANGLE
202 default: 200 default:
203 SkASSERT(false); 201 SkASSERT(false);
204 break; 202 break;
205 } 203 }
206 AttachmentInfo attachmentInfo; 204 AttachmentInfo attachmentInfo;
207 bool result = win->attach(fBackend, msaaSampleCount, &attachmentInfo); 205 bool result = win->attach(fBackend, msaaSampleCount, &attachmentInfo);
208 if (!result) { 206 if (!result) {
209 SkDebugf("Failed to initialize GL"); 207 SkDebugf("Failed to initialize GL");
210 return; 208 return;
211 } 209 }
212 fMSAASampleCount = msaaSampleCount; 210 fMSAASampleCount = msaaSampleCount;
213 211
214 SkASSERT(NULL == fCurIntf); 212 SkASSERT(NULL == fCurIntf);
215 SkAutoTUnref<const GrGLInterface> glInterface; 213 SkAutoTUnref<const GrGLInterface> glInterface;
216 switch (win->getDeviceType()) { 214 switch (win->getDeviceType()) {
217 case kRaster_DeviceType: // fallthrough 215 case kRaster_DeviceType: // fallthrough
218 case kPicture_DeviceType: // fallthrough 216 case kPicture_DeviceType: // fallthrough
219 case kDeferred_DeviceType: // fallthrough
220 case kGPU_DeviceType: 217 case kGPU_DeviceType:
221 // all these guys use the native interface 218 // all these guys use the native interface
222 glInterface.reset(GrGLCreateNativeInterface()); 219 glInterface.reset(GrGLCreateNativeInterface());
223 break; 220 break;
224 #if SK_ANGLE 221 #if SK_ANGLE
225 case kANGLE_DeviceType: 222 case kANGLE_DeviceType:
226 glInterface.reset(GrGLCreateANGLEInterface()); 223 glInterface.reset(GrGLCreateANGLEInterface());
227 break; 224 break;
228 #endif // SK_ANGLE 225 #endif // SK_ANGLE
229 default: 226 default:
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 664
668 static inline SampleWindow::DeviceType cycle_devicetype(SampleWindow::DeviceType ct) { 665 static inline SampleWindow::DeviceType cycle_devicetype(SampleWindow::DeviceType ct) {
669 static const SampleWindow::DeviceType gCT[] = { 666 static const SampleWindow::DeviceType gCT[] = {
670 SampleWindow::kPicture_DeviceType, 667 SampleWindow::kPicture_DeviceType,
671 #if SK_SUPPORT_GPU 668 #if SK_SUPPORT_GPU
672 SampleWindow::kGPU_DeviceType, 669 SampleWindow::kGPU_DeviceType,
673 #if SK_ANGLE 670 #if SK_ANGLE
674 SampleWindow::kANGLE_DeviceType, 671 SampleWindow::kANGLE_DeviceType,
675 #endif // SK_ANGLE 672 #endif // SK_ANGLE
676 #endif // SK_SUPPORT_GPU 673 #endif // SK_SUPPORT_GPU
677 SampleWindow::kDeferred_DeviceType,
678 SampleWindow::kRaster_DeviceType, 674 SampleWindow::kRaster_DeviceType,
679 }; 675 };
680 SK_COMPILE_ASSERT(SK_ARRAY_COUNT(gCT) == SampleWindow::kDeviceTypeCnt, array _size_mismatch); 676 SK_COMPILE_ASSERT(SK_ARRAY_COUNT(gCT) == SampleWindow::kDeviceTypeCnt, array _size_mismatch);
681 return gCT[ct]; 677 return gCT[ct];
682 } 678 }
683 679
684 static SkString getSampleTitle(const SkViewFactory* sampleFactory) { 680 static SkString getSampleTitle(const SkViewFactory* sampleFactory) {
685 SkView* view = (*sampleFactory)(); 681 SkView* view = (*sampleFactory)();
686 SkString title; 682 SkString title;
687 SampleCode::RequestTitle(view, &title); 683 SampleCode::RequestTitle(view, &title);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 819
824 fSaveToPdf = false; 820 fSaveToPdf = false;
825 fSaveToSKP = false; 821 fSaveToSKP = false;
826 822
827 int sinkID = this->getSinkID(); 823 int sinkID = this->getSinkID();
828 fAppMenu = new SkOSMenu; 824 fAppMenu = new SkOSMenu;
829 fAppMenu->setTitle("Global Settings"); 825 fAppMenu->setTitle("Global Settings");
830 int itemID; 826 int itemID;
831 827
832 itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0, 828 itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0,
833 "Raster", "Picture", "OpenGL", "Deferred", 829 "Raster", "Picture", "OpenGL",
834 #if SK_ANGLE 830 #if SK_ANGLE
835 "ANGLE", 831 "ANGLE",
836 #endif 832 #endif
837 NULL); 833 NULL);
838 fAppMenu->assignKeyEquivalentToItem(itemID, 'd'); 834 fAppMenu->assignKeyEquivalentToItem(itemID, 'd');
839 itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState); 835 itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState);
840 fAppMenu->assignKeyEquivalentToItem(itemID, 'b'); 836 fAppMenu->assignKeyEquivalentToItem(itemID, 'b');
841 itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState); 837 itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState);
842 fAppMenu->assignKeyEquivalentToItem(itemID, 'l'); 838 fAppMenu->assignKeyEquivalentToItem(itemID, 'l');
843 itemID = fAppMenu->appendList("FilterQuality", "FilterQuality", sinkID, fFil terQualityIndex, 839 itemID = fAppMenu->appendList("FilterQuality", "FilterQuality", sinkID, fFil terQualityIndex,
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1257 name.set("unknown_sample"); 1253 name.set("unknown_sample");
1258 } 1254 }
1259 name.append(".pdf"); 1255 name.append(".pdf");
1260 #ifdef SK_BUILD_FOR_ANDROID 1256 #ifdef SK_BUILD_FOR_ANDROID
1261 name.prepend("/sdcard/"); 1257 name.prepend("/sdcard/");
1262 #endif 1258 #endif
1263 fPDFDocument.reset(SkDocument::CreatePDF(name.c_str())); 1259 fPDFDocument.reset(SkDocument::CreatePDF(name.c_str()));
1264 canvas = fPDFDocument->beginPage(this->width(), this->height()); 1260 canvas = fPDFDocument->beginPage(this->width(), this->height());
1265 } else if (kPicture_DeviceType == fDeviceType) { 1261 } else if (kPicture_DeviceType == fDeviceType) {
1266 canvas = fRecorder.beginRecording(9999, 9999, NULL, 0); 1262 canvas = fRecorder.beginRecording(9999, 9999, NULL, 0);
1267 } else if (kDeferred_DeviceType == fDeviceType) {
1268 fDeferredSurface.reset(canvas->newSurface(canvas->imageInfo()));
1269 if (fDeferredSurface.get()) {
1270 fDeferredCanvas.reset(SkDeferredCanvas::Create(fDeferredSurface));
1271 canvas = fDeferredCanvas;
1272 }
1273 } else { 1263 } else {
1274 canvas = this->INHERITED::beforeChildren(canvas); 1264 canvas = this->INHERITED::beforeChildren(canvas);
1275 } 1265 }
1276 1266
1277 if (fUseClip) { 1267 if (fUseClip) {
1278 canvas->drawColor(0xFFFF88FF); 1268 canvas->drawColor(0xFFFF88FF);
1279 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true); 1269 canvas->clipPath(fClipPath, SkRegion::kIntersect_Op, true);
1280 } 1270 }
1281 1271
1282 // Install a flags filter proxy canvas if needed 1272 // Install a flags filter proxy canvas if needed
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 1359
1370 SkAutoDataUnref data(ostream.copyToData()); 1360 SkAutoDataUnref data(ostream.copyToData());
1371 SkMemoryStream istream(data->data(), data->size()); 1361 SkMemoryStream istream(data->data(), data->size());
1372 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream)); 1362 SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream));
1373 if (pict.get() != NULL) { 1363 if (pict.get() != NULL) {
1374 orig->drawPicture(pict.get()); 1364 orig->drawPicture(pict.get());
1375 } 1365 }
1376 } else { 1366 } else {
1377 picture->playback(orig); 1367 picture->playback(orig);
1378 } 1368 }
1379 } else if (kDeferred_DeviceType == fDeviceType) {
1380 SkAutoTUnref<SkImage> image(fDeferredCanvas->newImageSnapshot());
1381 if (image) {
1382 orig->drawImage(image, 0, 0, NULL);
1383 }
1384 fDeferredCanvas.reset(NULL);
1385 fDeferredSurface.reset(NULL);
1386 } 1369 }
1387 1370
1388 // Do this after presentGL and other finishing, rather than in afterChild 1371 // Do this after presentGL and other finishing, rather than in afterChild
1389 if (fMeasureFPS) { 1372 if (fMeasureFPS) {
1390 fTimer.end(); 1373 fTimer.end();
1391 fMeasureFPS_Time += fTimer.fWall; 1374 fMeasureFPS_Time += fTimer.fWall;
1392 } 1375 }
1393 } 1376 }
1394 1377
1395 void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) { 1378 void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) {
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
1942 1925
1943 static const char* gDeviceTypePrefix[] = { 1926 static const char* gDeviceTypePrefix[] = {
1944 "raster: ", 1927 "raster: ",
1945 "picture: ", 1928 "picture: ",
1946 #if SK_SUPPORT_GPU 1929 #if SK_SUPPORT_GPU
1947 "opengl: ", 1930 "opengl: ",
1948 #if SK_ANGLE 1931 #if SK_ANGLE
1949 "angle: ", 1932 "angle: ",
1950 #endif // SK_ANGLE 1933 #endif // SK_ANGLE
1951 #endif // SK_SUPPORT_GPU 1934 #endif // SK_SUPPORT_GPU
1952 "deferred: ",
1953 }; 1935 };
1954 SK_COMPILE_ASSERT(SK_ARRAY_COUNT(gDeviceTypePrefix) == SampleWindow::kDeviceType Cnt, 1936 SK_COMPILE_ASSERT(SK_ARRAY_COUNT(gDeviceTypePrefix) == SampleWindow::kDeviceType Cnt,
1955 array_size_mismatch); 1937 array_size_mismatch);
1956 1938
1957 static const char* trystate_str(SkOSMenu::TriState state, 1939 static const char* trystate_str(SkOSMenu::TriState state,
1958 const char trueStr[], const char falseStr[]) { 1940 const char trueStr[], const char falseStr[]) {
1959 if (SkOSMenu::kOnState == state) { 1941 if (SkOSMenu::kOnState == state) {
1960 return trueStr; 1942 return trueStr;
1961 } else if (SkOSMenu::kOffState == state) { 1943 } else if (SkOSMenu::kOffState == state) {
1962 return falseStr; 1944 return falseStr;
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
2377 setenv("ANDROID_ROOT", "/android/device/data", 0); 2359 setenv("ANDROID_ROOT", "/android/device/data", 0);
2378 #endif 2360 #endif
2379 SkGraphics::Init(); 2361 SkGraphics::Init();
2380 SkEvent::Init(); 2362 SkEvent::Init();
2381 } 2363 }
2382 2364
2383 void application_term() { 2365 void application_term() {
2384 SkEvent::Term(); 2366 SkEvent::Term();
2385 SkGraphics::Term(); 2367 SkGraphics::Term();
2386 } 2368 }
OLDNEW
« no previous file with comments | « samplecode/SampleApp.h ('k') | src/core/SkPictureRecord.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698