Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
143 lines
7.2 KiB
CMake
143 lines
7.2 KiB
CMake
if(NOT MLN_WITH_WEBGPU)
|
|
return()
|
|
endif()
|
|
message(STATUS "Configuring WebGPU renderer backend")
|
|
|
|
target_compile_definitions(
|
|
mbgl-core
|
|
PUBLIC
|
|
MLN_RENDER_BACKEND_WEBGPU=1
|
|
)
|
|
|
|
target_include_directories(
|
|
mbgl-core
|
|
PUBLIC
|
|
${PROJECT_SOURCE_DIR}/platform/default/include
|
|
)
|
|
|
|
list(APPEND
|
|
SRC_FILES
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/buffer_resource.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/context.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/command_encoder.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/renderer_backend.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable_builder.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/draw_scope_resource.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/dynamic_texture.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/uniform_buffer.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/shader_program.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/wgsl_preprocessor.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/background.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/circle.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/clipping_mask.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/collision.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/custom_geometry.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/custom_symbol_icon.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/debug.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/fill.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/fill_extrusion.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/heatmap.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/heatmap_texture.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/hillshade.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/hillshade_prepare.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/color_relief.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/line.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/location_indicator.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/raster.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/symbol.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/widevector.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/vertex_buffer_resource.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/vertex_attribute.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/texture2d.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/offscreen_texture.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/tile_layer_group.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/layer_group.cpp
|
|
)
|
|
|
|
list(APPEND
|
|
INCLUDE_FILES
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/buffer_resource.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/command_encoder.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/context.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/drawable.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/drawable_builder.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/dynamic_texture.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/index_buffer_resource.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/render_pass.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/renderer_backend.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/shader_program.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/background.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/circle.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/clipping_mask.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/collision.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/common.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/custom_geometry.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/custom_symbol_icon.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/debug.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/fill.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/fill_extrusion.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/heatmap.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/heatmap_texture.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/hillshade.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/hillshade_prepare.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/color_relief.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/line.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/location_indicator.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/raster.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/symbol.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/shaders/webgpu/widevector.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/texture2d.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/uniform_buffer.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/upload_pass.hpp
|
|
${PROJECT_SOURCE_DIR}/include/mln/webgpu/vertex_buffer_resource.hpp
|
|
)
|
|
|
|
list(APPEND
|
|
SRC_FILES
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/buffer_resource.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/command_encoder.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/context.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/drawable_builder.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/dynamic_texture.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/index_buffer_resource.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/render_pass.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/renderer_backend.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/shaders/webgpu/shader_program.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/texture2d.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/uniform_buffer.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/webgpu/upload_pass.cpp
|
|
${PROJECT_SOURCE_DIR}/src/mln/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)
|
|
if(MLN_WEBGPU_EMDAWN)
|
|
# Emdawn is a compiler/linker port rather than a conventional
|
|
# library. Consumers must inherit its final-link options.
|
|
target_link_libraries(mbgl-core PUBLIC mbgl-vendor-dawn)
|
|
else()
|
|
target_link_libraries(mbgl-core PRIVATE mbgl-vendor-dawn)
|
|
endif()
|
|
endif()
|
|
elseif(MLN_WEBGPU_IMPL_WGPU OR MLN_WEBGPU_IMPL_FFI)
|
|
# 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/mln/webgpu/webgpu_cpp_impl.cpp)
|
|
endif()
|
|
endif()
|
|
|
|
# Headless backend uses Dawn native / wgpu-native bootstrap; skip for emdawnwebgpu.
|
|
if(NOT MLN_WEBGPU_EMDAWN)
|
|
list(APPEND SRC_FILES ${PROJECT_SOURCE_DIR}/src/mln/webgpu/headless_backend.cpp)
|
|
endif()
|