| Index: experimental/PdfViewer/pdf_viewer_main.cpp | 
| =================================================================== | 
| --- experimental/PdfViewer/pdf_viewer_main.cpp	(revision 10588) | 
| +++ experimental/PdfViewer/pdf_viewer_main.cpp	(working copy) | 
| @@ -11,6 +11,12 @@ | 
| #include "SkTArray.h" | 
| #include "SkNulCanvas.h" | 
|  | 
| +#if SK_SUPPORT_GPU | 
| +#include "GrContextFactory.h" | 
| +#include "GrContext.h" | 
| +#include "SkGpuDevice.h" | 
| +#endif | 
| + | 
| #include "SkPdfRenderer.h" | 
|  | 
| DEFINE_string2(readPath, r, "", "pdf files or directories of pdf files to process."); | 
| @@ -29,8 +35,12 @@ | 
| "\tminimal parsing to ensure correctness. Default 0 (disabled)."); | 
| DEFINE_int32(benchRender, 0, "Render the pdf content N times. Default 0 (disabled)"); | 
| DEFINE_string2(config, c, "8888", "Canvas to render:\n" | 
| -                                  "\t8888 - all pages\n" | 
| -                                  "\tnul - all pages, in reverse order\n" | 
| +                                  "\t8888 - argb\n" | 
| + | 
| +#if SK_SUPPORT_GPU | 
| +                                  "\tgpu: use the gpu\n" | 
| +#endif | 
| +                                  "\tnul - render in null canvas, any draw will just return.\n" | 
| ); | 
|  | 
|  | 
| @@ -156,6 +166,10 @@ | 
| extern "C" SkBitmap* gDumpBitmap; | 
| extern "C" SkCanvas* gDumpCanvas; | 
|  | 
| +#if SK_SUPPORT_GPU | 
| +GrContextFactory gContextFactory; | 
| +#endif | 
| + | 
| static bool render_page(const SkString& outputDir, | 
| const SkString& inputFilename, | 
| const SkPdfRenderer& renderer, | 
| @@ -183,7 +197,36 @@ | 
| #else | 
| setup_bitmap(&bitmap, (int)SkScalarToDouble(width), (int)SkScalarToDouble(height)); | 
| #endif | 
| -        SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (bitmap))); | 
| +        SkAutoTUnref<SkDevice> device; | 
| +        if (strcmp(FLAGS_config[0], "8888") == 0) { | 
| +            device.reset(SkNEW_ARGS(SkDevice, (bitmap))); | 
| +        } | 
| +#if SK_SUPPORT_GPU | 
| +        else if (strcmp(FLAGS_config[0], "gpu") == 0) { | 
| +            SkAutoTUnref<GrSurface> target; | 
| +            GrContext* gr = gContextFactory.get(GrContextFactory::kNative_GLContextType); | 
| +            if (gr) { | 
| +                // create a render target to back the device | 
| +                GrTextureDesc desc; | 
| +                desc.fConfig = kSkia8888_GrPixelConfig; | 
| +                desc.fFlags = kRenderTarget_GrTextureFlagBit; | 
| +                desc.fWidth = width; | 
| +                desc.fHeight = height; | 
| +                desc.fSampleCnt = 0; | 
| +                target.reset(gr->createUncachedTexture(desc, NULL, 0)); | 
| +            } | 
| +            if (NULL == target.get()) { | 
| +                SkASSERT(0); | 
| +                return false; | 
| +            } | 
| + | 
| +            device.reset(SkGpuDevice::Create(target)); | 
| +        } | 
| +#endif | 
| +        else { | 
| +            SkDebugf("unknown --config: %s\n", FLAGS_config[0]); | 
| +            return false; | 
| +        } | 
| SkCanvas canvas(device); | 
|  | 
| gDumpBitmap = &bitmap; | 
|  |