Bug: 135133301 Test: CtsGraphicsTestCases ImageDecoderTest Make the native ImageDecoder a class, with methods that do the bulk of the work that was previously done in JNI. This will allow the forthcoming NDK API (AImageDecoder) to share the same code for decoding. Move enums into implementation file, as no other code needs them. Make computeAllocationSize a public static method on hwui/Bitmap, for use by ImageDecoder. Change-Id: I4e4dae338a951761614aed42ca2cc157e3d526dd
405 lines
10 KiB
Plaintext
405 lines
10 KiB
Plaintext
cc_defaults {
|
|
name: "hwui_defaults",
|
|
defaults: [
|
|
"hwui_static_deps",
|
|
"skia_deps",
|
|
//"hwui_bugreport_font_cache_usage",
|
|
//"hwui_compile_for_perf",
|
|
"hwui_pgo",
|
|
"hwui_lto",
|
|
],
|
|
|
|
cpp_std: "experimental",
|
|
|
|
cflags: [
|
|
"-DEGL_EGLEXT_PROTOTYPES",
|
|
"-DGL_GLEXT_PROTOTYPES",
|
|
"-DATRACE_TAG=ATRACE_TAG_VIEW",
|
|
"-DLOG_TAG=\"OpenGLRenderer\"",
|
|
"-Wall",
|
|
"-Wno-unused-parameter",
|
|
"-Wunreachable-code",
|
|
"-Werror",
|
|
"-fvisibility=hidden",
|
|
|
|
// GCC false-positives on this warning, and since we -Werror that's
|
|
// a problem
|
|
"-Wno-free-nonheap-object",
|
|
|
|
// Clang is producing non-determistic binary when the new pass manager is
|
|
// enabled. Disable the new PM as a temporary workaround.
|
|
// b/142372146
|
|
"-fno-experimental-new-pass-manager",
|
|
],
|
|
|
|
include_dirs: [
|
|
"external/skia/include/private",
|
|
"external/skia/src/core",
|
|
],
|
|
|
|
product_variables: {
|
|
eng: {
|
|
lto: {
|
|
never: true,
|
|
},
|
|
},
|
|
},
|
|
|
|
target: {
|
|
android: {
|
|
include_dirs: [
|
|
"external/skia/src/effects",
|
|
"external/skia/src/image",
|
|
"external/skia/src/utils",
|
|
"external/skia/src/gpu",
|
|
"external/skia/src/shaders",
|
|
],
|
|
},
|
|
host: {
|
|
include_dirs: [
|
|
"external/vulkan-headers/include",
|
|
"frameworks/native/libs/math/include",
|
|
"frameworks/native/libs/ui/include",
|
|
],
|
|
cflags: [
|
|
"-Wno-unused-variable",
|
|
],
|
|
}
|
|
}
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "hwui_static_deps",
|
|
shared_libs: [
|
|
"libbase",
|
|
"libharfbuzz_ng",
|
|
"libminikin",
|
|
],
|
|
|
|
target: {
|
|
android: {
|
|
shared_libs: [
|
|
"liblog",
|
|
"libcutils",
|
|
"libstatslog",
|
|
"libutils",
|
|
"libEGL",
|
|
"libGLESv1_CM",
|
|
"libGLESv2",
|
|
"libGLESv3",
|
|
"libvulkan",
|
|
"libui",
|
|
"libgui",
|
|
"libnativedisplay",
|
|
"libnativewindow",
|
|
"libprotobuf-cpp-lite",
|
|
"libft2",
|
|
"libandroidfw",
|
|
"libcrypto",
|
|
"libsync",
|
|
],
|
|
static_libs: [
|
|
"libEGL_blobCache",
|
|
],
|
|
},
|
|
host: {
|
|
static_libs: [
|
|
"libandroidfw",
|
|
"libutils",
|
|
],
|
|
}
|
|
}
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "hwui_bugreport_font_cache_usage",
|
|
cflags: ["-DBUGREPORT_FONT_CACHE_USAGE"],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "hwui_compile_for_perf",
|
|
// TODO: Non-arm?
|
|
cflags: [
|
|
"-fno-omit-frame-pointer",
|
|
"-marm",
|
|
"-mapcs",
|
|
],
|
|
}
|
|
|
|
// Build libhwui with PGO by default.
|
|
// Location of PGO profile data is defined in build/soong/cc/pgo.go
|
|
// and is separate from hwui.
|
|
// To turn it off, set ANDROID_PGO_NO_PROFILE_USE environment variable
|
|
// or set enable_profile_use property to false.
|
|
cc_defaults {
|
|
name: "hwui_pgo",
|
|
|
|
pgo: {
|
|
instrumentation: true,
|
|
profile_file: "hwui/hwui.profdata",
|
|
benchmarks: ["hwui"],
|
|
enable_profile_use: true,
|
|
},
|
|
}
|
|
|
|
// Build hwui library with ThinLTO by default.
|
|
cc_defaults {
|
|
name: "hwui_lto",
|
|
target: {
|
|
android: {
|
|
lto: {
|
|
thin: true,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
// ------------------------
|
|
// library
|
|
// ------------------------
|
|
|
|
cc_defaults {
|
|
name: "libhwui_defaults",
|
|
defaults: ["hwui_defaults"],
|
|
|
|
whole_static_libs: ["libskia"],
|
|
|
|
srcs: [
|
|
"pipeline/skia/SkiaDisplayList.cpp",
|
|
"pipeline/skia/SkiaRecordingCanvas.cpp",
|
|
"pipeline/skia/RenderNodeDrawable.cpp",
|
|
"pipeline/skia/ReorderBarrierDrawables.cpp",
|
|
"renderthread/Frame.cpp",
|
|
"renderthread/RenderTask.cpp",
|
|
"renderthread/TimeLord.cpp",
|
|
"hwui/AnimatedImageDrawable.cpp",
|
|
"hwui/AnimatedImageThread.cpp",
|
|
"hwui/Bitmap.cpp",
|
|
"hwui/Canvas.cpp",
|
|
"hwui/ImageDecoder.cpp",
|
|
"hwui/MinikinSkia.cpp",
|
|
"hwui/MinikinUtils.cpp",
|
|
"hwui/PaintImpl.cpp",
|
|
"hwui/Typeface.cpp",
|
|
"utils/Blur.cpp",
|
|
"utils/Color.cpp",
|
|
"utils/LinearAllocator.cpp",
|
|
"utils/VectorDrawableUtils.cpp",
|
|
"AnimationContext.cpp",
|
|
"Animator.cpp",
|
|
"AnimatorManager.cpp",
|
|
"CanvasTransform.cpp",
|
|
"DamageAccumulator.cpp",
|
|
"Interpolator.cpp",
|
|
"LightingInfo.cpp",
|
|
"Matrix.cpp",
|
|
"PathParser.cpp",
|
|
"Properties.cpp",
|
|
"PropertyValuesAnimatorSet.cpp",
|
|
"PropertyValuesHolder.cpp",
|
|
"RecordingCanvas.cpp",
|
|
"RenderNode.cpp",
|
|
"RenderProperties.cpp",
|
|
"RootRenderNode.cpp",
|
|
"SkiaCanvas.cpp",
|
|
"VectorDrawable.cpp",
|
|
],
|
|
|
|
proto: {
|
|
export_proto_headers: true,
|
|
},
|
|
|
|
export_include_dirs: ["."],
|
|
|
|
target: {
|
|
android: {
|
|
|
|
srcs: [
|
|
"pipeline/skia/GLFunctorDrawable.cpp",
|
|
"pipeline/skia/LayerDrawable.cpp",
|
|
"pipeline/skia/ShaderCache.cpp",
|
|
"pipeline/skia/SkiaMemoryTracer.cpp",
|
|
"pipeline/skia/SkiaOpenGLPipeline.cpp",
|
|
"pipeline/skia/SkiaPipeline.cpp",
|
|
"pipeline/skia/SkiaProfileRenderer.cpp",
|
|
"pipeline/skia/SkiaVulkanPipeline.cpp",
|
|
"pipeline/skia/VkFunctorDrawable.cpp",
|
|
"pipeline/skia/VkInteropFunctorDrawable.cpp",
|
|
"renderstate/RenderState.cpp",
|
|
"renderthread/CacheManager.cpp",
|
|
"renderthread/CanvasContext.cpp",
|
|
"renderthread/DrawFrameTask.cpp",
|
|
"renderthread/EglManager.cpp",
|
|
"renderthread/ReliableSurface.cpp",
|
|
"renderthread/VulkanManager.cpp",
|
|
"renderthread/VulkanSurface.cpp",
|
|
"renderthread/RenderProxy.cpp",
|
|
"renderthread/RenderThread.cpp",
|
|
"service/GraphicsStatsService.cpp",
|
|
"thread/CommonPool.cpp",
|
|
"utils/GLUtils.cpp",
|
|
"utils/StringUtils.cpp",
|
|
"AutoBackendTextureRelease.cpp",
|
|
"DeferredLayerUpdater.cpp",
|
|
"DeviceInfo.cpp",
|
|
"FrameInfo.cpp",
|
|
"FrameInfoVisualizer.cpp",
|
|
"GpuMemoryTracker.cpp",
|
|
"HardwareBitmapUploader.cpp",
|
|
"HWUIProperties.sysprop",
|
|
"JankTracker.cpp",
|
|
"Layer.cpp",
|
|
"LayerUpdateQueue.cpp",
|
|
"ProfileData.cpp",
|
|
"ProfileDataContainer.cpp",
|
|
"Readback.cpp",
|
|
"TreeInfo.cpp",
|
|
"WebViewFunctorManager.cpp",
|
|
"protos/graphicsstats.proto",
|
|
],
|
|
|
|
// Allow implicit fallthroughs in HardwareBitmapUploader.cpp until they are fixed.
|
|
cflags: ["-Wno-implicit-fallthrough"],
|
|
},
|
|
host: {
|
|
srcs: [
|
|
"utils/HostColorSpace.cpp",
|
|
],
|
|
export_static_lib_headers: [
|
|
"libarect",
|
|
],
|
|
}
|
|
}
|
|
}
|
|
|
|
cc_library {
|
|
name: "libhwui",
|
|
host_supported: true,
|
|
defaults: [
|
|
"libhwui_defaults",
|
|
],
|
|
}
|
|
|
|
cc_library_static {
|
|
name: "libhwui_static",
|
|
defaults: [
|
|
"libhwui_defaults",
|
|
],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "hwui_test_defaults",
|
|
defaults: ["hwui_defaults"],
|
|
test_suites: ["device-tests"],
|
|
srcs: [
|
|
"tests/common/scenes/*.cpp",
|
|
"tests/common/LeakChecker.cpp",
|
|
"tests/common/TestListViewSceneBase.cpp",
|
|
"tests/common/TestContext.cpp",
|
|
"tests/common/TestScene.cpp",
|
|
"tests/common/TestUtils.cpp",
|
|
],
|
|
}
|
|
|
|
// ------------------------
|
|
// unit tests
|
|
// ------------------------
|
|
|
|
cc_test {
|
|
name: "hwui_unit_tests",
|
|
defaults: ["hwui_test_defaults"],
|
|
|
|
static_libs: [
|
|
"libgmock",
|
|
"libhwui_static",
|
|
],
|
|
shared_libs: [
|
|
"libmemunreachable",
|
|
],
|
|
|
|
srcs: [
|
|
"tests/unit/main.cpp",
|
|
"tests/unit/CacheManagerTests.cpp",
|
|
"tests/unit/CanvasContextTests.cpp",
|
|
"tests/unit/CommonPoolTests.cpp",
|
|
"tests/unit/DamageAccumulatorTests.cpp",
|
|
"tests/unit/DeferredLayerUpdaterTests.cpp",
|
|
"tests/unit/FatVectorTests.cpp",
|
|
"tests/unit/GpuMemoryTrackerTests.cpp",
|
|
"tests/unit/GraphicsStatsServiceTests.cpp",
|
|
"tests/unit/LayerUpdateQueueTests.cpp",
|
|
"tests/unit/LinearAllocatorTests.cpp",
|
|
"tests/unit/MatrixTests.cpp",
|
|
"tests/unit/PathInterpolatorTests.cpp",
|
|
"tests/unit/RenderNodeDrawableTests.cpp",
|
|
"tests/unit/RenderNodeTests.cpp",
|
|
"tests/unit/RenderPropertiesTests.cpp",
|
|
"tests/unit/RenderThreadTests.cpp",
|
|
"tests/unit/ShaderCacheTests.cpp",
|
|
"tests/unit/SkiaBehaviorTests.cpp",
|
|
"tests/unit/SkiaDisplayListTests.cpp",
|
|
"tests/unit/SkiaPipelineTests.cpp",
|
|
"tests/unit/SkiaRenderPropertiesTests.cpp",
|
|
"tests/unit/SkiaCanvasTests.cpp",
|
|
"tests/unit/StringUtilsTests.cpp",
|
|
"tests/unit/TestUtilsTests.cpp",
|
|
"tests/unit/ThreadBaseTests.cpp",
|
|
"tests/unit/TypefaceTests.cpp",
|
|
"tests/unit/VectorDrawableTests.cpp",
|
|
"tests/unit/WebViewFunctorManagerTests.cpp",
|
|
],
|
|
}
|
|
|
|
// ------------------------
|
|
// Macro-bench app
|
|
// ------------------------
|
|
|
|
cc_benchmark {
|
|
name: "hwuimacro",
|
|
defaults: ["hwui_test_defaults"],
|
|
|
|
static_libs: ["libhwui"],
|
|
shared_libs: [
|
|
"libmemunreachable",
|
|
],
|
|
|
|
srcs: [
|
|
"tests/macrobench/TestSceneRunner.cpp",
|
|
"tests/macrobench/main.cpp",
|
|
],
|
|
}
|
|
|
|
// ------------------------
|
|
// Micro-bench app
|
|
// ---------------------
|
|
|
|
cc_benchmark {
|
|
name: "hwuimicro",
|
|
defaults: ["hwui_test_defaults"],
|
|
|
|
static_libs: ["libhwui_static"],
|
|
shared_libs: [
|
|
"libmemunreachable",
|
|
],
|
|
|
|
srcs: [
|
|
"tests/microbench/main.cpp",
|
|
"tests/microbench/DisplayListCanvasBench.cpp",
|
|
"tests/microbench/LinearAllocatorBench.cpp",
|
|
"tests/microbench/PathParserBench.cpp",
|
|
"tests/microbench/RenderNodeBench.cpp",
|
|
],
|
|
}
|
|
|
|
// ----------------------------------------
|
|
// Phony target to build benchmarks for PGO
|
|
// ----------------------------------------
|
|
|
|
phony {
|
|
name: "pgo-targets-hwui",
|
|
required: [
|
|
"hwuimicro",
|
|
"hwuimacro",
|
|
]
|
|
}
|