Loading libs/hwui/Properties.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -178,7 +178,7 @@ ProfileType Properties::getProfileType() { } RenderPipelineType Properties::getRenderPipelineType() { if (RenderPipelineType::NotInitialized != sRenderPipelineType) { if (sRenderPipelineType != RenderPipelineType::NotInitialized) { return sRenderPipelineType; } char prop[PROPERTY_VALUE_MAX]; Loading @@ -196,11 +196,17 @@ RenderPipelineType Properties::getRenderPipelineType() { return sRenderPipelineType; } #ifdef HWUI_GLES_WRAP_ENABLED void Properties::overrideRenderPipelineType(RenderPipelineType type) { sRenderPipelineType = type; #if !defined(HWUI_GLES_WRAP_ENABLED) // If we're doing actual rendering then we can't change the renderer after it's been set. // Unit tests can freely change this as often as it wants, though, as there's no actual // GL rendering happening if (sRenderPipelineType != RenderPipelineType::NotInitialized) { return; } #endif sRenderPipelineType = type; } bool Properties::isSkiaEnabled() { auto renderType = getRenderPipelineType(); Loading libs/hwui/Properties.h +1 −3 Original line number Diff line number Diff line Loading @@ -256,9 +256,7 @@ public: static bool skpCaptureEnabled; // Used for testing only to change the render pipeline. #ifdef HWUI_GLES_WRAP_ENABLED static void overrideRenderPipelineType(RenderPipelineType); #endif private: static ProfileType sProfileType; Loading libs/hwui/tests/macrobench/main.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ OPTIONS: --onscreen Render tests on device screen. By default tests are offscreen rendered --benchmark_format Set output format. Possible values are tabular, json, csv --renderer=TYPE Sets the render pipeline to use. May be opengl, skiagl, or skiavk )"); } Loading Loading @@ -146,6 +147,20 @@ static bool setBenchmarkFormat(const char* format) { return true; } static bool setRenderer(const char* renderer) { if (!strcmp(renderer, "opengl")) { Properties::overrideRenderPipelineType(RenderPipelineType::OpenGL); } else if (!strcmp(renderer, "skiagl")) { Properties::overrideRenderPipelineType(RenderPipelineType::SkiaGL); } else if (!strcmp(renderer, "skiavk")) { Properties::overrideRenderPipelineType(RenderPipelineType::SkiaVulkan); } else { fprintf(stderr, "Unknown format '%s'", renderer); return false; } return true; } // For options that only exist in long-form. Anything in the // 0-255 range is reserved for short options (which just use their ASCII value) namespace LongOpts { Loading @@ -158,6 +173,7 @@ enum { BenchmarkFormat, Onscreen, Offscreen, Renderer, }; } Loading @@ -172,6 +188,7 @@ static const struct option LONG_OPTIONS[] = { {"benchmark_format", required_argument, nullptr, LongOpts::BenchmarkFormat}, {"onscreen", no_argument, nullptr, LongOpts::Onscreen}, {"offscreen", no_argument, nullptr, LongOpts::Offscreen}, {"renderer", required_argument, nullptr, LongOpts::Renderer}, {0, 0, 0, 0}}; static const char* SHORT_OPTIONS = "c:r:h"; Loading Loading @@ -252,6 +269,16 @@ void parseOptions(int argc, char* argv[]) { } break; case LongOpts::Renderer: if (!optarg) { error = true; break; } if (!setRenderer(optarg)) { error = true; } break; case LongOpts::Onscreen: gOpts.renderOffscreen = false; break; Loading Loading
libs/hwui/Properties.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -178,7 +178,7 @@ ProfileType Properties::getProfileType() { } RenderPipelineType Properties::getRenderPipelineType() { if (RenderPipelineType::NotInitialized != sRenderPipelineType) { if (sRenderPipelineType != RenderPipelineType::NotInitialized) { return sRenderPipelineType; } char prop[PROPERTY_VALUE_MAX]; Loading @@ -196,11 +196,17 @@ RenderPipelineType Properties::getRenderPipelineType() { return sRenderPipelineType; } #ifdef HWUI_GLES_WRAP_ENABLED void Properties::overrideRenderPipelineType(RenderPipelineType type) { sRenderPipelineType = type; #if !defined(HWUI_GLES_WRAP_ENABLED) // If we're doing actual rendering then we can't change the renderer after it's been set. // Unit tests can freely change this as often as it wants, though, as there's no actual // GL rendering happening if (sRenderPipelineType != RenderPipelineType::NotInitialized) { return; } #endif sRenderPipelineType = type; } bool Properties::isSkiaEnabled() { auto renderType = getRenderPipelineType(); Loading
libs/hwui/Properties.h +1 −3 Original line number Diff line number Diff line Loading @@ -256,9 +256,7 @@ public: static bool skpCaptureEnabled; // Used for testing only to change the render pipeline. #ifdef HWUI_GLES_WRAP_ENABLED static void overrideRenderPipelineType(RenderPipelineType); #endif private: static ProfileType sProfileType; Loading
libs/hwui/tests/macrobench/main.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ OPTIONS: --onscreen Render tests on device screen. By default tests are offscreen rendered --benchmark_format Set output format. Possible values are tabular, json, csv --renderer=TYPE Sets the render pipeline to use. May be opengl, skiagl, or skiavk )"); } Loading Loading @@ -146,6 +147,20 @@ static bool setBenchmarkFormat(const char* format) { return true; } static bool setRenderer(const char* renderer) { if (!strcmp(renderer, "opengl")) { Properties::overrideRenderPipelineType(RenderPipelineType::OpenGL); } else if (!strcmp(renderer, "skiagl")) { Properties::overrideRenderPipelineType(RenderPipelineType::SkiaGL); } else if (!strcmp(renderer, "skiavk")) { Properties::overrideRenderPipelineType(RenderPipelineType::SkiaVulkan); } else { fprintf(stderr, "Unknown format '%s'", renderer); return false; } return true; } // For options that only exist in long-form. Anything in the // 0-255 range is reserved for short options (which just use their ASCII value) namespace LongOpts { Loading @@ -158,6 +173,7 @@ enum { BenchmarkFormat, Onscreen, Offscreen, Renderer, }; } Loading @@ -172,6 +188,7 @@ static const struct option LONG_OPTIONS[] = { {"benchmark_format", required_argument, nullptr, LongOpts::BenchmarkFormat}, {"onscreen", no_argument, nullptr, LongOpts::Onscreen}, {"offscreen", no_argument, nullptr, LongOpts::Offscreen}, {"renderer", required_argument, nullptr, LongOpts::Renderer}, {0, 0, 0, 0}}; static const char* SHORT_OPTIONS = "c:r:h"; Loading Loading @@ -252,6 +269,16 @@ void parseOptions(int argc, char* argv[]) { } break; case LongOpts::Renderer: if (!optarg) { error = true; break; } if (!setRenderer(optarg)) { error = true; } break; case LongOpts::Onscreen: gOpts.renderOffscreen = false; break; Loading