• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2024 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    if (graphic_2d_feature_enable_pgo && enable_enhanced_opt) {
28      ldflags += [
29        "-Wl,--aarch64-inline-plt",
30        "-Wl,-mllvm,-enable-partial-inlining",
31      ]
32      if (graphic_2d_feature_enable_codemerge) {
33        ldflags += [
34          "-Wl,-plugin-opt=-split-machine-functions",
35          "-Wl,-mllvm",
36          "-Wl,-fixup-unconditional-branch-unsafely",
37          "-Wl,--no-create-thunks-introduced-by-mfs",
38          "-Wl,-mllvm",
39          "-Wl,-mfs-psi-cutoff=999500",
40          "-Wl,-z",
41          "-Wl,keep-text-section-prefix",
42          "-Wl,--symbol-ordering-file=" + rebase_path(
43                  "${graphic_2d_feature_pgo_path}/librender_service_base.txt",
44                  root_build_dir),
45          "-Wl,--no-warn-symbol-ordering",
46        ]
47      }
48    }
49  }
50}
51
52## Build librender_service.so
53ohos_shared_library("librender_service") {
54  branch_protector_ret = "pac_ret"
55  sanitize = {
56    cfi = true
57    cfi_cross_dso = true
58    cfi_vcall_icall_only = true
59    debug = false
60  }
61  if (enhanced_opt) {
62    configs = [ ":render_service_link_config" ]
63  }
64  defines = []
65  if (graphic_2d_feature_enable_rdo) {
66    defines += [ "RS_ENABLE_RDO" ]
67  }
68  if (graphic_2d_feature_color_gamut_enable) {
69    defines += [ "PADDING_HEIGHT_32" ]
70  } else {
71    defines += []
72  }
73  if (use_musl) {
74    defines += [ "FRAME_AWARE_TRACE" ]
75  }
76  if (use_video_processing_engine) {
77    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
78  }
79  defines += gpu_defines
80  defines += [ "MODULE_RS" ]
81  cflags = [ "-DIMAGE_COLORSPACE_FLAG" ]
82  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
83    defines += [ "IS_OHOS" ]
84    if (!use_libfuzzer) {
85      cflags += [ "-flto=thin" ]
86    }
87    if (enhanced_opt) {
88      if (!use_libfuzzer) {
89        cflags += [ "-fwhole-program-vtables" ]
90      }
91      if (graphic_2d_feature_enable_pgo &&
92          graphic_2d_feature_product != "default") {
93        if (graphic_2d_feature_enable_codemerge) {
94          defines += [ "CM_FEATURE_ENABLE" ]
95        }
96        cflags += [
97          "-fprofile-use=" + rebase_path(
98                  "${graphic_2d_feature_pgo_path}/librender_service.profdata",
99                  root_build_dir),
100          "-Wno-error=backend-plugin",
101          "-Wno-profile-instr-out-of-date",
102          "-Wno-profile-instr-unprofiled",
103          "-mllvm",
104          "-enable-partial-inlining",
105        ]
106      }
107      if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") {
108        cflags += [ "-moutline-atomics" ]
109      }
110    }
111  }
112
113  public_deps = []
114
115  sources = [
116    "core/feature/anco_manager/rs_anco_manager.cpp",
117    "core/feature/capture/rs_surface_capture_task.cpp",
118    "core/feature/dirty/rs_uni_dirty_compute_util.cpp",
119    "core/feature/drm/rs_drm_util.cpp",
120    "core/feature/hdr/rs_hdr_util.cpp",
121    "core/feature/hetero_hdr/rs_hdr_buffer_layer.cpp",
122    "core/feature/hetero_hdr/rs_hdr_manager.cpp",
123    "core/feature/hetero_hdr/rs_hdr_surface_render_node_drawable.cpp",
124    "core/feature/hetero_hdr/rs_hetero_hdr_util.cpp",
125    "core/feature/hwc/hpae_offline/rs_hpae_offline_layer.cpp",
126    "core/feature/hwc/hpae_offline/rs_hpae_offline_processor.cpp",
127    "core/feature/hwc/hpae_offline/rs_hpae_offline_process_syncer.cpp",
128    "core/feature/hwc/hpae_offline/rs_hpae_offline_thread_manager.cpp",
129    "core/feature/hwc/rs_uni_hwc_compute_util.cpp",
130    "core/feature/hpae/rs_hpae_buffer.cpp",
131    "core/feature/hpae/rs_hpae_manager.cpp",
132    "core/feature/hpae/rs_hpae_render_listener.cpp",
133    "core/feature/hyper_graphic_manager/hgm_context.cpp",
134    "core/feature/hyper_graphic_manager/hgm_hardware_utils.cpp",
135    "core/feature/hyper_graphic_manager/rs_vblank_idle_corrector.cpp",
136    "core/feature/lpp/lpp_video_handler.cpp",
137    "core/feature/occlusion_culling/rs_occlusion_handler.cpp",
138    "core/feature/occlusion_culling/rs_occlusion_node.cpp",
139    "core/feature/opinc/rs_opinc_draw_cache.cpp",
140    "core/feature/vrate/rs_vsync_rate_reduce_manager.cpp",
141    "core/feature/window_keyframe/rs_window_keyframe_buffer.cpp",
142    "core/feature/window_keyframe/rs_window_keyframe_node_info.cpp",
143    "core/feature/chipset_vsync/rs_chipset_vsync.cpp",
144    "core/pipeline/hardware_thread/rs_realtime_refresh_rate_manager.cpp",
145    "core/pipeline/hwc/rs_uni_hwc_visitor.cpp",
146    "core/pipeline/main_thread/rs_main_thread.cpp",
147    "core/pipeline/main_thread/rs_render_service.cpp",
148    "core/pipeline/main_thread/rs_render_service_connection.cpp",
149    "core/pipeline/main_thread/rs_render_service_listener.cpp",
150    "core/pipeline/main_thread/rs_render_service_visitor.cpp",
151    "core/pipeline/render_thread/rs_base_render_engine.cpp",
152    "core/pipeline/render_thread/rs_base_render_util.cpp",
153    "core/pipeline/render_thread/rs_composer_adapter.cpp",
154    "core/pipeline/render_thread/rs_divided_render_util.cpp",
155    "core/pipeline/render_thread/rs_physical_screen_processor.cpp",
156    "core/pipeline/render_thread/rs_render_engine.cpp",
157    "core/pipeline/render_thread/rs_virtual_screen_processor.cpp",
158    "core/pipeline/rs_pointer_window_manager.cpp",
159    "core/pipeline/rs_processor.cpp",
160    "core/pipeline/rs_processor_factory.cpp",
161    "core/pipeline/rs_unmarshal_task_manager.cpp",
162    "core/pipeline/slr_scale/rs_slr_scale.cpp",
163    "core/screen_manager/rs_screen.cpp",
164    "core/screen_manager/rs_screen_manager.cpp",
165    "core/system/rs_system_parameters.cpp",
166    "core/transaction/rs_irender_service_connection_ipc_interface_code_access_verifier.cpp",
167    "core/transaction/rs_irender_service_ipc_interface_code_access_verifier.cpp",
168    "core/transaction/rs_render_service_connection_stub.cpp",
169    "core/transaction/rs_render_service_security_utils.cpp",
170    "core/transaction/rs_render_service_stub.cpp",
171    "core/transaction/rs_unmarshal_thread.cpp",
172  ]
173
174  #feature_cfg
175  sources += [
176    "core/feature_cfg/feature_param/extend_feature/capture_base_param.cpp",
177    "core/feature_cfg/feature_param/extend_feature/color_gamut_param.cpp",
178    "core/feature_cfg/feature_param/extend_feature/drm_param.cpp",
179    "core/feature_cfg/feature_param/extend_feature/hfbc_param.cpp",
180    "core/feature_cfg/feature_param/extend_feature/mem_param.cpp",
181    "core/feature_cfg/feature_param/extend_feature/multiscreen_param.cpp",
182    "core/feature_cfg/feature_param/extend_feature/speciallayer_param.cpp",
183    "core/feature_cfg/feature_param/extend_feature/surface_capture_param.cpp",
184    "core/feature_cfg/feature_param/extend_feature/ui_capture_param.cpp",
185    "core/feature_cfg/feature_param/feature_param.cpp",
186    "core/feature_cfg/feature_param/performance_feature/accessibility_param.cpp",
187    "core/feature_cfg/feature_param/performance_feature/dirtyregion_param.cpp",
188    "core/feature_cfg/feature_param/performance_feature/dvsync_param.cpp",
189    "core/feature_cfg/feature_param/performance_feature/filter_param.cpp",
190    "core/feature_cfg/feature_param/performance_feature/hard_cursor_param.cpp",
191    "core/feature_cfg/feature_param/performance_feature/hwc_param.cpp",
192    "core/feature_cfg/feature_param/performance_feature/occlusion_culling_param.cpp",
193    "core/feature_cfg/feature_param/performance_feature/opinc_param.cpp",
194    "core/feature_cfg/feature_param/performance_feature/prevalidate_param.cpp",
195    "core/feature_cfg/feature_param/performance_feature/rotateoffscreen_param.cpp",
196    "core/feature_cfg/feature_param/performance_feature/socperf_param.cpp",
197    "core/feature_cfg/feature_param/performance_feature/subtree_parallel_param.cpp",
198    "core/feature_cfg/feature_param/performance_feature/uifirst_param.cpp",
199    "core/feature_cfg/feature_param/performance_feature/vrate_param.cpp",
200    "core/feature_cfg/graphic_feature_param_manager.cpp",
201    "core/feature_cfg/xml_parser/extend_feature_parser/capture_base_param_parse.cpp",
202    "core/feature_cfg/xml_parser/extend_feature_parser/color_gamut_param_parse.cpp",
203    "core/feature_cfg/xml_parser/extend_feature_parser/drm_param_parse.cpp",
204    "core/feature_cfg/xml_parser/extend_feature_parser/hfbc_param_parse.cpp",
205    "core/feature_cfg/xml_parser/extend_feature_parser/mem_param_parse.cpp",
206    "core/feature_cfg/xml_parser/extend_feature_parser/multiscreen_param_parse.cpp",
207    "core/feature_cfg/xml_parser/extend_feature_parser/speciallayer_param_parse.cpp",
208    "core/feature_cfg/xml_parser/extend_feature_parser/surface_capture_param_parse.cpp",
209    "core/feature_cfg/xml_parser/extend_feature_parser/ui_capture_param_parse.cpp",
210    "core/feature_cfg/xml_parser/performance_feature_parser/accessibility_param_parse.cpp",
211    "core/feature_cfg/xml_parser/performance_feature_parser/dirtyregion_param_parse.cpp",
212    "core/feature_cfg/xml_parser/performance_feature_parser/dvsync_param_parse.cpp",
213    "core/feature_cfg/xml_parser/performance_feature_parser/filter_param_parse.cpp",
214    "core/feature_cfg/xml_parser/performance_feature_parser/hard_cursor_param_parse.cpp",
215    "core/feature_cfg/xml_parser/performance_feature_parser/hwc_param_parse.cpp",
216    "core/feature_cfg/xml_parser/performance_feature_parser/occlusion_culling_param_parse.cpp",
217    "core/feature_cfg/xml_parser/performance_feature_parser/opinc_param_parse.cpp",
218    "core/feature_cfg/xml_parser/performance_feature_parser/prevalidate_param_parse.cpp",
219    "core/feature_cfg/xml_parser/performance_feature_parser/rotateoffscreen_param_parse.cpp",
220    "core/feature_cfg/xml_parser/performance_feature_parser/socperf_param_parse.cpp",
221    "core/feature_cfg/xml_parser/performance_feature_parser/subtree_parallel_param_parse.cpp",
222    "core/feature_cfg/xml_parser/performance_feature_parser/uifirst_param_parse.cpp",
223    "core/feature_cfg/xml_parser/performance_feature_parser/vrate_param_parse.cpp",
224    "core/feature_cfg/xml_parser/xml_parser_base.cpp",
225  ]
226
227  #blurPredict
228  sources += [
229    "$rosen_root/modules/frame_load/src/rs_frame_blur_predict.cpp",
230    "$rosen_root/modules/frame_load/src/rs_frame_deadline_predict.cpp",
231  ]
232
233  #dfx
234  sources += [
235    "core/drawable/dfx/rs_refresh_rate_dfx.cpp",
236    "core/drawable/dfx/rs_skp_capture_dfx.cpp",
237  ]
238
239  if (defined(input_ext_feature_magiccursor) && input_ext_feature_magiccursor) {
240    sources += [
241      "core/pipeline/magic_pointer_render/rs_magic_pointer_render_manager.cpp",
242    ]
243  }
244
245  if (rs_enable_gpu) {
246    sources += [
247      #drawable
248      "core/drawable/dfx/rs_dirty_rects_dfx.cpp",
249      "core/drawable/rs_canvas_drawing_render_node_drawable.cpp",
250      "core/drawable/rs_canvas_render_node_drawable.cpp",
251      "core/drawable/rs_effect_render_node_drawable.cpp",
252      "core/drawable/rs_logical_display_render_node_drawable.cpp",
253      "core/drawable/rs_render_node_drawable.cpp",
254      "core/drawable/rs_root_render_node_drawable.cpp",
255      "core/drawable/rs_screen_render_node_drawable.cpp",
256      "core/drawable/rs_surface_render_node_drawable.cpp",
257      "core/feature/capture/rs_surface_capture_task_parallel.cpp",
258      "core/feature/capture/rs_ui_capture_solo_task_parallel.cpp",
259      "core/feature/capture/rs_ui_capture_task_parallel.cpp",
260      "core/feature/capture/rs_uni_ui_capture.cpp",
261      "core/feature/hwc/rs_uni_hwc_prevalidate_util.cpp",
262      "core/feature/round_corner_display/rs_rcd_render_listener.cpp",
263      "core/feature/round_corner_display/rs_rcd_render_visitor.cpp",
264      "core/feature/round_corner_display/rs_rcd_surface_render_node.cpp",
265      "core/feature/round_corner_display/rs_rcd_surface_render_node_drawable.cpp",
266      "core/feature/round_corner_display/rs_round_corner_config.cpp",
267      "core/feature/round_corner_display/rs_round_corner_display.cpp",
268      "core/feature/round_corner_display/rs_round_corner_display_manager.cpp",
269      "core/feature/uifirst/rs_draw_window_cache.cpp",
270      "core/feature/uifirst/rs_sub_thread_cache.cpp",
271      "core/feature/uifirst/rs_uifirst_frame_rate_control.cpp",
272      "core/feature/uifirst/rs_uifirst_manager.cpp",
273      "core/memory/rs_memory_manager.cpp",
274      "core/pipeline/hardware_thread/rs_hardware_thread.cpp",
275      "core/pipeline/main_thread/rs_uni_render_listener.cpp",
276      "core/pipeline/main_thread/rs_uni_render_visitor.cpp",
277      "core/pipeline/render_thread/rs_draw_frame.cpp",
278      "core/pipeline/render_thread/rs_uni_render_composer_adapter.cpp",
279      "core/pipeline/render_thread/rs_uni_render_engine.cpp",
280      "core/pipeline/render_thread/rs_uni_render_processor.cpp",
281      "core/pipeline/render_thread/rs_uni_render_thread.cpp",
282      "core/pipeline/render_thread/rs_uni_render_util.cpp",
283      "core/pipeline/render_thread/rs_uni_render_virtual_processor.cpp",
284    ]
285  }
286
287  if (graphic_2d_feature_enable_rdo) {
288    sources += [ "core/feature/rdo/rs_rdo.cpp", ]
289  }
290
291  if (rs_enable_eglimage && rs_enable_gpu) {
292    sources += [ "core/feature/gpuComposition/rs_egl_image_manager.cpp" ]
293  }
294
295  if (graphic_2d_feature_enable_vulkan) {
296    sources += [
297      "core/feature/gpuComposition/rs_vk_image_manager.cpp",
298      "core/pipeline/rs_vk_pipeline_config.cpp",
299    ]
300  }
301
302  if ((rs_enable_eglimage && rs_enable_gpu) || graphic_2d_feature_enable_vulkan) {
303    sources += [ "core/feature/gpuComposition/rs_image_manager.cpp" ]
304  }
305
306  if (graphic_2d_feature_product != "wearable") {
307    defines += [ "IS_ENABLE_DRM" ]
308  }
309
310  if (rs_enable_parallel_render && rs_enable_gpu) {
311    sources += [
312      "core/feature/uifirst/rs_sub_thread.cpp",
313      "core/feature/uifirst/rs_sub_thread_manager.cpp",
314      "core/pipeline/parallel_render/rs_render_task.cpp",
315    ]
316  }
317
318  if (defined(graphic_2d_feature_subtree_parallel_enable) && graphic_2d_feature_subtree_parallel_enable
319      && defined(graphic_2d_subtree_configs.subtree_root)) {
320    sources += graphic_2d_subtree_configs.librender_service_subtree_sources
321  }
322
323  if (use_memmgr_plugin || use_memmgr) {
324    sources += [ "core/memory/rs_app_state_listener.cpp" ]
325  }
326
327  if (tp_feature_enable) {
328    sources += [ "core/screen_manager/touch_screen.cpp" ]
329  }
330
331  include_dirs = [
332    "core",
333    "core/feature_cfg",
334    "core/feature_cfg/feature_param",
335    "core/feature_cfg/feature_param/extend_feature",
336    "core/feature_cfg/feature_param/performance_feature",
337    "core/feature_cfg/xml_parser",
338    "core/feature_cfg/xml_parser/extend_feature_parser",
339    "core/feature_cfg/xml_parser/performance_feature_parser",
340    "core/round_corner_display",
341    "$graphic_2d_root/rosen/include",
342    "$graphic_2d_root/rosen/modules/2d_graphics",
343    "$graphic_2d_root/rosen/modules/composer/vsync/include",
344    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
345    "$graphic_2d_root/rosen/modules/frame_report/include",
346    "$graphic_2d_root/rosen/modules/render_frame_trace/include",
347    "$graphic_2d_root/rosen/modules/render_service_base/include",
348    "$graphic_2d_root/rosen/modules/render_service_base/src",
349    "$graphic_2d_root/rosen/modules/utils",
350    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/config",
351    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/frame_rate_manager",
352    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/hgm_screen_manager",
353    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/soft_vsync_manager",
354    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/core/utils",
355    "$graphic_2d_root/rosen/modules/hyper_graphic_manager/frame_rate_vote",
356    "$graphic_2d_root/rosen/modules/create_pixelmap_surface/include",
357    "$graphic_2d_root/rosen/modules/frame_load/include",
358    "$graphic_2d_root/rosen/modules/ressched/include",
359    "$graphic_2d_root/utils/log",
360    "$graphic_2d_root/utils/socketpair/export",
361  ]
362
363  public_deps += [
364    "$graphic_2d_root/rosen/modules/composer:libcomposer",
365  ]
366
367  if (graphic_2d_feature_subtree_parallel_enable && defined(graphic_2d_subtree_configs.subtree_root)) {
368    include_dirs += graphic_2d_subtree_configs.librender_service_subtree_include
369  }
370
371  deps = [
372    "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
373    "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
374    "$graphic_2d_root/rosen/modules/composer/vsync:libvsync",
375    "$graphic_2d_root/rosen/modules/create_pixelmap_surface:create_pixelmap_surface",
376    "$graphic_2d_root/rosen/modules/hyper_graphic_manager:libhyper_graphic_manager",
377    "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace",
378    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
379    "$graphic_2d_root/utils/color_manager:color_manager",
380    "$graphic_2d_root/utils:socketpair",
381  ]
382
383  if (graphic_2d_feature_enable_chipset_vsync) {
384    defines += [ "RS_ENABLE_CHIPSET_VSYNC" ]
385    sources += [ "core/feature/chipset_vsync/rs_chipset_vsync.cpp" ]
386  }
387
388  if (graphic_2d_feature_overlay_display_enable) {
389    sources += [ "core/feature/overlay_display/rs_overlay_display_manager.cpp" ]
390  }
391
392  if (graphic_2d_feature_tv_metadata_enable) {
393    sources += [ "core/feature/tv_metadata/rs_tv_metadata_manager.cpp" ]
394  }
395
396  if (rosen_is_ohos) {
397    sources += [ "$rosen_root/modules/frame_report/src/rs_frame_report.cpp" ]
398  } else if (!is_arkui_x) {
399    sources +=
400        [ "$rosen_root/modules/frame_report/src/mingw/rs_frame_report.cpp" ]
401  }
402
403  #profiler
404  if (rosen_is_ohos && graphic_2d_feature_rs_enable_profiler &&
405      player_framework_enable) {
406    defines += [ "RS_PROFILER_ENABLED" ]
407    defines += [ "RS_PROFILER_BETA_ENABLED" ]
408    sources += [
409      "$rosen_root/modules/render_service_profiler/rs_profiler.cpp",
410      "$rosen_root/modules/render_service_profiler/rs_profiler_beta_recorder.cpp",
411      "$rosen_root/modules/render_service_profiler/rs_profiler_capture_recorder.cpp",
412      "$rosen_root/modules/render_service_profiler/rs_profiler_capturedata.cpp",
413      "$rosen_root/modules/render_service_profiler/rs_profiler_command.cpp",
414      "$rosen_root/modules/render_service_profiler/rs_profiler_file.cpp",
415      "$rosen_root/modules/render_service_profiler/rs_profiler_hrp_service.cpp",
416      "$rosen_root/modules/render_service_profiler/rs_profiler_network.cpp",
417      "$rosen_root/modules/render_service_profiler/rs_profiler_packet.cpp",
418      "$rosen_root/modules/render_service_profiler/rs_profiler_socket.cpp",
419      "$rosen_root/modules/render_service_profiler/rs_profiler_telemetry.cpp",
420      "$rosen_root/modules/render_service_profiler/rs_profiler_test_tree.cpp",
421    ]
422  }
423
424  include_dirs += [ "$graphic_2d_root/rosen/modules/render_service_profiler" ]
425
426  public_external_deps = [ "skia:skia_canvaskit" ]
427
428  if (defined(rs_enable_parallel_upload) && rs_enable_parallel_upload) {
429    sources += [
430      "core/pipeline/parallel_render/resource/rs_upload_resource_thread.cpp",
431    ]
432    include_dirs += [ "$graphic_2d_root/rosen/modules/render_service/core/pipeline/parallel_render/resource" ]
433    if (defined(use_rosen_drawing) && use_rosen_drawing) {
434      sources += [
435        "core/pipeline/parallel_render/resource/rs_resource_helper_drawing.cpp",
436      ]
437    } else {
438      sources += [
439        "core/pipeline/parallel_render/resource/rs_resource_helper_skia.cpp",
440      ]
441    }
442  }
443
444  if (rs_enable_gpu) {
445    public_deps += [ "$graphic_2d_root:libvulkan" ]
446    deps += [
447      "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
448      "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
449    ]
450  }
451
452  if (defined(use_rosen_drawing) && use_rosen_drawing) {
453    defines += [ "USE_ROSEN_DRAWING" ]
454    if (rs_enable_gpu) {
455      defines += [ "RS_ENABLE_GPU" ]
456    }
457    deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ]
458  }
459
460  public_external_deps += [
461    "config_policy:configpolicy_util",
462    "drivers_interface_display:libdisplay_commontype_proxy_1.0",
463    "libxml2:libxml2",
464  ]
465
466  external_deps = [
467    "ability_runtime:app_manager",
468    "cJSON:cjson",
469    "c_utils:utils",
470    "drivers_interface_display:libdisplay_commontype_proxy_2.2",
471    "eventhandler:libeventhandler",
472    "ffrt:libffrt",
473    "graphic_surface:surface",
474    "graphics_effect:graphics_effect_core",
475    "hicollie:libhicollie",
476    "hilog:libhilog",
477    "hisysevent:libhisysevent",
478    "hitrace:hitrace_meter",
479    "init:libbegetutil",
480    "ipc:ipc_core",
481    "libpng:libpng",
482    "qos_manager:qos",
483    "safwk:system_ability_fwk",
484    "samgr:samgr_proxy",
485    "window_manager:libwsutils",
486  ]
487  if (graphic_2d_feature_rs_enable_uni_render) {
488    external_deps += [ "ability_runtime:ability_manager" ]
489  }
490  if (use_video_processing_engine) {
491    external_deps += [ "video_processing_engine:videoprocessingengine" ]
492  }
493
494  if (defined(ddgr_ext_configs)) {
495    libs = ddgr_ext_configs.ddgr_libs
496    defines += ddgr_ext_configs.ddgr_defines
497    sources += ddgr_ext_configs.libddgr_ext_adaptor_sources
498    include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs
499  }
500
501  if (rosen_is_ohos) {
502    external_deps += [
503      "image_framework:image_native",
504      "lz4:liblz4_shared",
505    ]
506  }
507
508  if (defined(global_parts_info) &&
509      defined(global_parts_info.resourceschedule_soc_perf)) {
510    external_deps += [ "soc_perf:socperf_client" ]
511    defines += [ "SOC_PERF_ENABLE" ]
512  }
513
514  if (defined(global_parts_info) &&
515      defined(global_parts_info.resourceschedule_resource_schedule_service)) {
516    external_deps += [ "resource_schedule_service:ressched_client" ]
517    defines += [ "RES_SCHED_ENABLE" ]
518  }
519
520  if (defined(global_parts_info) && defined(global_parts_info.sensors_sensor)) {
521    external_deps += [ "sensor:sensor_interface_native" ]
522    defines += [ "RS_SUBSCRIBE_SENSOR_ENABLE" ]
523  }
524
525  if (accessibility_enable) {
526    external_deps += [ "accessibility:accessibilityconfig" ]
527    external_deps += [ "accessibility:accessibility_common" ]
528    defines += accessibility_defines
529  }
530
531  if (use_memmgr_plugin) {
532    external_deps += [ "memmgr:memmgrclient" ]
533  } else if (use_memmgr) {
534    external_deps += [ "memmgr:memmgrclient" ]
535  }
536
537  if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) {
538    defines += [ "ENABLE_IPC_SECURITY" ]
539    external_deps += [ "access_token:libaccesstoken_sdk" ]
540  }
541
542  if (rosen_is_ohos && defined(enable_ipc_security_access_counter) &&
543      enable_ipc_security_access_counter) {
544    defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ]
545  }
546
547  if (tp_feature_enable) {
548    defines += tp_defines
549  }
550
551  part_name = "graphic_2d"
552  subsystem_name = "graphic"
553}
554
555## Build render_service.bin
556ohos_executable("render_service") {
557  branch_protector_ret = "pac_ret"
558  sanitize = {
559    cfi = true
560    cfi_cross_dso = true
561    cfi_vcall_icall_only = true
562    debug = false
563    if (rosen_is_ohos) {
564      boundary_sanitize = true
565      integer_overflow = true
566      ubsan = true
567    }
568  }
569  sources = [ "core/main.cpp" ]
570
571  include_dirs = [
572    "core",
573    "$graphic_2d_root/interfaces/inner_api/common",
574    "$graphic_2d_root/utils/color_manager/export",
575    "$graphic_2d_root/utils/socketpair/export",
576  ]
577
578  deps = [
579    ":librender_service",
580    "$graphic_2d_root/rosen/modules/composer:libcomposer",
581    "$graphic_2d_root/rosen/modules/composer/vsync:libvsync",
582    "$graphic_2d_root/rosen/modules/hyper_graphic_manager:libhyper_graphic_manager",
583    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
584    "$graphic_2d_root/utils:socketpair",
585  ]
586
587  external_deps = [
588    "c_utils:utils",
589    "drivers_interface_display:libdisplay_commontype_proxy_1.0",
590    "eventhandler:libeventhandler",
591    "hilog:libhilog",
592    "ipc:ipc_core",
593    "samgr:samgr_proxy",
594  ]
595
596  if (defined(global_parts_info) && defined(global_parts_info.sensors_sensor)) {
597    external_deps += [ "sensor:sensor_interface_native" ]
598  }
599
600  part_name = "graphic_2d"
601  subsystem_name = "graphic"
602}
603