From a1f3370704e0a95ed766dbba9b1637b9cf49f364 Mon Sep 17 00:00:00 2001 From: Bart Louwers Date: Tue, 9 Dec 2025 18:09:24 +0100 Subject: [PATCH] Split out backend specific files to .cmake files (#3995) --- CMakeLists.txt | 479 +-------------------------------------------- cmake/metal.cmake | 98 ++++++++++ cmake/opengl.cmake | 146 ++++++++++++++ cmake/vulkan.cmake | 97 +++++++++ cmake/webgpu.cmake | 121 ++++++++++++ 5 files changed, 466 insertions(+), 475 deletions(-) create mode 100644 cmake/metal.cmake create mode 100644 cmake/opengl.cmake create mode 100644 cmake/vulkan.cmake create mode 100644 cmake/webgpu.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c0935c5f..329c66e62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,11 +38,6 @@ project("MapLibre Native" LANGUAGES CXX C) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER MapLibre) -set( - MEMORYCHECK_COMMAND_OPTIONS - "--leak-check=full --gen-suppressions=all --error-exitcode=1 --suppressions=${PROJECT_SOURCE_DIR}/scripts/valgrind.sup" -) - include(CTest) if(NOT CMAKE_BUILD_TYPE) @@ -977,466 +972,10 @@ list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mbgl/plugin/plugin_layer_factory.cpp ) - -if(MLN_WITH_OPENGL) - message(STATUS "Configuring GL-Native with OpenGL renderer backend") - target_compile_definitions( - mbgl-core - PUBLIC - MLN_RENDER_BACKEND_OPENGL=1 - "MLN_USE_UNORDERED_DENSE=$" - ) - list(APPEND - INCLUDE_FILES - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderable_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderer_backend.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/platform/gl_functions.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_manifest.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_group_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/prelude.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background_pattern.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/circle.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/clipping_mask.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_box.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_circle.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_geometry.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_symbol_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/debug.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_pattern.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_pattern.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_triangulated.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion_pattern.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade_prepare.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_gradient.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_pattern.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_sdf.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator_textured.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/raster.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_sdf.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_text_and_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/wide_vector.hpp - ) - list(APPEND - SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/defines.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/draw_scope_resource.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/extension.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/framebuffer.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderer_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/state.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/types.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/platform/gl_functions.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/clipping_mask_program.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program_base.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.hpp - ) - - list(APPEND INCLUDE_FILES - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/background_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/circle_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/collision_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/custom_drawable_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/debug_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_extrusion_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_texture_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_prepare_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/line_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/location_indicator_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/raster_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_defines.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/symbol_layer_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/widevector_ubo.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/custom_drawable_layer.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/custom_drawable_layer_factory.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_program_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/buffer_allocator.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl_builder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/layer_group_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/uniform_buffer_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/vertex_attribute_gl.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/gl/texture2d.hpp - ) - list(APPEND SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_info.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_program_gl.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/buffer_allocator.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_builder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_impl.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/layer_group_gl.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture2d.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform_buffer_gl.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_attribute_gl.cpp - ) -endif() - -if(MLN_WITH_METAL) - message(STATUS "Configuring Metal renderer backend") - target_compile_definitions( - mbgl-core - PUBLIC - MLN_RENDER_BACKEND_METAL=1 - "MLN_USE_UNORDERED_DENSE=$" - ) - list(APPEND - INCLUDE_FILES - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/command_encoder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/context.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable_builder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/index_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/layer_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/mtl_fwd.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/offscreen_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/render_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderer_backend.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderable_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/texture2d.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/tile_layer_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/uniform_buffer.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/upload_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_attribute.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/background.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/circle.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/clipping_mask.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/common.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/collision.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_geometry.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_symbol_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/debug.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill_extrusion.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade_prepare.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/line.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/location_indicator.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/raster.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_program.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/symbol.hpp - ) - list(APPEND - SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/command_encoder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/context.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_impl.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_builder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/index_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/layer_group.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/mtl.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/offscreen_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/renderer_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/texture2d.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/render_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/tile_layer_group.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/uniform_buffer.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/upload_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_attribute.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/shader_program.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/background.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/circle.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/collision.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/clipping_mask.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_geometry.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_symbol_icon.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/debug.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill_extrusion.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade_prepare.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/line.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/location_indicator.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/raster.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/symbol.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/widevector.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/mtl/custom_layer_render_parameters.cpp - ) - - find_library(METAL_FRAMEWORK Metal) - if (METAL_FRAMEWORK) - target_link_libraries(mbgl-core PRIVATE ${METAL_FRAMEWORK}) - endif() - -endif() - -if(MLN_WITH_VULKAN) - message(STATUS "Configuring Vulkan renderer backend") - - target_compile_definitions( - mbgl-core - PUBLIC - MLN_RENDER_BACKEND_VULKAN=1 - ) - - list(APPEND - INCLUDE_FILES - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/command_encoder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/context.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/descriptor_set.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable_builder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/index_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/layer_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/offscreen_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/pipeline.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderer_backend.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/render_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderable_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/texture2d.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/tile_layer_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/uniform_buffer.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/upload_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_attribute.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_group.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_program.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/background.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/circle.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/clipping_mask.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/collision.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/common.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_geometry.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_symbol_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill_extrusion.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade_prepare.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/line.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/location_indicator.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/raster.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/symbol.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/widevector.hpp - ) - - list(APPEND - SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/command_encoder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/context.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/descriptor_set.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_builder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_impl.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/index_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/layer_group.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/offscreen_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/pipeline.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderer_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/render_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderable_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/texture2d.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/tile_layer_group.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/uniform_buffer.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/upload_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_attribute.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/shader_program.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/background.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/circle.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/clipping_mask.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/collision.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_geometry.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_symbol_icon.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/debug.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill_extrusion.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade_prepare.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/line.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/location_indicator.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/raster.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/symbol.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/widevector.cpp - ) -endif() - -if(MLN_WITH_WEBGPU) - message(STATUS "Configuring WebGPU renderer backend") - - target_compile_definitions( - mbgl-core - PUBLIC - MLN_RENDER_BACKEND_WEBGPU=1 - ) - - list(APPEND - SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/headless_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/draw_scope_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/wgsl_preprocessor.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/background.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/circle.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/clipping_mask.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/collision.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_geometry.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_symbol_icon.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/debug.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill_extrusion.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade_prepare.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/line.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/location_indicator.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/raster.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/symbol.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/widevector.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_attribute.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/offscreen_texture.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/tile_layer_group.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/layer_group.cpp - ) - - list(APPEND - INCLUDE_FILES - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/command_encoder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/context.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable_builder.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/index_buffer_resource.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/render_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/renderer_backend.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/shader_program.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/background.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/circle.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/clipping_mask.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/collision.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/common.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_geometry.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_symbol_icon.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/debug.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill_extrusion.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap_texture.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade_prepare.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/line.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/location_indicator.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/raster.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/symbol.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/widevector.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/texture2d.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/uniform_buffer.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/upload_pass.hpp - ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/vertex_buffer_resource.hpp - ) - - list(APPEND - SRC_FILES - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/index_buffer_resource.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/render_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/upload_pass.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp - ) - - # Include WebGPU vendor configuration (Dawn or wgpu) - include(${PROJECT_SOURCE_DIR}/vendor/webgpu.cmake) - - # Include Dawn integration when requested - if(MLN_WEBGPU_IMPL_DAWN) - include(${PROJECT_SOURCE_DIR}/vendor/dawn.cmake) - if(TARGET mbgl-vendor-dawn) - target_link_libraries(mbgl-core PRIVATE mbgl-vendor-dawn) - endif() - elseif(MLN_WEBGPU_IMPL_WGPU) - # Include wgpu-native integration - include(${PROJECT_SOURCE_DIR}/vendor/wgpu.cmake) - if(TARGET mbgl-vendor-wgpu) - target_link_libraries(mbgl-core PRIVATE mbgl-vendor-wgpu) - # Add WebGPU-Cpp implementation file (required for wgpu-native backend) - list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/webgpu_cpp_impl.cpp) - endif() - endif() -endif() +include(${PROJECT_SOURCE_DIR}/cmake/opengl.cmake) +include(${PROJECT_SOURCE_DIR}/cmake/metal.cmake) +include(${PROJECT_SOURCE_DIR}/cmake/vulkan.cmake) +include(${PROJECT_SOURCE_DIR}/cmake/webgpu.cmake) list(APPEND SRC_FILES @@ -1498,16 +1037,6 @@ set_source_files_properties( $<$,$>:-Wno-deprecated-declarations> ) -# gcc 12 compiler bug, remove when fixed -# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651 -set_source_files_properties( - ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/compound_expression.cpp - ${PROJECT_SOURCE_DIR}/src/mbgl/util/font_stack.cpp - PROPERTIES - COMPILE_FLAGS - $<$,$,12.0.0>,$,13.0.0>>:-Wno-restrict> -) - source_group(TREE ${PROJECT_SOURCE_DIR}/include FILES ${INCLUDE_FILES}) source_group(TREE ${PROJECT_SOURCE_DIR}/src FILES ${SRC_FILES}) diff --git a/cmake/metal.cmake b/cmake/metal.cmake new file mode 100644 index 000000000..31489c931 --- /dev/null +++ b/cmake/metal.cmake @@ -0,0 +1,98 @@ +if(NOT MLN_WITH_METAL) + return() +endif() + +message(STATUS "Configuring Metal renderer backend") +target_compile_definitions( + mbgl-core + PUBLIC + MLN_RENDER_BACKEND_METAL=1 + "MLN_USE_UNORDERED_DENSE=$" +) +list(APPEND + INCLUDE_FILES + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/command_encoder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/context.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/drawable_builder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/index_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/layer_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/mtl_fwd.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/offscreen_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/render_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderer_backend.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/renderable_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/texture2d.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/tile_layer_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/uniform_buffer.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/upload_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_attribute.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/mtl/vertex_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/background.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/circle.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/clipping_mask.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/common.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/collision.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_geometry.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/custom_symbol_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/debug.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/fill_extrusion.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/heatmap_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/hillshade_prepare.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/line.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/location_indicator.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/raster.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/shader_program.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/mtl/symbol.hpp +) +list(APPEND + SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/command_encoder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/context.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_impl.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/drawable_builder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/index_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/layer_group.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/mtl.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/offscreen_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/renderer_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/texture2d.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/render_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/tile_layer_group.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/uniform_buffer.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/upload_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_attribute.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/mtl/vertex_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/shader_program.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/background.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/circle.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/collision.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/clipping_mask.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_geometry.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/custom_symbol_icon.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/debug.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/fill_extrusion.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/heatmap_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/hillshade_prepare.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/line.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/location_indicator.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/raster.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/symbol.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/mtl/widevector.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/style/layers/mtl/custom_layer_render_parameters.cpp +) + +find_library(METAL_FRAMEWORK Metal) +if (METAL_FRAMEWORK) + target_link_libraries(mbgl-core PRIVATE ${METAL_FRAMEWORK}) +endif() diff --git a/cmake/opengl.cmake b/cmake/opengl.cmake new file mode 100644 index 000000000..eec3ee4d9 --- /dev/null +++ b/cmake/opengl.cmake @@ -0,0 +1,146 @@ +if(NOT MLN_WITH_OPENGL) + return() +endif() + +message(STATUS "Configuring OpenGL ES backend") +target_compile_definitions( + mbgl-core + PUBLIC + MLN_RENDER_BACKEND_OPENGL=1 + "MLN_USE_UNORDERED_DENSE=$" +) +list(APPEND + INCLUDE_FILES + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderable_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/renderer_backend.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/platform/gl_functions.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_manifest.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_group_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/prelude.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/background_pattern.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/circle.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/clipping_mask.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_box.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/collision_circle.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_geometry.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/custom_symbol_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/debug.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_pattern.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_pattern.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_outline_triangulated.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/fill_extrusion_pattern.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/heatmap_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade_prepare.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/hillshade.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_gradient.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_pattern.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/line_sdf.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/location_indicator_textured.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/raster.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_sdf.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/symbol_text_and_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/wide_vector.hpp +) +list(APPEND + SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/attribute.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/command_encoder.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/context.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/fence.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/debugging_extension.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/defines.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/draw_scope_resource.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/enum.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/extension.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/framebuffer.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/index_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/object.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/offscreen_texture.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/render_pass.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderbuffer_resource.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/renderer_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/resource_pool.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/state.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/timestamp_query_extension.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/types.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/upload_pass.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/value.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_array.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/platform/gl_functions.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/clipping_mask_program.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program_base.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/program.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/legacy/programs.hpp +) + +list(APPEND INCLUDE_FILES + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/background_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/circle_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/collision_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/custom_drawable_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/debug_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/fill_extrusion_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/heatmap_texture_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/hillshade_prepare_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/line_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/location_indicator_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/raster_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/shader_defines.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/symbol_layer_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/widevector_ubo.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/style/layers/custom_drawable_layer.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/layermanager/custom_drawable_layer_factory.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/gl/shader_program_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/buffer_allocator.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/drawable_gl_builder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/layer_group_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/uniform_buffer_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/vertex_attribute_gl.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/gl/texture2d.hpp +) +list(APPEND SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_info.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/gl/shader_program_gl.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/buffer_allocator.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_builder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/drawable_gl_impl.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/layer_group_gl.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/texture2d.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/uniform_buffer_gl.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/gl/vertex_attribute_gl.cpp +) diff --git a/cmake/vulkan.cmake b/cmake/vulkan.cmake new file mode 100644 index 000000000..95da2aced --- /dev/null +++ b/cmake/vulkan.cmake @@ -0,0 +1,97 @@ +if(NOT MLN_WITH_VULKAN) + return() +endif() + +message(STATUS "Configuring Vulkan renderer backend") + +target_compile_definitions( + mbgl-core + PUBLIC + MLN_RENDER_BACKEND_VULKAN=1 +) + +list(APPEND + INCLUDE_FILES + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/command_encoder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/context.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/descriptor_set.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/drawable_builder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/index_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/layer_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/offscreen_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/pipeline.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderer_backend.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/render_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/renderable_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/texture2d.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/tile_layer_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/uniform_buffer.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/upload_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_attribute.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/vulkan/vertex_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_group.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/shader_program.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/background.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/circle.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/clipping_mask.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/collision.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/common.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_geometry.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/custom_symbol_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/fill_extrusion.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/heatmap_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/hillshade_prepare.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/line.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/location_indicator.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/raster.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/symbol.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/vulkan/widevector.hpp +) + +list(APPEND + SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/command_encoder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/context.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/descriptor_set.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_builder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/drawable_impl.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/index_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/layer_group.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/offscreen_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/pipeline.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderer_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/render_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/renderable_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/texture2d.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/tile_layer_group.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/uniform_buffer.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/upload_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_attribute.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/vulkan/vertex_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/shader_program.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/background.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/circle.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/clipping_mask.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/collision.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_geometry.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/custom_symbol_icon.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/debug.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/fill_extrusion.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/heatmap_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/hillshade_prepare.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/line.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/location_indicator.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/raster.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/symbol.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/vulkan/widevector.cpp +) diff --git a/cmake/webgpu.cmake b/cmake/webgpu.cmake new file mode 100644 index 000000000..bdd8060c9 --- /dev/null +++ b/cmake/webgpu.cmake @@ -0,0 +1,121 @@ +if(NOT MLN_WITH_WEBGPU) + return() +endif() +message(STATUS "Configuring WebGPU renderer backend") + +target_compile_definitions( + mbgl-core + PUBLIC + MLN_RENDER_BACKEND_WEBGPU=1 +) + +list(APPEND + SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/headless_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/draw_scope_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/wgsl_preprocessor.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/background.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/circle.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/clipping_mask.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/collision.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_geometry.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/custom_symbol_icon.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/debug.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/fill_extrusion.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/heatmap_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/hillshade_prepare.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/line.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/location_indicator.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/raster.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/symbol.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/widevector.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_attribute.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/offscreen_texture.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/tile_layer_group.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/layer_group.cpp +) + +list(APPEND + INCLUDE_FILES + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/command_encoder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/context.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/drawable_builder.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/index_buffer_resource.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/render_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/renderer_backend.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/shader_program.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/background.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/circle.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/clipping_mask.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/collision.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/common.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_geometry.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/custom_symbol_icon.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/debug.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/fill_extrusion.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/heatmap_texture.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/hillshade_prepare.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/line.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/location_indicator.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/raster.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/symbol.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/shaders/webgpu/widevector.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/texture2d.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/uniform_buffer.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/upload_pass.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/webgpu/vertex_buffer_resource.hpp +) + +list(APPEND + SRC_FILES + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/command_encoder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/context.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/drawable_builder.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/index_buffer_resource.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/render_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/renderer_backend.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/shaders/webgpu/shader_program.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/texture2d.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/uniform_buffer.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/upload_pass.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/vertex_buffer_resource.cpp +) + +# Include WebGPU vendor configuration (Dawn or wgpu) +include(${PROJECT_SOURCE_DIR}/vendor/webgpu.cmake) + +# Include Dawn integration when requested +if(MLN_WEBGPU_IMPL_DAWN) + include(${PROJECT_SOURCE_DIR}/vendor/dawn.cmake) + if(TARGET mbgl-vendor-dawn) + target_link_libraries(mbgl-core PRIVATE mbgl-vendor-dawn) + endif() +elseif(MLN_WEBGPU_IMPL_WGPU) + # Include wgpu-native integration + include(${PROJECT_SOURCE_DIR}/vendor/wgpu.cmake) + if(TARGET mbgl-vendor-wgpu) + target_link_libraries(mbgl-core PRIVATE mbgl-vendor-wgpu) + # Add WebGPU-Cpp implementation file (required for wgpu-native backend) + list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mbgl/webgpu/webgpu_cpp_impl.cpp) + endif() +endif()