Memory improvements to render_pdfs; better DM pool size defaults
authorhalcanary <halcanary@google.com>
Fri, 1 Aug 2014 16:25:11 +0000 (09:25 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 1 Aug 2014 16:25:11 +0000 (09:25 -0700)
Make SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE equal to
skia_resource_cache_mb_limit, if that value is >0 (true for some
low-memory Android devices).

render_pdfs test program uses lazy decoding (and the discardable
memory pool).

BUG=skia:2743
R=djsollen@google.com, mtklein@google.com

Author: halcanary@google.com

Review URL: https://codereview.chromium.org/433063002

gyp/common_conditions.gypi
gyp/tools.gyp
src/lazy/SkDiscardableMemoryPool.h
tools/render_pdfs_main.cpp

index 4fa1ba0..9884e1e 100644 (file)
@@ -6,6 +6,7 @@
     'SK_SUPPORT_GPU=<(skia_gpu)',
     'SK_SUPPORT_OPENCL=<(skia_opencl)',
     'SK_FORCE_DISTANCEFIELD_FONTS=<(skia_force_distancefield_fonts)',
+    'SK_DEFAULT_RESOURCE_CACHE_MB_LIMIT=<(skia_resource_cache_mb_limit)',
   ],
   'conditions' : [
     ['skia_pic', {
index e2e12bf..38996ad 100644 (file)
       'type': 'executable',
       'sources': [
         '../tools/render_pdfs_main.cpp',
+        '../tools/flags/SkCommandLineFlags.cpp',
+        '../tools/LazyDecodeBitmap.cpp',
         '../tools/PdfRenderer.cpp',
         '../tools/PdfRenderer.h',
       ],
       'include_dirs': [
+        '../src/core',
+        '../src/lazy',
         '../src/pipe/utils/',
         '../src/utils/',
+        '../tools/flags',
       ],
       'dependencies': [
         'pdf.gyp:pdf',
index d141507..57a14db 100644 (file)
@@ -62,7 +62,14 @@ public:
 SkDiscardableMemoryPool* SkGetGlobalDiscardableMemoryPool();
 
 #if !defined(SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE)
-#define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (128 * 1024 * 1024)
+    #if defined(SK_DEFAULT_RESOURCE_CACHE_MB_LIMIT) && \
+            SK_DEFAULT_RESOURCE_CACHE_MB_LIMIT > 0
+        #define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE \
+                (SK_DEFAULT_RESOURCE_CACHE_MB_LIMIT * 1024 * 1024)
+    #else
+        #define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE \
+                (128 * 1024 * 1024)
+    #endif
 #endif
 
 #endif  // SkDiscardableMemoryPool_DEFINED
index 6e1d609..5e87ec2 100644 (file)
@@ -17,6 +17,7 @@
 #include "SkTArray.h"
 #include "PdfRenderer.h"
 #include "picture_utils.h"
+#include "LazyDecodeBitmap.h"
 
 __SK_FORCE_IMAGE_DECODER_LINKING;
 
@@ -158,7 +159,9 @@ static bool render_pdf(const SkString& inputPath, const SkString& outputDir,
         return false;
     }
 
-    SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromStream(&inputStream));
+    SkAutoTUnref<SkPicture> picture(
+            SkPicture::CreateFromStream(
+                    &inputStream, &sk_tools::LazyDecodeBitmap));
 
     if (NULL == picture.get()) {
         SkDebugf("Could not read an SkPicture from %s\n", inputPath.c_str());