blob: 592a6e64a58bc7be3e34b03137ec2e30b9fa852b [file] [log] [blame]
Colin Crossf6298102017-04-19 15:25:25 -07001cc_defaults {
2 name: "hwui_defaults",
3 defaults: [
4 "hwui_static_deps",
Pirama Arumuga Nainar0dfd4be2017-11-16 22:40:00 -08005 "skia_deps",
Colin Crossf6298102017-04-19 15:25:25 -07006 //"hwui_bugreport_font_cache_usage",
7 //"hwui_compile_for_perf",
Pirama Arumuga Nainar0dfd4be2017-11-16 22:40:00 -08008 "hwui_pgo",
Pirama Arumuga Nainarb7913e12018-03-09 00:03:57 +00009 "hwui_lto",
Colin Crossf6298102017-04-19 15:25:25 -070010 ],
11
John Reckf8441e62017-10-23 13:10:41 -070012 cpp_std: "c++17",
13
Colin Crossf6298102017-04-19 15:25:25 -070014 cflags: [
15 "-DEGL_EGLEXT_PROTOTYPES",
16 "-DGL_GLEXT_PROTOTYPES",
17 "-DATRACE_TAG=ATRACE_TAG_VIEW",
18 "-DLOG_TAG=\"OpenGLRenderer\"",
19 "-Wall",
20 "-Wno-unused-parameter",
21 "-Wunreachable-code",
22 "-Werror",
23 "-fvisibility=hidden",
24
25 // GCC false-positives on this warning, and since we -Werror that's
26 // a problem
27 "-Wno-free-nonheap-object",
28
29 // clang's warning is broken, see: https://llvm.org/bugs/show_bug.cgi?id=21629
30 "-Wno-missing-braces",
31
32 // TODO: Linear blending should be enabled by default, but we are
33 // TODO: making it an opt-in while it's a work in progress
34 //"-DANDROID_ENABLE_LINEAR_BLENDING",
35 ],
36
37 include_dirs: [
38 "external/skia/include/private",
39 "external/skia/src/core",
40 "external/skia/src/effects",
41 "external/skia/src/image",
42 "external/skia/src/utils",
Stan Iliev3310fb12017-03-23 16:56:51 -040043 "external/skia/src/gpu",
Colin Crossf6298102017-04-19 15:25:25 -070044 ],
45
46 product_variables: {
47 device_uses_hwc2: {
48 cflags: ["-DUSE_HWC2"],
49 },
50 },
51}
52
53cc_defaults {
54 name: "hwui_static_deps",
55 shared_libs: [
56 "liblog",
57 "libcutils",
58 "libutils",
59 "libEGL",
60 "libGLESv2",
61 "libvulkan",
Colin Crossf6298102017-04-19 15:25:25 -070062 "libui",
63 "libgui",
John Reck915883b2017-05-03 10:27:20 -070064 "libprotobuf-cpp-lite",
Colin Crossf6298102017-04-19 15:25:25 -070065 "libharfbuzz_ng",
66 "libft2",
67 "libminikin",
68 "libandroidfw",
69 "libRScpp",
70 ],
71 static_libs: [
72 "libplatformprotos",
Stan Ilievd495f432017-10-09 15:49:32 -040073 "libEGL_blobCache",
Colin Crossf6298102017-04-19 15:25:25 -070074 ],
75}
76
77cc_defaults {
78 name: "hwui_bugreport_font_cache_usage",
79 srcs: ["font/FontCacheHistoryTracker.cpp"],
80 cflags: ["-DBUGREPORT_FONT_CACHE_USAGE"],
81}
82
83cc_defaults {
84 name: "hwui_compile_for_perf",
85 // TODO: Non-arm?
86 cflags: [
87 "-fno-omit-frame-pointer",
88 "-marm",
89 "-mapcs",
90 ],
91}
92
93cc_defaults {
94 name: "hwui_debug",
95 cflags: ["-include debug/wrap_gles.h"],
96 srcs: [
97 "debug/wrap_gles.cpp",
98 "debug/DefaultGlesDriver.cpp",
99 "debug/GlesErrorCheckWrapper.cpp",
100 "debug/GlesDriver.cpp",
101 "debug/FatalBaseDriver.cpp",
102 "debug/NullGlesDriver.cpp",
103 ],
104 include_dirs: ["frameworks/native/opengl/libs/GLES2"],
105}
106
107cc_defaults {
108 name: "hwui_enable_opengl_validation",
109 defaults: ["hwui_debug"],
110 cflags: ["-DDEBUG_OPENGL=3"],
Colin Crossf6298102017-04-19 15:25:25 -0700111 include_dirs: ["frameworks/native/opengl/libs/GLES2"],
112}
113
Pirama Arumuga Nainar0dfd4be2017-11-16 22:40:00 -0800114// Build libhwui with PGO by default.
115// Location of PGO profile data is defined in build/soong/cc/pgo.go
116// and is separate from hwui.
117// To turn it off, set ANDROID_PGO_NO_PROFILE_USE environment variable
118// or set enable_profile_use property to false.
119cc_defaults {
120 name: "hwui_pgo",
121
122 pgo: {
123 instrumentation: true,
124 profile_file: "hwui/hwui.profdata",
125 benchmarks: ["hwui"],
Zhizhou Yang58e1b782017-12-06 16:59:06 -0800126 enable_profile_use: true,
Pirama Arumuga Nainar0dfd4be2017-11-16 22:40:00 -0800127 },
128}
129
Zhizhou Yangf30f1122018-02-26 17:59:38 -0800130// Build hwui library with ThinLTO by default.
131cc_defaults {
132 name: "hwui_lto",
133 target: {
134 android: {
135 lto: {
136 thin: true,
137 },
138 },
139 },
140}
141
Colin Crossf6298102017-04-19 15:25:25 -0700142// ------------------------
143// library
144// ------------------------
145
146cc_defaults {
147 name: "libhwui_defaults",
148 defaults: ["hwui_defaults"],
Derek Sollenbergerd938e5a2017-07-24 09:42:07 -0400149
Tej Singhbb8554a2018-01-26 11:59:14 -0800150 shared_libs: ["libstatslog"],
151
Derek Sollenbergerd938e5a2017-07-24 09:42:07 -0400152 whole_static_libs: ["libskia"],
153
Colin Crossf6298102017-04-19 15:25:25 -0700154 srcs: [
Derek Sollenberger2d142132018-01-22 10:25:26 -0500155 "hwui/AnimatedImageDrawable.cpp",
Leon Scroggins III5b7f4262018-01-26 11:03:54 -0500156 "hwui/AnimatedImageThread.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700157 "hwui/Bitmap.cpp",
158 "font/CacheTexture.cpp",
159 "font/Font.cpp",
160 "hwui/Canvas.cpp",
161 "hwui/MinikinSkia.cpp",
162 "hwui/MinikinUtils.cpp",
163 "hwui/PaintImpl.cpp",
164 "hwui/Typeface.cpp",
165 "pipeline/skia/GLFunctorDrawable.cpp",
166 "pipeline/skia/LayerDrawable.cpp",
167 "pipeline/skia/RenderNodeDrawable.cpp",
168 "pipeline/skia/ReorderBarrierDrawables.cpp",
Stan Ilievd495f432017-10-09 15:49:32 -0400169 "pipeline/skia/ShaderCache.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700170 "pipeline/skia/SkiaDisplayList.cpp",
Derek Sollenberger0057db22018-03-29 14:18:44 -0400171 "pipeline/skia/SkiaMemoryTracer.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700172 "pipeline/skia/SkiaOpenGLPipeline.cpp",
173 "pipeline/skia/SkiaOpenGLReadback.cpp",
174 "pipeline/skia/SkiaPipeline.cpp",
175 "pipeline/skia/SkiaProfileRenderer.cpp",
176 "pipeline/skia/SkiaRecordingCanvas.cpp",
177 "pipeline/skia/SkiaVulkanPipeline.cpp",
Stan Iliev3310fb12017-03-23 16:56:51 -0400178 "pipeline/skia/VectorDrawableAtlas.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700179 "renderstate/Blend.cpp",
180 "renderstate/MeshState.cpp",
181 "renderstate/OffscreenBufferPool.cpp",
182 "renderstate/PixelBufferState.cpp",
183 "renderstate/RenderState.cpp",
184 "renderstate/Scissor.cpp",
185 "renderstate/Stencil.cpp",
186 "renderstate/TextureState.cpp",
Derek Sollenbergerf9e45d12017-06-01 13:07:39 -0400187 "renderthread/CacheManager.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700188 "renderthread/CanvasContext.cpp",
189 "renderthread/OpenGLPipeline.cpp",
190 "renderthread/DrawFrameTask.cpp",
191 "renderthread/EglManager.cpp",
192 "renderthread/VulkanManager.cpp",
193 "renderthread/RenderProxy.cpp",
194 "renderthread/RenderTask.cpp",
195 "renderthread/RenderThread.cpp",
196 "renderthread/TimeLord.cpp",
197 "renderthread/Frame.cpp",
198 "service/GraphicsStatsService.cpp",
199 "thread/TaskManager.cpp",
200 "utils/Blur.cpp",
201 "utils/Color.cpp",
202 "utils/GLUtils.cpp",
203 "utils/LinearAllocator.cpp",
204 "utils/StringUtils.cpp",
205 "utils/TestWindowContext.cpp",
206 "utils/VectorDrawableUtils.cpp",
207 "AmbientShadow.cpp",
208 "AnimationContext.cpp",
209 "Animator.cpp",
210 "AnimatorManager.cpp",
211 "BakedOpDispatcher.cpp",
212 "BakedOpRenderer.cpp",
213 "BakedOpState.cpp",
214 "Caches.cpp",
215 "CanvasState.cpp",
216 "ClipArea.cpp",
217 "DamageAccumulator.cpp",
218 "DeferredLayerUpdater.cpp",
219 "DeviceInfo.cpp",
220 "DisplayList.cpp",
221 "Extensions.cpp",
222 "FboCache.cpp",
223 "FontRenderer.cpp",
224 "FrameBuilder.cpp",
225 "FrameInfo.cpp",
226 "FrameInfoVisualizer.cpp",
227 "GammaFontRenderer.cpp",
228 "GlLayer.cpp",
229 "GlopBuilder.cpp",
230 "GpuMemoryTracker.cpp",
231 "GradientCache.cpp",
232 "Image.cpp",
233 "Interpolator.cpp",
234 "JankTracker.cpp",
235 "Layer.cpp",
236 "LayerBuilder.cpp",
237 "LayerUpdateQueue.cpp",
238 "Matrix.cpp",
239 "OpDumper.cpp",
240 "OpenGLReadback.cpp",
241 "Patch.cpp",
242 "PatchCache.cpp",
243 "PathCache.cpp",
244 "PathParser.cpp",
245 "PathTessellator.cpp",
246 "PixelBuffer.cpp",
John Reck7075c792017-07-05 14:03:43 -0700247 "ProfileData.cpp",
John Reck34781b22017-07-05 16:39:36 -0700248 "ProfileDataContainer.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700249 "ProfileRenderer.cpp",
250 "Program.cpp",
251 "ProgramCache.cpp",
252 "Properties.cpp",
253 "PropertyValuesAnimatorSet.cpp",
254 "PropertyValuesHolder.cpp",
255 "RecordingCanvas.cpp",
256 "RenderBufferCache.cpp",
257 "RenderNode.cpp",
258 "RenderProperties.cpp",
259 "ResourceCache.cpp",
260 "ShadowTessellator.cpp",
261 "SkiaCanvas.cpp",
262 "SkiaCanvasProxy.cpp",
263 "SkiaShader.cpp",
264 "Snapshot.cpp",
265 "SpotShadow.cpp",
266 "TessellationCache.cpp",
267 "TextDropShadowCache.cpp",
268 "Texture.cpp",
269 "TextureCache.cpp",
270 "VectorDrawable.cpp",
271 "VkLayer.cpp",
272 "protos/hwui.proto",
273 ],
274
275 proto: {
276 export_proto_headers: true,
277 },
278
279 export_include_dirs: ["."],
Colin Cross3f8fd402017-04-20 12:20:20 -0700280 export_shared_lib_headers: ["libRScpp"],
Colin Crossf6298102017-04-19 15:25:25 -0700281}
282
283cc_library {
284 name: "libhwui",
Chris Craikd17b63c2017-06-01 10:45:36 -0700285 defaults: [
286 "libhwui_defaults",
287
288 // Enables fine-grained GLES error checking
289 // If enabled, every GLES call is wrapped & error checked
290 // Has moderate overhead
291 "hwui_enable_opengl_validation",
Zhizhou Yang17371ec2017-10-13 11:42:13 -0700292 ],
Colin Crossf6298102017-04-19 15:25:25 -0700293}
294
295// ------------------------
296// static library null gpu
297// ------------------------
298
299cc_library_static {
300 name: "libhwui_static_debug",
301 defaults: [
302 "libhwui_defaults",
303 "hwui_debug",
304 ],
305 cflags: ["-DHWUI_NULL_GPU"],
306 srcs: [
307 "debug/nullegl.cpp",
308 ],
Colin Crossf6298102017-04-19 15:25:25 -0700309}
310
311cc_defaults {
312 name: "hwui_test_defaults",
313 defaults: ["hwui_defaults"],
314 test_suites: ["device-tests"],
315 srcs: [
316 "tests/common/scenes/*.cpp",
317 "tests/common/LeakChecker.cpp",
318 "tests/common/TestListViewSceneBase.cpp",
319 "tests/common/TestContext.cpp",
320 "tests/common/TestScene.cpp",
321 "tests/common/TestUtils.cpp",
322 ],
323}
324
325// ------------------------
326// unit tests
327// ------------------------
328
329cc_test {
330 name: "hwui_unit_tests",
331 defaults: ["hwui_test_defaults"],
332
333 static_libs: [
334 "libgmock",
335 "libhwui_static_debug",
336 ],
Tej Singhbb8554a2018-01-26 11:59:14 -0800337 shared_libs: [
338 "libmemunreachable",
339 "libstatslog",
340 ],
Colin Crossf6298102017-04-19 15:25:25 -0700341 cflags: [
342 "-include debug/wrap_gles.h",
343 "-DHWUI_NULL_GPU",
344 ],
345
346 srcs: [
347 "tests/unit/main.cpp",
348 "tests/unit/BakedOpDispatcherTests.cpp",
349 "tests/unit/BakedOpRendererTests.cpp",
350 "tests/unit/BakedOpStateTests.cpp",
Derek Sollenbergerf9e45d12017-06-01 13:07:39 -0400351 "tests/unit/CacheManagerTests.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700352 "tests/unit/CanvasContextTests.cpp",
353 "tests/unit/CanvasStateTests.cpp",
354 "tests/unit/ClipAreaTests.cpp",
355 "tests/unit/DamageAccumulatorTests.cpp",
356 "tests/unit/DeferredLayerUpdaterTests.cpp",
357 "tests/unit/DeviceInfoTests.cpp",
358 "tests/unit/FatVectorTests.cpp",
359 "tests/unit/FontRendererTests.cpp",
360 "tests/unit/FrameBuilderTests.cpp",
361 "tests/unit/GlopBuilderTests.cpp",
362 "tests/unit/GpuMemoryTrackerTests.cpp",
363 "tests/unit/GradientCacheTests.cpp",
364 "tests/unit/GraphicsStatsServiceTests.cpp",
365 "tests/unit/LayerUpdateQueueTests.cpp",
366 "tests/unit/LeakCheckTests.cpp",
367 "tests/unit/LinearAllocatorTests.cpp",
368 "tests/unit/MatrixTests.cpp",
369 "tests/unit/MeshStateTests.cpp",
370 "tests/unit/OffscreenBufferPoolTests.cpp",
371 "tests/unit/OpDumperTests.cpp",
372 "tests/unit/PathInterpolatorTests.cpp",
373 "tests/unit/RenderNodeDrawableTests.cpp",
374 "tests/unit/RecordingCanvasTests.cpp",
375 "tests/unit/RenderNodeTests.cpp",
376 "tests/unit/RenderPropertiesTests.cpp",
Stan Ilievd495f432017-10-09 15:49:32 -0400377 "tests/unit/ShaderCacheTests.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700378 "tests/unit/SkiaBehaviorTests.cpp",
379 "tests/unit/SkiaDisplayListTests.cpp",
380 "tests/unit/SkiaPipelineTests.cpp",
381 "tests/unit/SkiaRenderPropertiesTests.cpp",
382 "tests/unit/SkiaCanvasTests.cpp",
383 "tests/unit/SnapshotTests.cpp",
384 "tests/unit/StringUtilsTests.cpp",
385 "tests/unit/TestUtilsTests.cpp",
386 "tests/unit/TextDropShadowCacheTests.cpp",
387 "tests/unit/TextureCacheTests.cpp",
John Reckf8441e62017-10-23 13:10:41 -0700388 "tests/unit/ThreadBaseTests.cpp",
389 "tests/unit/TypefaceTests.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700390 "tests/unit/VectorDrawableTests.cpp",
Stan Iliev3310fb12017-03-23 16:56:51 -0400391 "tests/unit/VectorDrawableAtlasTests.cpp",
Colin Crossf6298102017-04-19 15:25:25 -0700392 ],
393}
394
395// ------------------------
396// Macro-bench app
397// ------------------------
398
399cc_benchmark {
400 name: "hwuimacro",
401 defaults: ["hwui_test_defaults"],
402
403 // set to libhwui_static_debug to skip actual GL commands
404 whole_static_libs: ["libhwui"],
Tej Singhbb8554a2018-01-26 11:59:14 -0800405 shared_libs: [
406 "libmemunreachable",
407 "libstatslog",
408 ],
Colin Crossf6298102017-04-19 15:25:25 -0700409
410 srcs: [
411 "tests/macrobench/TestSceneRunner.cpp",
412 "tests/macrobench/main.cpp",
413 ],
414}
415
416// ------------------------
417// Micro-bench app
418// ---------------------
419
420cc_benchmark {
421 name: "hwuimicro",
422 defaults: ["hwui_test_defaults"],
423
424 cflags: [
425 "-include debug/wrap_gles.h",
426 "-DHWUI_NULL_GPU",
427 ],
428
429 whole_static_libs: ["libhwui_static_debug"],
Tej Singhbb8554a2018-01-26 11:59:14 -0800430 shared_libs: [
431 "libmemunreachable",
432 "libstatslog",
433 ],
Colin Crossf6298102017-04-19 15:25:25 -0700434
435 srcs: [
436 "tests/microbench/main.cpp",
437 "tests/microbench/DisplayListCanvasBench.cpp",
438 "tests/microbench/FontBench.cpp",
439 "tests/microbench/FrameBuilderBench.cpp",
440 "tests/microbench/LinearAllocatorBench.cpp",
441 "tests/microbench/PathParserBench.cpp",
442 "tests/microbench/RenderNodeBench.cpp",
443 "tests/microbench/ShadowBench.cpp",
444 "tests/microbench/TaskManagerBench.cpp",
445 ],
446}
Pirama Arumuga Nainarbc1e1772017-11-17 11:32:16 -0800447
448// ----------------------------------------
449// Phony target to build benchmarks for PGO
450// ----------------------------------------
451
452phony {
453 name: "pgo-targets-hwui",
454 required: [
455 "hwuimicro",
456 "hwuimacro",
457 ]
458}