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