From 559f534759f616f1d9a173e0045acead5ee4cae1 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Thu, 17 Aug 2017 12:34:54 -0400 Subject: Add atrace events for bitmap uploads to Android framework builds. Change-Id: I736d82ab4ab66860a03f839bedc4f7614d38c6e6 Reviewed-on: https://skia-review.googlesource.com/35840 Reviewed-by: Brian Osman Commit-Queue: Derek Sollenberger --- src/core/SkATrace.h | 31 ------------------------------- src/core/SkTraceEventCommon.h | 36 +++++++++++++++++++++++++++--------- src/gpu/SkGr.cpp | 3 +++ 3 files changed, 30 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/core/SkATrace.h b/src/core/SkATrace.h index ad2c8a52cf..12e4bfaad2 100644 --- a/src/core/SkATrace.h +++ b/src/core/SkATrace.h @@ -50,35 +50,4 @@ private: bool (*fIsEnabled)(void); }; - -#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK - - #include - #define ATRACE_ANDROID_FRAMEWORK(fmt, ...) SkAndroidTraceUtil __trace = \ - (SkAndroidTraceUtil::atraceFormatBegin(fmt, ##__VA_ARGS__), SkAndroidTraceUtil()) - - class SkAndroidTraceUtil { - public: - ~SkAndroidTraceUtil() { ATRACE_END(); } - - static void atraceFormatBegin(const char* fmt, ...) { - if (CC_LIKELY(!ATRACE_ENABLED())) return; - - const int BUFFER_SIZE = 256; - va_list ap; - char buf[BUFFER_SIZE]; - - va_start(ap, fmt); - vsnprintf(buf, BUFFER_SIZE, fmt, ap); - va_end(ap); - - ATRACE_BEGIN(buf); - } - }; - -#else - #define ATRACE_ANDROID_FRAMEWORK(fmt, ...) -#endif // SK_BUILD_FOR_ANDROID_FRAMEWORK - #endif - diff --git a/src/core/SkTraceEventCommon.h b/src/core/SkTraceEventCommon.h index 92777264eb..35368f5eb2 100644 --- a/src/core/SkTraceEventCommon.h +++ b/src/core/SkTraceEventCommon.h @@ -54,26 +54,42 @@ #error "Another copy of this file has already been included." #endif -#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK - -// If profiling Skia within the Android framework, setting this to 1 will route all Skia -// tracing events to ATrace. -#ifndef SK_TRACE_EVENTS_IN_FRAMEWORK -#define SK_TRACE_EVENTS_IN_FRAMEWORK 0 -#endif - #define TRACE_EMPTY do {} while (0) -#if SK_TRACE_EVENTS_IN_FRAMEWORK +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK #include struct SkAndroidFrameworkTraceUtil { + SkAndroidFrameworkTraceUtil(const char* name) { ATRACE_BEGIN(name); } + SkAndroidFrameworkTraceUtil(bool, const char* fmt, ...) { + if (CC_LIKELY(!ATRACE_ENABLED())) return; + + const int BUFFER_SIZE = 256; + va_list ap; + char buf[BUFFER_SIZE]; + + va_start(ap, fmt); + vsnprintf(buf, BUFFER_SIZE, fmt, ap); + va_end(ap); + + ATRACE_BEGIN(buf); + } ~SkAndroidFrameworkTraceUtil() { ATRACE_END(); } }; +#define ATRACE_ANDROID_FRAMEWORK(fmt, ...) SkAndroidFrameworkTraceUtil __trace(true, fmt, ##__VA_ARGS__) + +// If profiling Skia within the Android framework, setting this to 1 will route all Skia +// tracing events to ATrace. +#ifndef SK_TRACE_EVENTS_IN_FRAMEWORK +#define SK_TRACE_EVENTS_IN_FRAMEWORK 0 +#endif + +#if SK_TRACE_EVENTS_IN_FRAMEWORK + // Records a pair of begin and end events called "name" for the current scope, with 0, 1 or 2 // associated arguments. In the framework, the arguments are ignored. #define TRACE_EVENT0(category_group, name) \ @@ -135,6 +151,8 @@ struct SkAndroidFrameworkTraceUtil { #else // !SK_BUILD_FOR_ANDROID_FRAMEWORK +#define ATRACE_ANDROID_FRAMEWORK(fmt, ...) TRACE_EMPTY + // Records a pair of begin and end events called "name" for the current scope, with 0, 1 or 2 // associated arguments. If the category is not enabled, then this does nothing. #define TRACE_EVENT0(category_group, name) \ diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index c1fb2623b6..737d299d67 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -33,6 +33,7 @@ #include "SkResourceCache.h" #include "SkShaderBase.h" #include "SkTemplates.h" +#include "SkTraceEvent.h" #include "effects/GrBicubicEffect.h" #include "effects/GrConstColorProcessor.h" #include "effects/GrDitherEffect.h" @@ -135,6 +136,7 @@ sk_sp GrUploadPixmapToTextureProxy(GrResourceProvider* resourceP SkPixmap tmpPixmap; GrSurfaceDesc desc; + ATRACE_ANDROID_FRAMEWORK("Upload Texture [%ux%u]", pixmap.width(), pixmap.height()); if (const SkPixmap* pmap = compute_desc(*resourceProvider->caps(), pixmap, &desc, &tmpBitmap, &tmpPixmap)) { return GrSurfaceProxy::MakeDeferred(resourceProvider, desc, @@ -177,6 +179,7 @@ sk_sp GrGenerateMipMapsAndUploadToTextureProxy(GrContext* ctx, return nullptr; } + ATRACE_ANDROID_FRAMEWORK("Upload MipMap Texture [%ux%u]", pixmap.width(), pixmap.height()); std::unique_ptr mipmaps(SkMipMap::Build(pixmap, colorMode, nullptr)); if (!mipmaps) { return nullptr; -- cgit v1.2.3