• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("//foundation/graphic/graphic_2d/graphic_config.gni")
16import("$graphic_2d_root/rosen/modules/render_service_base/config.gni")
17
18config("render_service_link_config") {
19  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
20    ldflags = [
21      "-Wl,--lto-O2",
22      "-Wl,-mllvm",
23      "-Wl,-wholeprogramdevirt-check=fallback",
24      "-Wl,-Bsymbolic",
25    ]
26  }
27}
28
29## Build librender_service.so
30ohos_shared_library("librender_service") {
31  branch_protector_ret = "pac_ret"
32  sanitize = {
33    cfi = true
34    cfi_cross_dso = true
35    debug = false
36  }
37  if (enhanced_opt) {
38    configs = [ ":render_service_link_config" ]
39  }
40  defines = []
41  if (graphic_2d_feature_color_gamut_enable) {
42    defines += [ "PADDING_HEIGHT_32" ]
43  } else {
44    defines += []
45  }
46  if (use_musl) {
47    defines += [ "FRAME_AWARE_TRACE" ]
48  }
49  if (use_video_processing_engine) {
50    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
51  }
52  defines += gpu_defines
53  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
54    defines += [ "IS_OHOS" ]
55    cflags = [ "-flto=thin" ]
56    if (enhanced_opt) {
57      cflags += [ "-fwhole-program-vtables" ]
58      if (graphic_2d_feature_enable_pgo &&
59          graphic_2d_feature_product != "default") {
60        cflags += [
61          "-fprofile-use=" + rebase_path(
62                  "${graphic_2d_feature_pgo_path}/librender_service.profdata",
63                  root_build_dir),
64          "-Wno-error=backend-plugin",
65          "-Wno-profile-instr-out-of-date",
66          "-Wno-profile-instr-unprofiled",
67        ]
68      }
69      if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") {
70        cflags += [ "-moutline-atomics" ]
71      }
72    }
73  }
74
75  sources = [
76    "core/memory/rs_memory_manager.cpp",
77    "core/pipeline/round_corner_display/rs_rcd_render_listener.cpp",
78    "core/pipeline/round_corner_display/rs_rcd_render_manager.cpp",
79    "core/pipeline/round_corner_display/rs_rcd_render_visitor.cpp",
80    "core/pipeline/round_corner_display/rs_rcd_surface_render_node.cpp",
81    "core/pipeline/round_corner_display/rs_round_corner_config.cpp",
82    "core/pipeline/round_corner_display/rs_round_corner_display.cpp",
83    "core/pipeline/round_corner_display/rs_sub_thread_rcd.cpp",
84    "core/pipeline/rs_base_render_engine.cpp",
85    "core/pipeline/rs_base_render_util.cpp",
86    "core/pipeline/rs_composer_adapter.cpp",
87    "core/pipeline/rs_divided_render_util.cpp",
88    "core/pipeline/rs_hardware_thread.cpp",
89    "core/pipeline/rs_main_thread.cpp",
90    "core/pipeline/rs_physical_screen_processor.cpp",
91    "core/pipeline/rs_processor.cpp",
92    "core/pipeline/rs_processor_factory.cpp",
93    "core/pipeline/rs_qos_thread.cpp",
94    "core/pipeline/rs_realtime_refresh_rate_manager.cpp",
95    "core/pipeline/rs_render_engine.cpp",
96    "core/pipeline/rs_render_service.cpp",
97    "core/pipeline/rs_render_service_connection.cpp",
98    "core/pipeline/rs_render_service_listener.cpp",
99    "core/pipeline/rs_render_service_visitor.cpp",
100    "core/pipeline/rs_surface_capture_task.cpp",
101    "core/pipeline/rs_uni_render_composer_adapter.cpp",
102    "core/pipeline/rs_uni_render_engine.cpp",
103    "core/pipeline/rs_uni_render_listener.cpp",
104    "core/pipeline/rs_uni_render_processor.cpp",
105    "core/pipeline/rs_uni_render_util.cpp",
106    "core/pipeline/rs_uni_render_virtual_processor.cpp",
107    "core/pipeline/rs_uni_render_visitor.cpp",
108    "core/pipeline/rs_uni_ui_capture.cpp",
109    "core/pipeline/rs_unmarshal_thread.cpp",
110    "core/pipeline/rs_virtual_screen_processor.cpp",
111    "core/screen_manager/rs_screen.cpp",
112    "core/screen_manager/rs_screen_manager.cpp",
113    "core/system/rs_system_parameters.cpp",
114    "core/transaction/rs_irender_service_connection_ipc_interface_code_access_verifier.cpp",
115    "core/transaction/rs_irender_service_ipc_interface_code_access_verifier.cpp",
116    "core/transaction/rs_render_service_connection_stub.cpp",
117    "core/transaction/rs_render_service_security_utils.cpp",
118    "core/transaction/rs_render_service_stub.cpp",
119  ]
120
121  if (rs_enable_driven_render) {
122    sources += [
123      "core/pipeline/driven_render/rs_driven_render_ext.cpp",
124      "core/pipeline/driven_render/rs_driven_render_listener.cpp",
125      "core/pipeline/driven_render/rs_driven_render_manager.cpp",
126      "core/pipeline/driven_render/rs_driven_render_visitor.cpp",
127      "core/pipeline/driven_render/rs_driven_surface_render_node.cpp",
128    ]
129  }
130
131  if (rs_enable_eglimage) {
132    sources += [ "core/pipeline/rs_egl_image_manager.cpp" ]
133  }
134
135  if (graphic_2d_feature_enable_vulkan) {
136    sources += [ "core/pipeline/rs_vk_image_manager.cpp" ]
137  }
138
139  if (rs_enable_parallel_render && rs_enable_gpu) {
140    sources += [
141      "core/pipeline/parallel_render/rs_filter_sub_thread.cpp",
142      "core/pipeline/parallel_render/rs_node_cost_manager.cpp",
143      "core/pipeline/parallel_render/rs_parallel_hardware_composer.cpp",
144      "core/pipeline/parallel_render/rs_parallel_pack_visitor.cpp",
145      "core/pipeline/parallel_render/rs_parallel_render_manager.cpp",
146      "core/pipeline/parallel_render/rs_parallel_sub_thread.cpp",
147      "core/pipeline/parallel_render/rs_parallel_task_manager.cpp",
148      "core/pipeline/parallel_render/rs_render_task.cpp",
149      "core/pipeline/parallel_render/rs_sub_thread.cpp",
150      "core/pipeline/parallel_render/rs_sub_thread_manager.cpp",
151    ]
152  }
153
154  if (use_memmgr_plugin || use_memmgr) {
155    sources += [ "core/memory/rs_app_state_listener.cpp" ]
156  }
157
158  if (tp_feature_enable) {
159    sources += [ "core/touch_screen/touch_screen.cpp" ]
160  }
161
162  include_dirs = [
163    "core",
164    "core/round_corner_display",
165    "$graphic_2d_root/frameworks/surface/include",
166    "$graphic_2d_root/interfaces/inner_api/surface",
167    "$graphic_2d_root/rosen/include",
168    "$graphic_2d_root/rosen/modules/2d_graphics",
169    "$graphic_2d_root/rosen/modules/composer/vsync/include",
170    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
171    "$graphic_2d_root/rosen/modules/render_frame_trace/include",
172    "$graphic_2d_root/rosen/modules/render_service_base/include",
173    "$graphic_2d_root/rosen/modules/render_service_base/src",
174    "$graphic_2d_root/rosen/modules/utils",
175    "//commonlibrary/c_utils/base/include",
176    "//utils/system/safwk/native/include",
177    "$graphic_2d_root/utils/log",
178    "$graphic_2d_root/utils/frame_report",
179    "//foundation/barrierfree/accessibility/interfaces/innerkits/acfwk/include",
180    "$memmgr_root/interface/innerkits/include",
181    "$memmgr_root/services/memmgrservice/include/memory_level_manager",
182    "$memmgr_plugin_root/interface/innerkits/include",
183    "$memmgr_plugin_root/services/memmgrservice/include/memory_level_manager",
184    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/config",
185    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/frame_rate_manager",
186    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/hgm_screen_manager",
187    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/utils",
188  ]
189  if (use_video_processing_engine) {
190    include_dirs += [ "$video_processing_engine_root/interfaces/inner_api" ]
191  }
192
193  deps = [
194    "$graphic_2d_root:libsurface",
195    "$graphic_2d_root/rosen/modules/composer:libcomposer",
196    "$graphic_2d_root/rosen/modules/hyper_graphic_manager:libhyper_graphic_manager",
197    "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace",
198    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
199    "$graphic_2d_root/utils:frame_report",
200  ]
201
202  if (rs_enable_recording_dcl && defined(use_rosen_drawing) &&
203      use_rosen_drawing) {
204    deps +=
205        [ "$graphic_2d_root/rosen/samples/2d_graphics:drawing_engine_sample" ]
206  }
207
208  public_deps = [
209    "//third_party/libpng:libpng",
210    "//third_party/libxml2:libxml2",
211  ]
212
213  public_deps += [ "//third_party/skia:skia_ohos" ]
214
215  if (defined(use_new_render_context) && use_new_render_context) {
216    include_dirs += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ]
217    defines += [ "NEW_RENDER_CONTEXT" ]
218  }
219
220  if (defined(rs_enable_parallel_upload) && rs_enable_parallel_upload) {
221    sources += [
222      "core/pipeline/parallel_render/resource/rs_upload_resource_thread.cpp",
223    ]
224    include_dirs += [ "$graphic_2d_root/rosen/modules/render_service/core/pipeline/parallel_render/resource" ]
225    if (defined(use_rosen_drawing) && use_rosen_drawing) {
226      sources += [
227        "core/pipeline/parallel_render/resource/rs_resource_helper_drawing.cpp",
228      ]
229    } else {
230      sources += [
231        "core/pipeline/parallel_render/resource/rs_resource_helper_skia.cpp",
232      ]
233    }
234  }
235
236  if (rs_enable_gpu) {
237    public_deps += [ "$graphic_2d_root:libvulkan" ]
238  }
239
240  if (defined(use_rosen_drawing) && use_rosen_drawing) {
241    defines += [ "USE_ROSEN_DRAWING" ]
242    if (ace_enable_gpu) {
243      defines += [ "ACE_ENABLE_GPU" ]
244    }
245    deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ]
246  }
247
248  external_deps = [
249    "c_utils:utils",
250    "drivers_interface_display:display_commontype_idl_headers",
251    "eventhandler:libeventhandler",
252    "hicollie:libhicollie",
253    "hilog:libhilog",
254    "hisysevent:libhisysevent",
255    "hitrace:hitrace_meter",
256    "init:libbegetutil",
257    "ipc:ipc_core",
258    "safwk:system_ability_fwk",
259    "samgr:samgr_proxy",
260    "window_manager:libwsutils",
261  ]
262  if (use_video_processing_engine) {
263    external_deps += [ "video_processing_engine:videoprocessingengine" ]
264  }
265
266  if (defined(ddgr_ext_configs)) {
267    libs = ddgr_ext_configs.ddgr_libs
268    defines += ddgr_ext_configs.ddgr_defines
269    sources += ddgr_ext_configs.libddgr_ext_adaptor_sources
270    include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs
271  }
272
273  if (rosen_is_ohos) {
274    external_deps += [ "image_framework:image_native" ]
275  }
276
277  if (defined(global_parts_info) &&
278      defined(global_parts_info.resourceschedule_soc_perf)) {
279    external_deps += [ "soc_perf:socperf_client" ]
280    defines += [ "SOC_PERF_ENABLE" ]
281  }
282
283  if (defined(global_parts_info) &&
284      defined(global_parts_info.resourceschedule_resource_schedule_service)) {
285    external_deps += [ "resource_schedule_service:ressched_client" ]
286    defines += [ "RES_SCHED_ENABLE" ]
287  }
288
289  if (defined(global_parts_info) && defined(global_parts_info.sensors_sensor)) {
290    external_deps += [ "sensor:sensor_interface_native" ]
291    defines += [ "RS_SUBSCRIBE_SENSOR_ENABLE" ]
292  }
293
294  if (accessibility_enable) {
295    external_deps += [ "accessibility:accessibilityconfig" ]
296    defines += accessibility_defines
297  }
298
299  if (use_memmgr_plugin) {
300    external_deps += [ "memmgr_plugin:memmgrclient" ]
301  } else if (use_memmgr) {
302    external_deps += [ "memmgr:memmgrclient" ]
303  }
304
305  if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) {
306    defines += [ "ENABLE_IPC_SECURITY" ]
307    external_deps += [
308      "access_token:libaccesstoken_sdk",
309      "access_token:libtokenid_sdk",
310    ]
311  }
312
313  if (rosen_is_ohos && defined(enable_ipc_security_access_counter) &&
314      enable_ipc_security_access_counter) {
315    defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ]
316  }
317
318  if (tp_feature_enable) {
319    defines += tp_defines
320  }
321
322  part_name = "graphic_2d"
323  subsystem_name = "graphic"
324}
325
326## Build render_service.bin
327ohos_executable("render_service") {
328  branch_protector_ret = "pac_ret"
329  sanitize = {
330    cfi = true
331    cfi_cross_dso = true
332    debug = false
333  }
334  sources = [ "core/main.cpp" ]
335
336  include_dirs = [
337    "core",
338    "//commonlibrary/c_utils/base/include",
339    "$graphic_2d_root/frameworks/surface/include",
340    "$graphic_2d_root/utils/color_manager/export",
341  ]
342
343  deps = [
344    ":librender_service",
345    "$graphic_2d_root:libsurface",
346    "$graphic_2d_root/rosen/modules/composer:libcomposer",
347    "$graphic_2d_root/rosen/modules/hyper_graphic_manager:libhyper_graphic_manager",
348    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
349  ]
350
351  external_deps = [
352    "c_utils:utils",
353    "drivers_interface_display:display_commontype_idl_headers",
354    "hilog:libhilog",
355    "ipc:ipc_core",
356  ]
357
358  if (defined(global_parts_info) && defined(global_parts_info.sensors_sensor)) {
359    external_deps += [ "sensor:sensor_interface_native" ]
360  }
361
362  part_name = "graphic_2d"
363  subsystem_name = "graphic"
364}
365