This adds support for debug.hwui.profile and debug.hwui.show_dirty_regions to the Skia pipelines. There still may be some follow up work for profiling with visual bars. The speed at which the renderer is able to draw the rects in the graph is having a noticeable effect on the actual data in the graphs. Test: Verified that the features work as expected. BUG:32370375 Change-Id: I24430da2bab3eb54f6a771f9c984f8ae0008a5a7
371 lines
10 KiB
Makefile
371 lines
10 KiB
Makefile
LOCAL_PATH:= $(call my-dir)
|
|
include $(CLEAR_VARS)
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
|
|
BUGREPORT_FONT_CACHE_USAGE := false
|
|
|
|
# Enables fine-grained GLES error checking
|
|
# If set to true, every GLES call is wrapped & error checked
|
|
# Has moderate overhead
|
|
HWUI_ENABLE_OPENGL_VALIDATION := false
|
|
|
|
hwui_src_files := \
|
|
hwui/Bitmap.cpp \
|
|
font/CacheTexture.cpp \
|
|
font/Font.cpp \
|
|
hwui/Canvas.cpp \
|
|
hwui/MinikinSkia.cpp \
|
|
hwui/MinikinUtils.cpp \
|
|
hwui/PaintImpl.cpp \
|
|
hwui/Typeface.cpp \
|
|
pipeline/skia/GLFunctorDrawable.cpp \
|
|
pipeline/skia/LayerDrawable.cpp \
|
|
pipeline/skia/RenderNodeDrawable.cpp \
|
|
pipeline/skia/ReorderBarrierDrawables.cpp \
|
|
pipeline/skia/SkiaDisplayList.cpp \
|
|
pipeline/skia/SkiaOpenGLPipeline.cpp \
|
|
pipeline/skia/SkiaPipeline.cpp \
|
|
pipeline/skia/SkiaProfileRenderer.cpp \
|
|
pipeline/skia/SkiaRecordingCanvas.cpp \
|
|
pipeline/skia/SkiaVulkanPipeline.cpp \
|
|
renderstate/Blend.cpp \
|
|
renderstate/MeshState.cpp \
|
|
renderstate/OffscreenBufferPool.cpp \
|
|
renderstate/PixelBufferState.cpp \
|
|
renderstate/RenderState.cpp \
|
|
renderstate/Scissor.cpp \
|
|
renderstate/Stencil.cpp \
|
|
renderstate/TextureState.cpp \
|
|
renderthread/CanvasContext.cpp \
|
|
renderthread/OpenGLPipeline.cpp \
|
|
renderthread/DrawFrameTask.cpp \
|
|
renderthread/EglManager.cpp \
|
|
renderthread/RenderProxy.cpp \
|
|
renderthread/RenderTask.cpp \
|
|
renderthread/RenderThread.cpp \
|
|
renderthread/TimeLord.cpp \
|
|
thread/TaskManager.cpp \
|
|
utils/Blur.cpp \
|
|
utils/GLUtils.cpp \
|
|
utils/LinearAllocator.cpp \
|
|
utils/StringUtils.cpp \
|
|
utils/TestWindowContext.cpp \
|
|
utils/VectorDrawableUtils.cpp \
|
|
AmbientShadow.cpp \
|
|
AnimationContext.cpp \
|
|
Animator.cpp \
|
|
AnimatorManager.cpp \
|
|
BakedOpDispatcher.cpp \
|
|
BakedOpRenderer.cpp \
|
|
BakedOpState.cpp \
|
|
Caches.cpp \
|
|
CanvasState.cpp \
|
|
ClipArea.cpp \
|
|
DamageAccumulator.cpp \
|
|
DeferredLayerUpdater.cpp \
|
|
DeviceInfo.cpp \
|
|
DisplayList.cpp \
|
|
Extensions.cpp \
|
|
FboCache.cpp \
|
|
FontRenderer.cpp \
|
|
FrameBuilder.cpp \
|
|
FrameInfo.cpp \
|
|
FrameInfoVisualizer.cpp \
|
|
GammaFontRenderer.cpp \
|
|
GlopBuilder.cpp \
|
|
GpuMemoryTracker.cpp \
|
|
GradientCache.cpp \
|
|
Image.cpp \
|
|
Interpolator.cpp \
|
|
JankTracker.cpp \
|
|
Layer.cpp \
|
|
LayerBuilder.cpp \
|
|
LayerUpdateQueue.cpp \
|
|
Matrix.cpp \
|
|
OpDumper.cpp \
|
|
Patch.cpp \
|
|
PatchCache.cpp \
|
|
PathCache.cpp \
|
|
PathParser.cpp \
|
|
PathTessellator.cpp \
|
|
PixelBuffer.cpp \
|
|
ProfileRenderer.cpp \
|
|
Program.cpp \
|
|
ProgramCache.cpp \
|
|
Properties.cpp \
|
|
PropertyValuesAnimatorSet.cpp \
|
|
PropertyValuesHolder.cpp \
|
|
Readback.cpp \
|
|
RecordingCanvas.cpp \
|
|
RenderBufferCache.cpp \
|
|
RenderNode.cpp \
|
|
RenderProperties.cpp \
|
|
ResourceCache.cpp \
|
|
ShadowTessellator.cpp \
|
|
SkiaCanvas.cpp \
|
|
SkiaCanvasProxy.cpp \
|
|
SkiaShader.cpp \
|
|
Snapshot.cpp \
|
|
SpotShadow.cpp \
|
|
TessellationCache.cpp \
|
|
TextDropShadowCache.cpp \
|
|
Texture.cpp \
|
|
TextureCache.cpp \
|
|
VectorDrawable.cpp \
|
|
protos/hwui.proto
|
|
|
|
hwui_test_common_src_files := \
|
|
$(call all-cpp-files-under, tests/common/scenes) \
|
|
tests/common/LeakChecker.cpp \
|
|
tests/common/TestListViewSceneBase.cpp \
|
|
tests/common/TestContext.cpp \
|
|
tests/common/TestScene.cpp \
|
|
tests/common/TestUtils.cpp
|
|
|
|
hwui_debug_common_src_files := \
|
|
debug/wrap_gles.cpp \
|
|
debug/DefaultGlesDriver.cpp \
|
|
debug/GlesErrorCheckWrapper.cpp \
|
|
debug/GlesDriver.cpp \
|
|
debug/FatalBaseDriver.cpp \
|
|
debug/NullGlesDriver.cpp
|
|
|
|
hwui_cflags := \
|
|
-DEGL_EGLEXT_PROTOTYPES -DGL_GLEXT_PROTOTYPES \
|
|
-DATRACE_TAG=ATRACE_TAG_VIEW -DLOG_TAG=\"OpenGLRenderer\" \
|
|
-Wall -Wno-unused-parameter -Wunreachable-code -Werror
|
|
|
|
ifeq ($(TARGET_USES_HWC2),true)
|
|
hwui_cflags += -DUSE_HWC2
|
|
endif
|
|
|
|
# TODO: Linear blending should be enabled by default, but we are
|
|
# TODO: making it an opt-in while it's a work in progress
|
|
# TODO: The final test should be:
|
|
# TODO: ifneq ($(TARGET_ENABLE_LINEAR_BLENDING),false)
|
|
ifeq ($(TARGET_ENABLE_LINEAR_BLENDING),true)
|
|
hwui_cflags += -DANDROID_ENABLE_LINEAR_BLENDING
|
|
endif
|
|
|
|
# GCC false-positives on this warning, and since we -Werror that's
|
|
# a problem
|
|
hwui_cflags += -Wno-free-nonheap-object
|
|
|
|
# clang's warning is broken, see: https://llvm.org/bugs/show_bug.cgi?id=21629
|
|
hwui_cflags += -Wno-missing-braces
|
|
|
|
ifeq (true, $(BUGREPORT_FONT_CACHE_USAGE))
|
|
hwui_src_files += \
|
|
font/FontCacheHistoryTracker.cpp
|
|
hwui_cflags += -DBUGREPORT_FONT_CACHE_USAGE
|
|
endif
|
|
|
|
ifndef HWUI_COMPILE_SYMBOLS
|
|
hwui_cflags += -fvisibility=hidden
|
|
endif
|
|
|
|
ifdef HWUI_COMPILE_FOR_PERF
|
|
# TODO: Non-arm?
|
|
hwui_cflags += -fno-omit-frame-pointer -marm -mapcs
|
|
endif
|
|
|
|
# This has to be lazy-resolved because it depends on the LOCAL_MODULE_CLASS
|
|
# which varies depending on what is being built
|
|
define hwui_proto_include
|
|
$(call local-generated-sources-dir)/proto/$(LOCAL_PATH)
|
|
endef
|
|
|
|
hwui_c_includes += \
|
|
external/skia/include/private \
|
|
external/skia/src/core \
|
|
external/skia/src/effects \
|
|
external/harfbuzz_ng/src \
|
|
external/freetype/include
|
|
|
|
ifneq (false,$(ANDROID_ENABLE_RENDERSCRIPT))
|
|
hwui_cflags += -DANDROID_ENABLE_RENDERSCRIPT
|
|
hwui_c_includes += \
|
|
$(call intermediates-dir-for,STATIC_LIBRARIES,libRS,TARGET,) \
|
|
frameworks/rs/cpp \
|
|
frameworks/rs
|
|
endif
|
|
|
|
# ------------------------
|
|
# static library
|
|
# ------------------------
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
|
LOCAL_MODULE := libhwui_static
|
|
LOCAL_CFLAGS := $(hwui_cflags)
|
|
LOCAL_SRC_FILES := $(hwui_src_files)
|
|
|
|
ifeq (true, $(HWUI_ENABLE_OPENGL_VALIDATION))
|
|
LOCAL_CFLAGS += -include debug/wrap_gles.h
|
|
LOCAL_CFLAGS += -DDEBUG_OPENGL=3
|
|
LOCAL_SRC_FILES += $(hwui_debug_common_src_files)
|
|
endif
|
|
|
|
LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include)
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := \
|
|
$(LOCAL_PATH) \
|
|
$(call hwui_proto_include)
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
# ------------------------
|
|
# static library null gpu
|
|
# ------------------------
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
|
LOCAL_MODULE := libhwui_static_debug
|
|
LOCAL_CFLAGS := \
|
|
$(hwui_cflags) \
|
|
-include debug/wrap_gles.h \
|
|
-DHWUI_NULL_GPU
|
|
LOCAL_SRC_FILES := \
|
|
$(hwui_src_files) \
|
|
$(hwui_debug_common_src_files) \
|
|
debug/nullegl.cpp
|
|
LOCAL_C_INCLUDES := $(hwui_c_includes) $(call hwui_proto_include)
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := \
|
|
$(LOCAL_PATH) \
|
|
$(call hwui_proto_include)
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
# ------------------------
|
|
# shared library
|
|
# ------------------------
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
|
LOCAL_MODULE := libhwui
|
|
LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
# ------------------------
|
|
# unit tests
|
|
# ------------------------
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := hwui_unit_tests
|
|
LOCAL_MODULE_TAGS := tests
|
|
LOCAL_STATIC_LIBRARIES := libgmock libhwui_static_debug
|
|
LOCAL_SHARED_LIBRARIES := libmemunreachable
|
|
LOCAL_CFLAGS := \
|
|
$(hwui_cflags) \
|
|
-include debug/wrap_gles.h \
|
|
-DHWUI_NULL_GPU
|
|
LOCAL_C_INCLUDES := $(hwui_c_includes)
|
|
|
|
LOCAL_SRC_FILES += \
|
|
$(hwui_test_common_src_files) \
|
|
tests/unit/main.cpp \
|
|
tests/unit/BakedOpDispatcherTests.cpp \
|
|
tests/unit/BakedOpRendererTests.cpp \
|
|
tests/unit/BakedOpStateTests.cpp \
|
|
tests/unit/CanvasContextTests.cpp \
|
|
tests/unit/CanvasStateTests.cpp \
|
|
tests/unit/ClipAreaTests.cpp \
|
|
tests/unit/DamageAccumulatorTests.cpp \
|
|
tests/unit/DeferredLayerUpdaterTests.cpp \
|
|
tests/unit/DeviceInfoTests.cpp \
|
|
tests/unit/FatVectorTests.cpp \
|
|
tests/unit/FontRendererTests.cpp \
|
|
tests/unit/FrameBuilderTests.cpp \
|
|
tests/unit/GlopBuilderTests.cpp \
|
|
tests/unit/GpuMemoryTrackerTests.cpp \
|
|
tests/unit/GradientCacheTests.cpp \
|
|
tests/unit/LayerUpdateQueueTests.cpp \
|
|
tests/unit/LeakCheckTests.cpp \
|
|
tests/unit/LinearAllocatorTests.cpp \
|
|
tests/unit/MatrixTests.cpp \
|
|
tests/unit/MeshStateTests.cpp \
|
|
tests/unit/OffscreenBufferPoolTests.cpp \
|
|
tests/unit/OpDumperTests.cpp \
|
|
tests/unit/RenderNodeDrawableTests.cpp \
|
|
tests/unit/RecordingCanvasTests.cpp \
|
|
tests/unit/RenderNodeTests.cpp \
|
|
tests/unit/RenderPropertiesTests.cpp \
|
|
tests/unit/SkiaBehaviorTests.cpp \
|
|
tests/unit/SkiaDisplayListTests.cpp \
|
|
tests/unit/SkiaPipelineTests.cpp \
|
|
tests/unit/SkiaCanvasTests.cpp \
|
|
tests/unit/SnapshotTests.cpp \
|
|
tests/unit/StringUtilsTests.cpp \
|
|
tests/unit/TestUtilsTests.cpp \
|
|
tests/unit/TextDropShadowCacheTests.cpp \
|
|
tests/unit/VectorDrawableTests.cpp \
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_NATIVE_TEST)
|
|
|
|
# ------------------------
|
|
# Macro-bench app
|
|
# ------------------------
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/local/tmp
|
|
LOCAL_MODULE:= hwuimacro
|
|
LOCAL_MODULE_TAGS := tests
|
|
LOCAL_MULTILIB := both
|
|
LOCAL_CFLAGS := $(hwui_cflags)
|
|
LOCAL_C_INCLUDES := $(hwui_c_includes)
|
|
|
|
# set to libhwui_static_debug to skip actual GL commands
|
|
LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static
|
|
LOCAL_SHARED_LIBRARIES := libmemunreachable
|
|
|
|
LOCAL_SRC_FILES += \
|
|
$(hwui_test_common_src_files) \
|
|
tests/macrobench/TestSceneRunner.cpp \
|
|
tests/macrobench/main.cpp
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_NATIVE_BENCHMARK)
|
|
|
|
# ------------------------
|
|
# Micro-bench app
|
|
# ---------------------
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE:= hwuimicro
|
|
LOCAL_MODULE_TAGS := tests
|
|
LOCAL_CFLAGS := \
|
|
$(hwui_cflags) \
|
|
-include debug/wrap_gles.h \
|
|
-DHWUI_NULL_GPU
|
|
|
|
LOCAL_C_INCLUDES := $(hwui_c_includes)
|
|
|
|
LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static_debug
|
|
LOCAL_SHARED_LIBRARIES := libmemunreachable
|
|
|
|
LOCAL_SRC_FILES += \
|
|
$(hwui_test_common_src_files) \
|
|
tests/microbench/main.cpp \
|
|
tests/microbench/DisplayListCanvasBench.cpp \
|
|
tests/microbench/FontBench.cpp \
|
|
tests/microbench/FrameBuilderBench.cpp \
|
|
tests/microbench/LinearAllocatorBench.cpp \
|
|
tests/microbench/PathParserBench.cpp \
|
|
tests/microbench/RenderNodeBench.cpp \
|
|
tests/microbench/ShadowBench.cpp \
|
|
tests/microbench/TaskManagerBench.cpp
|
|
|
|
|
|
include $(LOCAL_PATH)/hwui_static_deps.mk
|
|
include $(BUILD_NATIVE_BENCHMARK)
|