Memory improvements to render_pdfs; better DM pool size defaults

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
This commit is contained in:
halcanary 2014-08-01 09:25:11 -07:00 committed by Commit bot
parent 6e33e232df
commit 66058b614d
4 changed files with 18 additions and 2 deletions

View 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', {

View File

@ -517,12 +517,17 @@
'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',

View 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

View 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());