• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 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("//foundation/graphic/graphic_3d/lume/lume_config.gni")
17
18declare_args() {
19  RENDER_BUILD_GLES=true
20  RENDER_BUILD_VULKAN=false
21  RENDER_EMBEDDED_ASSETS_ENABLED=true
22  RENDER_ROFS = "rofsRndr"
23}
24
25config("lume_render_api") {
26  include_dirs = [
27    "api",
28  ]
29
30  defines = []
31
32  if (BUILDTYPE == "Release") {
33    defines += [
34      "PLUGIN_LOG_NO_DEBUG=0",
35    ]
36  }
37
38  if (BUILDTYPE == "MinSizeRel") {
39    defines += [
40      "PLUGIN_LOG_NO_DEBUG=0"
41    ]
42  }
43
44  if (BUILDTYPE == "RelWithDebInfo") {
45    defines += [
46      "PLUGIN_LOG_NO_DEBUG=0"
47    ]
48  }
49
50  if (LUME_OHOS_BUILD) {
51    defines += [
52      "__OHOS_PLATFORM__",
53    ]
54  }
55}
56
57config("lume_render_config") {
58  include_dirs = [
59    "3rdparty/",
60    "src/",
61  ]
62
63  defines = [
64    "RENDER_PUBLIC=__attribute__((visibility(\"default\")))",
65    "RENDER_DEV_ENABLED=0",
66    "RENDER_PERF_ENABLED=0",
67    "RENDER_TESTS_ENABLED=0",
68    "RENDER_LOG_TO_CONSOLE=1",
69    "RENDER_LOG_TO_FILE",
70    "RENDER_LOG_TO_DEBUG_OUTPUT=0",
71    "RENDER_VULKAN_VALIDATION_ENABLED=0",
72    "RENDER_DEBUG_GPU_RESOURCE_IDS=0",
73    "RENDER_DEBUG_MARKERS_ENABLED=0",
74    "RENDER_DEBUG_COMMAND_MARKERS_ENABLED=0",
75    "RENDER_GL_FLIP_Y_SWAPCHAIN=0",
76    "RENDER_GL_DEBUG=0",
77    "RENDER_GPU_TIMESTAMP_QUERIES_ENABLED=0",
78    "RENDER_VULKAN_RT_ENABLED=0",
79    "RENDER_BUILDTYPE=${BUILDTYPE}",
80    "CORE_USE_COMPILER_GENERATED_STATIC_LIST=1",
81    "CORE_STATIC_PLUGIN_HEADER=${CORE_STATIC_PLUGIN_HEADER}"
82  ]
83
84  if (RENDER_EMBEDDED_ASSETS_ENABLED) {
85    defines += [
86      "RENDER_EMBEDDED_ASSETS_ENABLED=1"
87    ]
88  }
89
90  if (RENDER_BUILD_GLES) {
91    defines += [
92      "RENDER_HAS_GLES_BACKEND=1"
93    ]
94  }
95
96  if (RENDER_BUILD_VULKAN) {
97    defines += [
98      "RENDER_HAS_VULKAN_BACKEND=1",
99      "VMA_STATS_STRING_ENABLED=0",
100      "VMA_STATIC_VULKAN_FUNCTIONS=0"
101    ]
102
103    if (LUME_OHOS_BUILD) {
104      defines += [
105        "RENDER_VULKAN_VALIDATION_ENABLE_WARNINGS=0",
106      ]
107    }
108  }
109  defines += [
110    "RENDER_PUBLIC=__attribute__((visibility(\"default\")))"
111  ]
112
113  ldflags = [
114    "-Wl,--undefined=AGPRender_StaticPlugin"
115  ]
116}
117
118ohos_source_set("lume_render_src") {
119  public_configs = [
120    ":lume_render_config",
121    ":lume_render_api",
122    "${LUME_CORE_PATH}:lume_base_api",
123    "${LUME_CORE_PATH}:lume_engine_api",
124    "${LUME_CORE_PATH}:lume_default"
125  ]
126
127  sources = [
128    "version.cpp",
129    "src/default_engine_constants.h",
130    "src/render_context.h",
131    "src/render_context.cpp",
132    "src/render_graph.h",
133    "src/render_graph.cpp",
134    "src/renderer.h",
135    "src/renderer.cpp",
136    "src/render_backend.h",
137    "src/resource_handle_impl.h",
138    "src/resource_handle_impl.cpp",
139
140    "src/device/device.h",
141    "src/device/device.cpp",
142    "src/device/pipeline_state_object.h",
143    "src/device/swapchain.h",
144    "src/device/gpu_resource_handle_util.h",
145    "src/device/gpu_resource_handle_util.cpp",
146
147    "src/device/gpu_acceleration_structure.h",
148    "src/device/gpu_buffer.h",
149    "src/device/gpu_image.h",
150    "src/device/gpu_program.h",
151    "src/device/gpu_program_util.h",
152    "src/device/gpu_program_util.cpp",
153    "src/device/gpu_resource_desc_flag_validation.h",
154    "src/device/gpu_resource_util.h",
155    "src/device/gpu_resource_util.cpp",
156    "src/device/gpu_sampler.h",
157    "src/device/shader_module.h",
158    "src/device/gpu_resource_manager.h",
159    "src/device/gpu_resource_manager.cpp",
160    "src/device/gpu_resource_manager_base.h",
161    "src/device/gpu_resource_manager_base.inl",
162    "src/device/shader_manager.h",
163    "src/device/shader_manager.cpp",
164    "src/device/shader_pipeline_binder.h",
165    "src/device/shader_pipeline_binder.cpp",
166    "src/device/render_frame_sync.h",
167
168    "src/loader/json_util.h",
169    "src/loader/json_format_serialization.h",
170    "src/loader/pipeline_layout_loader.h",
171    "src/loader/pipeline_layout_loader.cpp",
172    "src/loader/render_node_graph_loader.h",
173    "src/loader/render_node_graph_loader.cpp",
174    "src/loader/render_data_loader.h",
175    "src/loader/render_data_loader.cpp",
176    "src/loader/render_data_configuration_loader.h",
177    "src/loader/render_data_configuration_loader.cpp",
178    "src/loader/shader_data_loader.h",
179    "src/loader/shader_data_loader.cpp",
180    "src/loader/shader_loader.h",
181    "src/loader/shader_loader.cpp",
182    "src/loader/shader_state_loader.h",
183    "src/loader/shader_state_loader.cpp",
184    "src/loader/shader_state_loader_util.h",
185    "src/loader/shader_state_loader_util.cpp",
186    "src/loader/vertex_input_declaration_loader.h",
187    "src/loader/vertex_input_declaration_loader.cpp",
188
189    "src/perf/cpu_perf_scope.h",
190    "src/perf/cpu_timer.h",
191    "src/perf/cpu_timer.cpp",
192    "src/perf/gpu_query.h",
193    "src/perf/gpu_query_manager.h",
194    "src/perf/gpu_query_manager.cpp",
195
196    "src/plugin/static_plugin.cpp",
197    #"src/plugin/static_registry.cpp",
198
199    "src/nodecontext/node_context_pso_manager.h",
200    "src/nodecontext/node_context_pso_manager.cpp",
201    "src/nodecontext/node_context_pool_manager.h",
202    "src/nodecontext/node_context_descriptor_set_manager.h",
203    "src/nodecontext/node_context_descriptor_set_manager.cpp",
204    "src/nodecontext/render_command_list.h",
205    "src/nodecontext/render_command_list.cpp",
206    "src/nodecontext/render_barrier_list.h",
207    "src/nodecontext/render_barrier_list.cpp",
208    "src/nodecontext/render_node_util.h",
209    "src/nodecontext/render_node_util.cpp",
210    "src/nodecontext/render_node_context_manager.h",
211    "src/nodecontext/render_node_context_manager.cpp",
212    "src/nodecontext/pipeline_descriptor_set_binder.h",
213    "src/nodecontext/pipeline_descriptor_set_binder.cpp",
214    "src/nodecontext/render_node_graph_node_store.h",
215    "src/nodecontext/render_node_graph_manager.h",
216    "src/nodecontext/render_node_graph_manager.cpp",
217    "src/nodecontext/render_node_graph_share_manager.h",
218    "src/nodecontext/render_node_graph_share_manager.cpp",
219    "src/nodecontext/render_node_manager.h",
220    "src/nodecontext/render_node_manager.cpp",
221    "src/nodecontext/render_node_parser_util.h",
222    "src/nodecontext/render_node_parser_util.cpp",
223
224    "src/datastore/render_data_store_manager.h",
225    "src/datastore/render_data_store_manager.cpp",
226    "src/datastore/render_data_store_default_acceleration_structure_staging.h",
227    "src/datastore/render_data_store_default_acceleration_structure_staging.cpp",
228    "src/datastore/render_data_store_default_staging.h",
229    "src/datastore/render_data_store_default_staging.cpp",
230    "src/datastore/render_data_store_default_gpu_resource_data_copy.h",
231    "src/datastore/render_data_store_default_gpu_resource_data_copy.cpp",
232    "src/datastore/render_data_store_fullscreen_shader.h",
233    "src/datastore/render_data_store_fullscreen_shader.cpp",
234    "src/datastore/render_data_store_pod.h",
235    "src/datastore/render_data_store_pod.cpp",
236
237    "src/node/core_render_node_factory.h",
238    "src/node/core_render_node_factory.cpp",
239    "src/node/render_bloom.h",
240    "src/node/render_bloom.cpp",
241    "src/node/render_blur.h",
242    "src/node/render_blur.cpp",
243    "src/node/render_node_bloom.h",
244    "src/node/render_node_bloom.cpp",
245    "src/node/render_node_combined_post_process.h",
246    "src/node/render_node_combined_post_process.cpp",
247    "src/node/render_node_compute_generic.h",
248    "src/node/render_node_compute_generic.cpp",
249    "src/node/render_node_create_gpu_images.h",
250    "src/node/render_node_create_gpu_images.cpp",
251    "src/node/render_node_default_acceleration_structure_staging.h",
252    "src/node/render_node_default_acceleration_structure_staging.cpp",
253    "src/node/render_node_fullscreen_generic.h",
254    "src/node/render_node_fullscreen_generic.cpp",
255    "src/node/render_node_staging.h",
256    "src/node/render_node_staging.cpp",
257    "src/node/render_node_back_buffer.h",
258    "src/node/render_node_back_buffer.cpp",
259    "src/node/render_node_back_buffer_gpu_buffer.h",
260    "src/node/render_node_back_buffer_gpu_buffer.cpp",
261
262    "src/util/frustum_util.h",
263    "src/util/frustum_util.cpp",
264    "src/util/linear_allocator.h",
265    "src/util/log.h",
266    "src/util/render_util.h",
267    "src/util/render_util.cpp",
268    "src/util/string_util.h",
269  ]
270
271  if (RENDER_BUILD_GLES) {
272    sources += [
273      "src/gles/device_gles.h",
274      "src/gles/device_gles.cpp",
275      "src/gles/gl_functions.h",
276      "src/gles/egl_state.h",
277      "src/gles/egl_state.cpp",
278      "src/gles/wgl_state.h",
279      "src/gles/wgl_state.cpp",
280      "src/gles/surface_information.h",
281      "src/gles/swapchain_gles.h",
282      "src/gles/swapchain_gles.cpp",
283      "src/gles/pipeline_state_object_gles.h",
284      "src/gles/pipeline_state_object_gles.cpp",
285      "src/gles/gpu_buffer_gles.h",
286      "src/gles/gpu_buffer_gles.cpp",
287      "src/gles/gpu_image_gles.h",
288      "src/gles/gpu_image_gles.cpp",
289      "src/gles/gpu_program_gles.h",
290      "src/gles/gpu_program_gles.cpp",
291      "src/gles/gpu_sampler_gles.h",
292      "src/gles/gpu_sampler_gles.cpp",
293      "src/gles/gpu_query_gles.h",
294      "src/gles/gpu_query_gles.cpp",
295      "src/gles/gpu_resource_util_gles.h",
296      "src/gles/gpu_resource_util_gles.cpp",
297      "src/gles/spirv_cross_helpers_gles.cpp",
298      "src/gles/spirv_cross_helpers_gles.h",
299      "src/gles/spirv_cross_helper_structs_gles.h",
300      "src/gles/shader_module_gles.h",
301      "src/gles/shader_module_gles.cpp",
302      "src/gles/node_context_pool_manager_gles.h",
303      "src/gles/node_context_pool_manager_gles.cpp",
304      "src/gles/node_context_descriptor_set_manager_gles.h",
305      "src/gles/node_context_descriptor_set_manager_gles.cpp",
306      "src/gles/render_backend_gles.h",
307      "src/gles/render_backend_gles.cpp",
308      "src/gles/render_frame_sync_gles.h",
309      "src/gles/render_frame_sync_gles.cpp",
310    ]
311  }
312
313  if (RENDER_BUILD_VULKAN) {
314    sources += [
315      "src/vulkan/device_vk.h",
316      "src/vulkan/device_vk.cpp",
317      "src/vulkan/swapchain_vk.h",
318      "src/vulkan/swapchain_vk.cpp",
319      "src/vulkan/gpu_memory_allocator_vk.h",
320      "src/vulkan/gpu_memory_allocator_vk.cpp",
321      "src/vulkan/pipeline_state_object_vk.h",
322      "src/vulkan/pipeline_state_object_vk.cpp",
323
324      "src/vulkan/validate_vk.h",
325      "src/vulkan/create_functions_vk.h",
326      "src/vulkan/create_functions_vk.cpp",
327      "src/vulkan/pipeline_create_functions_vk.h",
328      "src/vulkan/pipeline_create_functions_vk.cpp",
329
330      "src/vulkan/gpu_acceleration_structure_vk.h",
331      "src/vulkan/gpu_acceleration_structure_vk.cpp",
332      "src/vulkan/gpu_buffer_vk.h",
333      "src/vulkan/gpu_buffer_vk.cpp",
334      "src/vulkan/gpu_image_vk.h",
335      "src/vulkan/gpu_image_vk.cpp",
336      "src/vulkan/gpu_program_vk.h",
337      "src/vulkan/gpu_program_vk.cpp",
338      "src/vulkan/gpu_sampler_vk.h",
339      "src/vulkan/gpu_sampler_vk.cpp",
340      "src/vulkan/gpu_resource_util_vk.h",
341      "src/vulkan/gpu_resource_util_vk.cpp",
342      "src/vulkan/platform_hardware_buffer_util_vk.h",
343      "src/vulkan/platform_hardware_buffer_util_vk.cpp",
344      "src/vulkan/shader_module_vk.h",
345      "src/vulkan/shader_module_vk.cpp",
346
347      "src/vulkan/node_context_pool_manager_vk.h",
348      "src/vulkan/node_context_pool_manager_vk.cpp",
349      "src/vulkan/node_context_descriptor_set_manager_vk.h",
350      "src/vulkan/node_context_descriptor_set_manager_vk.cpp",
351      "src/vulkan/render_backend_vk.h",
352      "src/vulkan/render_backend_vk.cpp",
353      "src/vulkan/render_frame_sync_vk.h",
354      "src/vulkan/render_frame_sync_vk.cpp",
355
356      "src/vulkan/gpu_query_vk.h",
357      "src/vulkan/gpu_query_vk.cpp",
358    ]
359
360    if (LUME_OHOS_BUILD) {
361      # platform source
362      sources += [
363      ]
364    }
365  }
366  external_deps = [
367    "c_utils:utils",
368    "graphic_2d:libgl",
369  ]
370  part_name = "graphic_3d"
371  subsystem_name = "graphic"
372}
373
374lume_compile_shader("lume_render_compile_shader")
375{
376  script = "${LUME_CORE_PATH}/tools/CompilerShader.sh"
377  outputs = [ "$target_gen_dir" ]
378  tool_path = "$target_gen_dir"
379  dest_gen_path = "$target_gen_dir/assets"
380  asset_path = rebase_path("./assets/render", root_build_dir)
381  shader_path = "${dest_gen_path}/shaders"
382  include_path = rebase_path("api", root_build_dir)
383  compileShader_deps=["${LUME_BINARY_PATH}/LumeShaderCompiler:lume_binary_shader_compile"]
384}
385
386lume_rofs("lume_render_rofs")
387{
388  output_obj= ""
389  if (target_cpu == "arm") {
390    output_obj = "${RENDER_ROFS}_32.o"
391  }
392
393  if (target_cpu == "arm64") {
394    output_obj = "${RENDER_ROFS}_64.o"
395  }
396
397  outputs = "${target_gen_dir}/assets/${output_obj}"
398
399  tool_path = "$target_gen_dir"
400  root = "/"
401  bin_name = "BINARYDATAFORRENDER"
402  size_name = "SIZEOFDATAFORRENDER"
403  base_name = RENDER_ROFS
404  script = "${LUME_CORE_PATH}/tools/CompilerAsset.sh"
405  copy_path = "$target_gen_dir/assets"
406  compileShader_deps = [
407    ":lume_render_compile_shader",
408    "${LUME_BINARY_PATH}/lumeassetcompiler:lume_binary_assets_compile"
409    ]
410  file_extension = "\".spv;.json;.lsb;.shader;.shadergs;.shadervid;.shaderpl;.rng;.gl;.gles\""
411}
412
413source_set("lume_render_rofs_obj") {
414  output_obj = ""
415  if (target_cpu == "arm") {
416    output_obj = "${RENDER_ROFS}_32.o"
417  }
418
419  if (target_cpu == "arm64") {
420    output_obj = "${RENDER_ROFS}_64.o"
421  }
422
423  sources = [
424    "${target_gen_dir}/assets/${output_obj}"
425  ]
426  deps = [
427    ":lume_render_rofs"
428  ]
429}
430
431ohos_static_library("libAGPRender") {
432  public_deps = [
433    ":lume_render_src",
434  ]
435
436  if (RENDER_EMBEDDED_ASSETS_ENABLED) {
437    deps = [
438      ":lume_render_rofs_obj"
439    ]
440  }
441  part_name = "graphic_3d"
442  subsystem_name = "graphic"
443}
444
445config("lume_render_plugin_config") {
446  defines = [
447    "CORE_PLUGIN=1"
448  ]
449}
450
451ohos_source_set("lume_render_src_plugin") {
452  sources = [
453    "src/plugin/dynamic_plugin.cpp",
454    "src/plugin/dynamic_registry.cpp",
455    "src/util/json.cpp",
456  ]
457
458  configs = [
459    ":lume_render_plugin_config",
460    ":lume_render_api",
461    "${LUME_CORE_PATH}:lume_base_api",
462    "${LUME_CORE_PATH}:lume_engine_api",
463    "${LUME_CORE_PATH}:lume_default"
464  ]
465}
466
467ohos_shared_library(LIB_RENDER) {
468  public_deps = [
469    ":lume_render_src_plugin",
470    ":libAGPRender",
471  ]
472
473  part_name = "graphic_3d"
474  subsystem_name = "graphic"
475}
476